From 21ec6be06673c06aeabdd740650c4905c7c6d864 Mon Sep 17 00:00:00 2001 From: Erin O'Connell Date: Sun, 29 Oct 2017 13:40:38 -0600 Subject: [PATCH 1/4] updated --dev flag to --all-dev --- pipenv/cli.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index d1a49650..06430b9b 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -1927,11 +1927,11 @@ def install( @click.option('--system', is_flag=True, default=False, help="System pip management.") @click.option('--verbose', is_flag=True, default=False, help="Verbose mode.") @click.option('--lock', is_flag=True, default=True, help="Lock afterwards.") -@click.option('--dev', '-d', is_flag=True, default=False, help="Un-install all package from [dev-packages].") +@click.option('--all-dev', is_flag=True, default=False, help="Un-install all package from [dev-packages].") @click.option('--all', is_flag=True, default=False, help="Purge all package(s) from virtualenv. Does not edit Pipfile.") def uninstall( package_name=False, more_packages=False, three=None, python=False, - system=False, lock=False, dev=False, all=False, verbose=False + system=False, lock=False, all_dev=False, all=False, verbose=False ): # Automatically use an activated virtualenv. @@ -1956,7 +1956,7 @@ def uninstall( sys.exit(0) # Uninstall [dev-packages], if --dev was provided. - if dev: + if all_dev: if 'dev-packages' not in project.parsed_pipfile: click.echo( crayons.normal('No {0} to uninstall.'.format( @@ -1973,7 +1973,7 @@ def uninstall( package_names = project.parsed_pipfile['dev-packages'] package_names = package_names.keys() - if package_name is False and not dev: + if package_name is False: click.echo(crayons.red('No package provided!'), err=True) sys.exit(1) From a262e283ff974107794223fdde0f65aea71681ab Mon Sep 17 00:00:00 2001 From: Erin O'Connell Date: Sun, 29 Oct 2017 13:44:06 -0600 Subject: [PATCH 2/4] Update cli.py fixed a small issue --- pipenv/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index 06430b9b..63299002 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -1973,7 +1973,7 @@ def uninstall( package_names = project.parsed_pipfile['dev-packages'] package_names = package_names.keys() - if package_name is False: + if package_name is False and not all_dev: click.echo(crayons.red('No package provided!'), err=True) sys.exit(1) From f5eca4d29c8dfde837c31ba0b09aeb9c8fa9f292 Mon Sep 17 00:00:00 2001 From: Erin O'Connell Date: Sun, 29 Oct 2017 13:57:53 -0600 Subject: [PATCH 3/4] updated docs with new uninstall option --- docs/basics.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/basics.rst b/docs/basics.rst index 5de332c7..e0736e8c 100644 --- a/docs/basics.rst +++ b/docs/basics.rst @@ -139,7 +139,7 @@ Create a Pipfile.lock from the installed versions: Install from that Pipfile.lock: $ pipenv install --ignore-pipfile - + .. _initialization: @@ -270,11 +270,14 @@ $ pipenv uninstall ////////////////// ``$ pipenv uninstall`` supports all of the parameters in `pipenv install <#pipenv-install>`_, -as well as one additonal, ``--all``. +as well as two additonal options, ``--all`` and ``--all-dev``. - ``--all`` — This parameter will purge all files from the virtual environment, but leave the Pipfile untouched. + - ``--all-dev`` — This parameter will remove all of the development packages from + the virtual environment, and remove them from the Pipfile. + .. _pipenv_lock: From 546f5494eb6f0687acedefad9045a4f01145be09 Mon Sep 17 00:00:00 2001 From: Erin O'Connell Date: Sun, 29 Oct 2017 14:04:48 -0600 Subject: [PATCH 4/4] added test for new uninstall --all-dev flag --- tests/test_pipenv.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_pipenv.py b/tests/test_pipenv.py index 1f9c3c91..c57e7466 100644 --- a/tests/test_pipenv.py +++ b/tests/test_pipenv.py @@ -271,6 +271,28 @@ class TestPipenv: assert 'tablib' in c.out assert 'tablib' not in p.pipfile['packages'] + @pytest.mark.run + @pytest.mark.uninstall + def test_uninstall_all_dev(self): + with PipenvInstance() as p: + c = p.pipenv('install --dev requests pytest') + assert c.return_code == 0 + assert 'requests' in p.pipfile['dev-packages'] + assert 'pytest' in p.pipfile['dev-packages'] + assert 'reqests' in p.lockfile['develop'] + assert 'pytest' in p.lockfile['develop'] + + + c = p.pipenv('uninstall --all-dev') + assert c.return_code == 0 + assert 'requests' not in p.pipfile['dev-packages'] + assert 'pytest' not in p.pipfile['dev-packages'] + assert 'reqests' not in p.lockfile['develop'] + assert 'pytest' not in p.lockfile['develop'] + + c = p.pipenv('run python -m requests.help') + assert c.return_code > 0 + @pytest.mark.extras @pytest.mark.install def test_extras_install(self):