From d88bf28c171663c32e8f6da5e6400ea0280c8e62 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Wed, 10 Jan 2018 08:44:15 -0500 Subject: [PATCH] shaping up Signed-off-by: Kenneth Reitz --- pipenvlib.py | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/pipenvlib.py b/pipenvlib.py index 8a76b0f..6dafb50 100644 --- a/pipenvlib.py +++ b/pipenvlib.py @@ -3,17 +3,36 @@ import os import toml import delegator - class Dependency(object): """A Dependency.""" + def __init__(self, name, constraint, locked=False): self.name = name self.constraint = constraint self.locked = locked + def __repr__(self): + return "".format( + self.name, self.constraint + ) + + +class Requirement(object): + """A Requirement.""" + + def __init__(self, name, constraint): + self.name = name + self.constraint = constraint + + def __repr__(self): + return "".format( + self.name, self.constraint + ) + class PipenvProject(object): """A Pipenv project.""" + def __init__(self, home, pipfile='Pipfile'): self.home = home self.pipfile = pipfile @@ -41,13 +60,27 @@ class PipenvProject(object): def lockfile_is_latest(self): pass + def _get_section_of_pipfile(self, section, target): + def gen(): + pipfile = toml.load(self._pipfile_path) + for package in pipfile[section]: + name = package + constraint = pipfile[section][package] + yield target(name, constraint) + + return [p for p in gen()] + @property def packages(self): - pass + return self._get_section_of_pipfile('packages', Dependency) @property def dev_packages(self): - pass + return self._get_section_of_pipfile('dev-packages', Dependency) + + @property + def requires(self): + return self._get_section_of_pipfile('requires', Requirement) @property def locked_packages(self):