diff --git a/pipenvlib.py b/pipenvlib.py index b5b2ba2..9d08afb 100644 --- a/pipenvlib.py +++ b/pipenvlib.py @@ -1,8 +1,10 @@ import os +import json import toml import delegator + class Dependency(object): """A Dependency.""" @@ -17,6 +19,18 @@ class Dependency(object): ) +class LockedDependency(object): + """A Locked Dependency""" + def __init__(self, name, constraint, hashes): + self.name = name + self.constraint = constraint + self.hashes = hashes + + def __repr__(self): + return "".format( + self.name, self.constraint + ) + class Requirement(object): """A Requirement.""" @@ -72,23 +86,49 @@ class PipenvProject(object): @property def packages(self): + """Returns a list of Dependency objects (for [packages]) for + the Pipenv project. + """ return self._get_section_of_pipfile('packages', Dependency) @property def dev_packages(self): + """Returns a list of Dependency objects (for [dev-packages]) for + the Pipenv project. + """ return self._get_section_of_pipfile('dev-packages', Dependency) @property def requires(self): + """Returns a list of Requirement objects for the Pipenv project. + """ return self._get_section_of_pipfile('requires', Requirement) @property def locked_packages(self): - pass + """Returns a list of LockedDependency objects for the Pipenv + project. + """ + self.assert_has_lockfile() + + def gen(): + with open(self._lockfile_path) as f: + lockfile = json.load(f) + + for package in lockfile['default']: + name = package + constraint = lockfile['default'][package]['version'] + hashes = lockfile['default'][package]['hashes'] + + yield LockedDependency(name, constraint, hashes) + + return [l for l in gen()] + @property def locked_dev_packages(self): - pass + self.assert_has_lockfile() + def _assert_pipenv_is_installed(self): pass @@ -116,6 +156,7 @@ class PipenvProject(object): @property def virtualenv_location(self): + # return self._ pass # @property