mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Merge branch 'master' into windows-run-non-executable
This commit is contained in:
@@ -329,6 +329,7 @@ You should do this for your shell too, in your ``~/.profile`` or ``~/.bashrc`` o
|
||||
|
||||
.. note:: The shell launched in interactive mode. This means that if your shell reads its configuration from a specific file for interactive mode (e.g. bash by default looks for a ``~/.bashrc`` configuration file for interactive mode), then you'll need to modify (or create) this file.
|
||||
|
||||
If you experience issues with ``$ pipenv shell``, just check the ``PIPENV_SHELL`` environment variable, which ``$ pipenv shell`` will use if available. For detail, see :ref:`configuration-with-environment-variables`.
|
||||
|
||||
☤ A Note about VCS Dependencies
|
||||
-------------------------------
|
||||
@@ -365,3 +366,4 @@ production environments for reproducible builds.
|
||||
This will include all hashes, however (which is great!). To get a ``requirements.txt``
|
||||
without hashes, use ``$ pipenv run pip freeze``.
|
||||
|
||||
.. _configuration-with-environment-variables:https://docs.pipenv.org/advanced/#configuration-with-environment-variables
|
||||
|
||||
@@ -7,7 +7,7 @@ docutils==0.14
|
||||
first==2.0.1
|
||||
idna==2.6
|
||||
imagesize==0.7.1
|
||||
Jinja2==2.9.6
|
||||
Jinja2==2.10
|
||||
MarkupSafe==1.0
|
||||
pbr==3.1.1
|
||||
pip-tools==1.9.0
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Added additional information about troubleshooting ``pipenv shell`` by using the the ``$PIPENV_SHELL`` environment variable.
|
||||
@@ -0,0 +1 @@
|
||||
Correctly pass `verbose` and `debug` flags to the resolver subprocess so it generates appropriate output. This also resolves a bug introduced by the fix to #2527.
|
||||
+8
-4
@@ -550,15 +550,19 @@ def ensure_project(
|
||||
):
|
||||
click.echo(
|
||||
"{0}: Your Pipfile requires {1} {2}, "
|
||||
"but you are using {3} ({4}). Running"
|
||||
"{5} and rebuilding the virtual environment"
|
||||
"may resolve the issue".format(
|
||||
"but you are using {3} ({4}).".format(
|
||||
crayons.red("Warning", bold=True),
|
||||
crayons.normal("python_version", bold=True),
|
||||
crayons.blue(project.required_python_version),
|
||||
crayons.blue(python_version(path_to_python)),
|
||||
crayons.green(shorten_path(path_to_python)),
|
||||
crayons.green("`pipenv --rm`"),
|
||||
),
|
||||
err=True,
|
||||
)
|
||||
click.echo(
|
||||
" {0} and rebuilding the virtual environment "
|
||||
"may resolve the issue.".format(
|
||||
crayons.green("$ pipenv --rm"),
|
||||
),
|
||||
err=True,
|
||||
)
|
||||
|
||||
@@ -95,7 +95,7 @@ PIPENV_MAX_RETRIES = int(os.environ.get(
|
||||
))
|
||||
"""Specify how many retries Pipenv should attempt for network requests.
|
||||
|
||||
Default is 0. Aautomatically set to 1 on CI environments for robust testing.
|
||||
Default is 0. Automatically set to 1 on CI environments for robust testing.
|
||||
"""
|
||||
|
||||
PIPENV_MAX_ROUNDS = int(os.environ.get("PIPENV_MAX_ROUNDS", "16"))
|
||||
|
||||
+10
-3
@@ -22,6 +22,7 @@ def which(*args, **kwargs):
|
||||
def main():
|
||||
do_pre = "--pre" in " ".join(sys.argv)
|
||||
do_clear = "--clear" in " ".join(sys.argv)
|
||||
is_verbose = "--verbose" in " ".join(sys.argv)
|
||||
is_debug = "--debug" in " ".join(sys.argv)
|
||||
system = "--system" in " ".join(sys.argv)
|
||||
new_sys_argv = []
|
||||
@@ -35,11 +36,17 @@ def main():
|
||||
|
||||
os.environ["PIP_PYTHON_VERSION"] = ".".join([str(s) for s in sys.version_info[:3]])
|
||||
os.environ["PIP_PYTHON_PATH"] = sys.executable
|
||||
if int(os.environ.get("PIPENV_VERBOSITY", 0)) > 0:
|
||||
logging.getLogger("notpip").setLevel(logging.INFO)
|
||||
|
||||
verbosity = int(os.environ.get("PIPENV_VERBOSITY", 0))
|
||||
if is_debug:
|
||||
# Shit's getting real at this point.
|
||||
verbosity = max(verbosity, 2)
|
||||
elif is_verbose:
|
||||
verbosity = max(verbosity, 1)
|
||||
if verbosity > 1: # Shit's getting real at this point.
|
||||
logging.getLogger("notpip").setLevel(logging.DEBUG)
|
||||
elif verbosity > 0:
|
||||
logging.getLogger("notpip").setLevel(logging.INFO)
|
||||
|
||||
if "PIPENV_PACKAGES" in os.environ:
|
||||
packages = os.environ["PIPENV_PACKAGES"].strip().split("\n")
|
||||
else:
|
||||
|
||||
+2
-2
@@ -352,11 +352,10 @@ def venv_resolve_deps(
|
||||
if not deps:
|
||||
return []
|
||||
resolver = escape_grouped_arguments(resolver.__file__.rstrip("co"))
|
||||
cmd = "{0} {1} {2} {3} {4} {5}".format(
|
||||
cmd = "{0} {1} {2} {3} {4}".format(
|
||||
escape_grouped_arguments(which("python", allow_global=allow_global)),
|
||||
resolver,
|
||||
"--pre" if pre else "",
|
||||
"--verbose" if (environments.is_verbose()) else "",
|
||||
"--clear" if clear else "",
|
||||
"--system" if allow_global else "",
|
||||
)
|
||||
@@ -364,6 +363,7 @@ def venv_resolve_deps(
|
||||
os.environ["PIPENV_PACKAGES"] = "\n".join(deps)
|
||||
if pypi_mirror:
|
||||
os.environ["PIPENV_PYPI_MIRROR"] = str(pypi_mirror)
|
||||
os.environ["PIPENV_VERBOSITY"] = str(environments.PIPENV_VERBOSITY)
|
||||
c = delegator.run(cmd, block=True)
|
||||
try:
|
||||
assert c.return_code == 0
|
||||
|
||||
@@ -57,6 +57,66 @@ zip_safe=False
|
||||
assert "six" in p.lockfile["default"]
|
||||
|
||||
|
||||
@pytest.mark.install
|
||||
@pytest.mark.local
|
||||
@pytest.mark.needs_internet
|
||||
@flaky
|
||||
class TestDependencyLinks(object):
|
||||
"""Ensure dependency_links are parsed and installed.
|
||||
|
||||
This is needed for private repo dependencies.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def helper_dependency_links_install_make_setup(pipenv_instance, deplink):
|
||||
setup_py = os.path.join(pipenv_instance.path, "setup.py")
|
||||
with open(setup_py, "w") as fh:
|
||||
contents = """
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='testdeplinks',
|
||||
version='0.1',
|
||||
packages=[],
|
||||
install_requires=[
|
||||
'test-private-dependency'
|
||||
],
|
||||
dependency_links=[
|
||||
'{0}'
|
||||
]
|
||||
)
|
||||
""".strip().format(deplink)
|
||||
fh.write(contents)
|
||||
|
||||
@staticmethod
|
||||
def helper_dependency_links_install_test(pipenv_instance, deplink):
|
||||
TestDependencyLinks.helper_dependency_links_install_make_setup(pipenv_instance, deplink)
|
||||
c = pipenv_instance.pipenv("install -v -e .")
|
||||
assert c.return_code == 0
|
||||
assert "test-private-dependency" in pipenv_instance.lockfile["default"]
|
||||
assert "version" in pipenv_instance.lockfile["default"]["test-private-dependency"]
|
||||
assert "0.1" in pipenv_instance.lockfile["default"]["test-private-dependency"]["version"]
|
||||
|
||||
def test_https_dependency_links_install(self, PipenvInstance, pypi):
|
||||
"""Ensure dependency_links are parsed and installed (needed for private repo dependencies).
|
||||
"""
|
||||
with temp_environ(), PipenvInstance(pypi=pypi, chdir=True) as p:
|
||||
os.environ['PIP_PROCESS_DEPENDENCY_LINKS'] = '1'
|
||||
TestDependencyLinks.helper_dependency_links_install_test(
|
||||
p,
|
||||
'git+https://github.com/atzannes/test-private-dependency@v0.1#egg=test-private-dependency-v0.1'
|
||||
)
|
||||
|
||||
@pytest.mark.needs_github_ssh
|
||||
def test_ssh_dependency_links_install(self, PipenvInstance, pypi):
|
||||
with temp_environ(), PipenvInstance(pypi=pypi, chdir=True) as p:
|
||||
os.environ['PIP_PROCESS_DEPENDENCY_LINKS'] = '1'
|
||||
TestDependencyLinks.helper_dependency_links_install_test(
|
||||
p,
|
||||
'git+ssh://git@github.com/atzannes/test-private-dependency@v0.1#egg=test-private-dependency-v0.1'
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.e
|
||||
@pytest.mark.install
|
||||
@pytest.mark.skip(reason="this doesn't work on windows")
|
||||
|
||||
Reference in New Issue
Block a user