-
-
Save tony/03e08da95b3c2217a4d64bade4feebe0 to your computer and use it in GitHub Desktop.
Formatting, check for errors for git packages
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import json | |
import toml | |
def read_pipenv_lock(): | |
with open('Pipfile.lock') as lock: | |
return json.loads(lock.read()) | |
def read_pipenv(): | |
with open('Pipfile') as pipfile: | |
return toml.loads(pipfile.read()) | |
def convert_version(version): | |
return version.replace('==', '^') | |
def to_name_version_notation(pipfile, lock, section): | |
category = 'packages' if section == 'default' else 'dev-packages' | |
notations = {} | |
dependencies = lock[section] | |
for dep in dependencies: | |
if dep not in pipfile[category]: | |
continue | |
try: | |
notations.update({dep: convert_version(dependencies[dep]['version'])}) | |
except KeyError as e: | |
errors.append(f'{dep} - ({e.__class__.__name__}) {e} - {dependencies[dep]}') | |
return notations | |
if __name__ == '__main__': | |
errors = [] | |
pipfile = read_pipenv() | |
lock = read_pipenv_lock() | |
for section in ['default', 'develop']: | |
print('Section:', section) | |
current = to_name_version_notation(pipfile, lock, section) | |
for dep, version in current.items(): | |
print(dep, '=', '"' + version + '"') | |
print() | |
if len(errors): | |
print('errors encountered:') | |
for error in errors: | |
print(f'- {error}') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment