mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Merge branch 'master' into patch-2
This commit is contained in:
@@ -0,0 +1 @@
|
||||
Added support for ``--verbose`` output to ``pipenv run``.
|
||||
@@ -0,0 +1 @@
|
||||
Fix a bug that ``--site-packages`` flag is not recognized.
|
||||
@@ -0,0 +1 @@
|
||||
The inline tables won't be rewritten now.
|
||||
@@ -70,7 +70,6 @@ def cli(
|
||||
python=False,
|
||||
help=False,
|
||||
py=False,
|
||||
site_packages=False,
|
||||
envs=False,
|
||||
man=False,
|
||||
completion=False,
|
||||
@@ -198,7 +197,7 @@ def cli(
|
||||
)
|
||||
ctx.abort()
|
||||
# --two / --three was passed…
|
||||
if (state.python or state.three is not None) or site_packages:
|
||||
if (state.python or state.three is not None) or state.site_packages:
|
||||
ensure_project(
|
||||
three=state.three,
|
||||
python=state.python,
|
||||
|
||||
@@ -2303,6 +2303,9 @@ def do_run(command, args, three=None, python=False, pypi_mirror=None):
|
||||
inline_activate_virtual_environment()
|
||||
try:
|
||||
script = project.build_script(command, args)
|
||||
cmd_string = ' '.join([script.command] + script.args)
|
||||
if environments.is_verbose():
|
||||
click.echo(crayons.normal("$ {0}".format(cmd_string)), err=True)
|
||||
except ScriptEmptyError:
|
||||
click.echo("Can't run script {0!r}-it's empty?", err=True)
|
||||
if os.name == "nt":
|
||||
|
||||
+24
-11
@@ -83,19 +83,32 @@ def cleanup_toml(tml):
|
||||
|
||||
def convert_toml_outline_tables(parsed):
|
||||
"""Converts all outline tables to inline tables."""
|
||||
if isinstance(parsed, tomlkit.container.Container):
|
||||
empty_inline_table = tomlkit.inline_table
|
||||
else:
|
||||
empty_inline_table = toml.TomlDecoder().get_empty_inline_table
|
||||
def convert_tomlkit_table(section):
|
||||
for key, value in section._body:
|
||||
if not key:
|
||||
continue
|
||||
if hasattr(value, "keys") and not isinstance(value, tomlkit.items.InlineTable):
|
||||
table = tomlkit.inline_table()
|
||||
table.update(value.value)
|
||||
section[key.key] = table
|
||||
|
||||
def convert_toml_table(section):
|
||||
for package, value in section.items():
|
||||
if hasattr(value, "keys") and not isinstance(value, toml.decoder.InlineTableDict):
|
||||
table = toml.TomlDecoder().get_empty_inline_table()
|
||||
table.update(value)
|
||||
section[package] = table
|
||||
|
||||
is_tomlkit_parsed = isinstance(parsed, tomlkit.container.Container)
|
||||
for section in ("packages", "dev-packages"):
|
||||
table_data = parsed.get(section, {})
|
||||
for package, value in table_data.items():
|
||||
if hasattr(value, "keys") and not isinstance(
|
||||
value, (tomlkit.items.InlineTable, toml.decoder.InlineTableDict)
|
||||
):
|
||||
table = empty_inline_table()
|
||||
table.update(value)
|
||||
table_data[package] = table
|
||||
if not table_data:
|
||||
continue
|
||||
if is_tomlkit_parsed:
|
||||
convert_tomlkit_table(table_data)
|
||||
else:
|
||||
convert_toml_table(table_data)
|
||||
|
||||
return parsed
|
||||
|
||||
|
||||
|
||||
@@ -41,6 +41,20 @@ def test_pipenv_py(PipenvInstance):
|
||||
assert os.path.basename(python).startswith('python')
|
||||
|
||||
|
||||
@pytest.mark.cli
|
||||
def test_pipenv_site_packages(PipenvInstance):
|
||||
with PipenvInstance() as p:
|
||||
c = p.pipenv('--python python --site-packages')
|
||||
assert c.return_code == 0
|
||||
assert 'Making site-packages available' in c.err
|
||||
|
||||
# no-global-site-packages.txt under stdlib dir should not exist.
|
||||
c = p.pipenv('run python -c "import sysconfig; print(sysconfig.get_path(\'stdlib\'))"')
|
||||
assert c.return_code == 0
|
||||
stdlib_path = c.out.strip()
|
||||
assert not os.path.isfile(os.path.join(stdlib_path, 'no-global-site-packages.txt'))
|
||||
|
||||
|
||||
@pytest.mark.cli
|
||||
def test_pipenv_support(PipenvInstance):
|
||||
with PipenvInstance() as p:
|
||||
|
||||
@@ -446,3 +446,25 @@ def test_install_package_with_dots(PipenvInstance, pypi):
|
||||
c = p.pipenv("install backports.html")
|
||||
assert c.ok
|
||||
assert "backports.html" in p.pipfile["packages"]
|
||||
|
||||
|
||||
@pytest.mark.install
|
||||
def test_rewrite_outline_table(PipenvInstance, pypi):
|
||||
with PipenvInstance(pypi=pypi, chdir=True) as p:
|
||||
with open(p.pipfile_path, 'w') as f:
|
||||
contents = """
|
||||
[packages]
|
||||
six = {version = "*", editable = true}
|
||||
|
||||
[packages.requests]
|
||||
version = "*"
|
||||
""".strip()
|
||||
f.write(contents)
|
||||
c = p.pipenv("install -e click")
|
||||
assert c.return_code == 0
|
||||
with open(p.pipfile_path) as f:
|
||||
contents = f.read()
|
||||
assert "[packages.requests]" not in contents
|
||||
assert 'six = {version = "*", editable = true}' in contents
|
||||
assert 'requests = {version = "*"}' in contents
|
||||
assert 'click = {' in contents
|
||||
|
||||
@@ -148,24 +148,6 @@ six = {{version = "*", index = "pypi"}}
|
||||
assert c.return_code == 0
|
||||
|
||||
|
||||
@pytest.mark.install
|
||||
@pytest.mark.project
|
||||
def test_rewrite_outline_table(PipenvInstance, pypi):
|
||||
with PipenvInstance(pypi=pypi, chdir=True) as p:
|
||||
with open(p.pipfile_path, 'w') as f:
|
||||
contents = """
|
||||
[packages.requests]
|
||||
version = "*"
|
||||
""".strip()
|
||||
f.write(contents)
|
||||
c = p.pipenv('install click')
|
||||
assert c.return_code == 0
|
||||
with open(p.pipfile_path) as f:
|
||||
contents = f.read()
|
||||
assert "[packages.requests]" not in contents
|
||||
assert 'requests = {version = "*"}' in contents
|
||||
|
||||
|
||||
@pytest.mark.install
|
||||
@pytest.mark.project
|
||||
def test_include_editable_packages(PipenvInstance, pypi, testsroot, pathlib_tmpdir):
|
||||
@@ -185,6 +167,7 @@ def test_include_editable_packages(PipenvInstance, pypi, testsroot, pathlib_tmpd
|
||||
|
||||
|
||||
@pytest.mark.project
|
||||
@pytest.mark.virtualenv
|
||||
def test_run_in_virtualenv(PipenvInstance, pypi, virtualenv):
|
||||
with PipenvInstance(chdir=True, pypi=pypi) as p:
|
||||
os.environ.pop("PIPENV_IGNORE_VIRTUALENVS", None)
|
||||
|
||||
Reference in New Issue
Block a user