support for editable

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>
This commit is contained in:
2018-03-02 12:42:56 -05:00
parent ecf78424c1
commit ffdd523842
3 changed files with 36 additions and 15 deletions
+2 -2
View File
@@ -29,7 +29,7 @@ def check_requires_python(requires_python):
return True
requires_python_specifier = specifiers.SpecifierSet(requires_python)
# We only use major.minor.micro
python_version = version.parse(os.environ['PIP_PYTHON_VERSION'])
python_version = version.parse('{0}.{1}.{2}'.format(*sys.version_info[:3]))
return python_version in requires_python_specifier
@@ -53,7 +53,7 @@ def check_dist_requires_python(dist):
"%s requires Python '%s' but the running Python is %s" % (
dist.project_name,
requires_python,
os.environ['PIP_PYTHON_VERSION']
'{0}.{1}.{2}'.format(*sys.version_info[:3])
)
)
except specifiers.InvalidSpecifier as e:
+29 -12
View File
@@ -1,6 +1,7 @@
"""Pipenv Resolveer.
Usage:
resolver.py
resolver.py <packages>... [--verbose] [--pre] [--clear]
resolver.py (-h | --help)
resolver.py --version
@@ -17,34 +18,50 @@ import os
import sys
import json
os.environ['PIP_PYTHON_PATH'] = sys.executable
for _dir in ('vendor', 'patched', '..'):
dirpath = os.path.sep.join([os.path.dirname(__file__), _dir])
sys.path.insert(0, dirpath)
import pipenv.project
import pipenv.utils
import pipenv.core
from pipenv.utils import *
from docopt import docopt
args = docopt(__doc__)
is_verbose = args['--verbose']
do_pre = args['--pre']
do_clear = args['--clear']
packages = args['<packages>']
def cleanup_sysargv(argv):
project = pipenv.core.project
new = []
for arg in argv.copy():
if arg.startswith('-e '):
new.append(arg)
del argv[argv.index(arg)]
os.environ['PIP_PYTHON_PATH'] = sys.executable
return argv[1:], new
def which(*args, **kwargs):
return sys.executable
def resolve(packages, pre=do_pre, sources=project.sources, verbose=is_verbose, clear=do_clear):
def resolve(packages, pre, sources, verbose, clear):
return pipenv.utils.resolve_deps(packages, which, project=project, pre=pre, sources=sources, clear=clear, verbose=verbose)
if __name__ == '__main__':
results = resolve(packages)
argv, new_packages = cleanup_sysargv(sys.argv)
from docopt import docopt
args = docopt(__doc__, argv=argv)
is_verbose = args['--verbose']
do_pre = args['--pre']
do_clear = args['--clear']
packages = args['<packages>']
for package in new_packages:
packages.append(package)
project = pipenv.core.project
results = resolve(packages, pre=do_pre, sources=project.sources, verbose=is_verbose, clear=do_clear)
print('XYZZY')
if results:
print(json.dumps(results))
+5 -1
View File
@@ -342,13 +342,17 @@ def venv_resolve_deps(deps, which, project, pre=False, verbose=False, clear=Fals
import json
resolver = shellquote(resolver.__file__.rstrip('co'))
cmd = '{0} {1} {2} {3} {4}'.format(which('python'), resolver, " ".join(deps), '--pre' if pre else '', '--verbose' if verbose else '')
cmd = '{0} {1} {2} {3} {4}'.format(which('python'), resolver, " ".join([shellquote(dep) for dep in deps]), '--pre' if pre else '', '--verbose' if verbose else '')
# print(cmd)
c = delegator.run(cmd, block=True)
print(c.out)
try:
assert c.return_code == 0
except AssertionError:
print(c.err)
return []
if verbose: