Skip to content

Commit

Permalink
update check_requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
glenn-jocher committed Apr 11, 2021
1 parent 359001f commit 1a74600
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 25 deletions.
2 changes: 1 addition & 1 deletion utils/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ def __init__(self, sources='streams.txt', img_size=640, stride=32):
print(f'{i + 1}/{n}: {s}... ', end='')
url = eval(s) if s.isnumeric() else s
if 'youtube.com/' in url or 'youtu.be/' in url: # if source is YouTube video
check_requirements(file=None, include=('pafy', 'youtube_dl'))
check_requirements(('pafy', 'youtube_dl'))
import pafy
url = pafy.new(url).getbest(preftype="mp4").url
cap = cv2.VideoCapture(url)
Expand Down
35 changes: 11 additions & 24 deletions utils/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,31 +91,21 @@ def check_git_status():
print(e)


def check_requirements(file='requirements.txt', exclude=(), include=()):
# Check installed dependencies meet requirements
def check_requirements(requirements='requirements.txt', exclude=()):
# Check installed dependencies meet requirements (pass *.txt file or list of packages)
import pkg_resources as pkg
prefix = colorstr('red', 'bold', 'requirements:')

if file is None:
if len(include) == 0:
print('No file or packages included, check failed.')
return
else:
iter_packages = pkg.parse_requirements(include)
else:
file = Path(file)
if not file.exists() and len(include) == 0:
if isinstance(requirements, (str, Path)): # requirements.txt file
file = Path(requirements)
if not file.exists():
print(f"{prefix} {file.resolve()} not found, check failed.")
return
elif file.exists() and len(include) == 0:
iter_packages = pkg.parse_requirements(file.open())
elif not file.exists and len(include) > 0:
iter_packages = pkg.parse_requirements(include)
else:
iter_packages = zip(pkg.parse_requirements(include), pkg.parse_requirements(file.open()))
requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(file.open()) if x.name not in exclude]
else: # list or tuple of packages
requirements = [x for x in requirements if x not in exclude]

n = 0 # number of packages updates
requirements = [f'{x.name}{x.specifier}' for x in iter_packages if x.name not in exclude]
for r in requirements:
try:
pkg.require(r)
Expand All @@ -125,12 +115,9 @@ def check_requirements(file='requirements.txt', exclude=(), include=()):
print(subprocess.check_output(f"pip install '{e.req}'", shell=True).decode())

if n: # if packages updated
if file is not None:
s = f"{prefix} {n} package{'s' * (n > 1)} updated per {file.resolve()}\n"
else:
s = f"{prefix} {n} package{'s' * (n > 1)} updated per include\n"

s += f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n"
source = file.resolve() if 'file' in locals() else requirements
s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \
f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n"
print(emojis(s)) # emoji-safe


Expand Down

0 comments on commit 1a74600

Please sign in to comment.