From e4d2c1009c5c6805ab161de43e647a3173b06dbc Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Wed, 10 Jan 2018 09:26:12 -0500 Subject: [PATCH] locked requirements Signed-off-by: Kenneth Reitz --- pipenvlib.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/pipenvlib.py b/pipenvlib.py index 9d08afb..42bc83f 100644 --- a/pipenvlib.py +++ b/pipenvlib.py @@ -124,11 +124,44 @@ class PipenvProject(object): return [l for l in gen()] - @property def locked_dev_packages(self): + """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['develop']: + name = package + constraint = lockfile['develop'][package]['version'] + hashes = lockfile['develop'][package]['hashes'] + + yield LockedDependency(name, constraint, hashes) + + return [l for l in gen()] + + @property + def locked_requirements(self): + """Returns a list of Requirement objects for the Pipenv + project, from the Pipfile.lock. + """ + self.assert_has_lockfile() + + def gen(): + with open(self._lockfile_path) as f: + lockfile = json.load(f) + + for require in lockfile['_meta']['requires']: + name = require + constraint = lockfile['_meta']['requires'][require] + + yield Requirement(name, constraint) + + return [l for l in gen()] def _assert_pipenv_is_installed(self): pass