Guest User

Untitled

a guest
Feb 18th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #!/bin/python3
  2. """
  3. Small utility to upgrade all packages in a requirements.txt file in the current directory to the latest version as determined by a CLI call to `pip show {package}`.
  4. """
  5.  
  6. import sys
  7. import re
  8. import subprocess
  9.  
  10. filename = 'requirements.txt'
  11.  
  12. try:
  13. requirement_file = open(filename, 'r')
  14. except:
  15. print(f"No '{filename}' found here.")
  16. sys.exit(1)
  17.  
  18. requirements = dict()
  19. for line in requirement_file.readlines():
  20. parts = line.split("==")
  21. requirements[parts[0].strip()] = parts[
  22. 1].strip() if len(parts) > 1 else None
  23.  
  24. requirements_fixed = dict()
  25. print("Collecting newest pip package versions...")
  26. for package, version in requirements.items():
  27. process = subprocess.Popen(
  28. ["pip", "show", package],
  29. stdin=subprocess.PIPE,
  30. stdout=subprocess.PIPE,
  31. stderr=sys.stderr)
  32. output = str(process.stdout.read())
  33. pattern = r'Name: (.*)\\nVersion: ([0-9a-zA-Z.]+)'
  34. groups = re.search(pattern, output).groups()
  35. requirements_fixed[groups[0]] = groups[1]
  36. print(f"{groups[0]}=={groups[1]}")
  37.  
  38. assert len(requirements) == len(requirements_fixed)
  39.  
  40. handle = open(filename, 'w')
  41. handle.writelines([f"{p}=={v}\n" for p, v in requirements_fixed.items()])
  42. print(f"Updated {len(requirements_fixed)} packages in {filename}")
Add Comment
Please, Sign In to add comment