From 3c0770fb7a6ec2c47935cdc5681a1a034dbd1a7d Mon Sep 17 00:00:00 2001 From: frostming Date: Wed, 28 Mar 2018 17:43:53 +0800 Subject: [PATCH] Fix tests failures --- pipenv/core.py | 9 ++++----- pipenv/project.py | 34 ++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/pipenv/core.py b/pipenv/core.py index fb045b53..1f43a232 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -2036,11 +2036,10 @@ def do_uninstall( c = delegator.run(cmd) click.echo(crayons.blue(c.out)) if pipfile_remove: - norm_name = pep423_name(package_name) - in_dev_packages = ( - norm_name in project._pipfile.get('dev-packages', {}) - ) - in_packages = (norm_name in project._pipfile.get('packages', {})) + in_packages = project.get_package_name_in_pipfile( + package_name, dev=False) + in_dev_packages = project.get_package_name_in_pipfile( + package_name, dev=True) if not in_dev_packages and not in_packages: click.echo( 'No package {0} to remove from Pipfile.'.format( diff --git a/pipenv/project.py b/pipenv/project.py index 361cd6a6..595f0b93 100644 --- a/pipenv/project.py +++ b/pipenv/project.py @@ -591,17 +591,23 @@ class Project(object): except OSError: pass + def get_package_name_in_pipfile(self, package_name, dev=False): + """Get the equivalent package name in pipfile""" + key = 'dev-packages' if dev else 'packages' + section = self.parsed_pipfile.get(key, {}) + for name in section.keys(): + if pep423_name(name) == pep423_name(package_name): + return name + return None + def remove_package_from_pipfile(self, package_name, dev=False): # Read and append Pipfile. - p = self.parsed_pipfile - package_name = pep423_name(package_name) + name = self.get_package_name_in_pipfile(package_name, dev) key = 'dev-packages' if dev else 'packages' - if key in p: - for name in dict(p[key]): - if pep423_name(name) == package_name: - del p[key][name] - # Write Pipfile. - return self.write_toml(p) + p = self.parsed_pipfile + if name: + del p[key][name] + self.write_toml(p) def add_package_to_pipfile(self, package_name, dev=False): # Read and append Pipfile. @@ -619,14 +625,10 @@ class Project(object): p[key] = {} package = convert_deps_from_pip(package_name) package_name = [k for k in package.keys()][0] - for name in dict(p[key]): - # Normalize names to compare - if ( - pep423_name(name) == pep423_name(package_name) and - name != package_name - ): - # Replace the package name - del p[key][name] + name = self.get_package_name_in_pipfile(package_name, dev) + if name and name != package_name: + # Replace the packge name + del p[key][name] # Add the package to the group. p[key][package_name] = package[package_name] # Write Pipfile.