From e5ea0ed3bae4734e4e6e3868157a1dde0d7ca3cf Mon Sep 17 00:00:00 2001 From: Max Krivich Date: Wed, 20 Jun 2018 13:17:13 +0300 Subject: [PATCH 1/5] Fix cli option usage error Fix IndexError exception when `more_packages` is empty and add the more informal message for argument usage. To reproduce this issue `pipenv install -e` --- pipenv/core.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipenv/core.py b/pipenv/core.py index be67c8f5e0..faa548075f 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1889,6 +1889,8 @@ def do_install( # Capture -e argument and assign it to following package_name. more_packages = list(more_packages) if package_name == '-e': + if not more_packages: + raise click.BadArgumentUsage('Please provide path to setup.py') package_name = ' '.join([package_name, more_packages.pop(0)]) # capture indexes and extra indexes line = [package_name] + more_packages From 40612f2c04a8d5966bf3db2ef1e4fdcfe0247bb5 Mon Sep 17 00:00:00 2001 From: Max Krivich Date: Wed, 20 Jun 2018 13:51:03 +0300 Subject: [PATCH 2/5] Fix empty indexes in cli param Add extra check for -i option for fix `AttributeError: 'NoneType'` To reproduce this bug `pipenv install -i` --- pipenv/core.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipenv/core.py b/pipenv/core.py index faa548075f..d98ca6e4e1 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1897,6 +1897,8 @@ def do_install( index_indicators = ['-i', '--index', '--extra-index-url'] index, extra_indexes = None, None if more_packages and any(more_packages[0].startswith(s) for s in index_indicators): + if len(more_packages) < 2: + raise click.BadArgumentUsage('Please provide index value') line, index = split_argument(' '.join(line), short='i', long_='index', num=1) line, extra_indexes = split_argument(line, long_='extra-index-url') package_names = line.split() From d72f668964618616825ff005399673660e3488a3 Mon Sep 17 00:00:00 2001 From: Max Krivich Date: Wed, 20 Jun 2018 16:43:24 +0300 Subject: [PATCH 3/5] Change exception message --- pipenv/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipenv/core.py b/pipenv/core.py index d98ca6e4e1..3f8cdc1724 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1890,7 +1890,7 @@ def do_install( more_packages = list(more_packages) if package_name == '-e': if not more_packages: - raise click.BadArgumentUsage('Please provide path to setup.py') + raise click.BadArgumentUsage('Please provide path to editable package') package_name = ' '.join([package_name, more_packages.pop(0)]) # capture indexes and extra indexes line = [package_name] + more_packages From 597fabdac030b9e1b55428e23d5a945b5ce31cd7 Mon Sep 17 00:00:00 2001 From: Max Krivich Date: Wed, 20 Jun 2018 17:54:20 +0300 Subject: [PATCH 4/5] Update too complex if statement Quick refactor for improve readability of code --- pipenv/core.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pipenv/core.py b/pipenv/core.py index 3f8cdc1724..0dcc7ed237 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1893,13 +1893,14 @@ def do_install( raise click.BadArgumentUsage('Please provide path to editable package') package_name = ' '.join([package_name, more_packages.pop(0)]) # capture indexes and extra indexes - line = [package_name] + more_packages + line = ' '.join([package_name] + more_packages).strip() index_indicators = ['-i', '--index', '--extra-index-url'] index, extra_indexes = None, None - if more_packages and any(more_packages[0].startswith(s) for s in index_indicators): - if len(more_packages) < 2: - raise click.BadArgumentUsage('Please provide index value') - line, index = split_argument(' '.join(line), short='i', long_='index', num=1) + if any(line.endswith(s) for s in index_indicators): + # check if cli option is not end of command + raise click.BadArgumentUsage('Please provide index value') + if any(s in line for s in index_indicators): + line, index = split_argument(line, short='i', long_='index', num=1) line, extra_indexes = split_argument(line, long_='extra-index-url') package_names = line.split() package_name = package_names[0] From 7516ead5a8abe489e2ebc6b6b4bcc095c2764451 Mon Sep 17 00:00:00 2001 From: Max Krivich Date: Wed, 20 Jun 2018 18:24:36 +0300 Subject: [PATCH 5/5] Fix CI errors --- pipenv/core.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipenv/core.py b/pipenv/core.py index 0dcc7ed237..d97e89a7a3 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -1893,7 +1893,8 @@ def do_install( raise click.BadArgumentUsage('Please provide path to editable package') package_name = ' '.join([package_name, more_packages.pop(0)]) # capture indexes and extra indexes - line = ' '.join([package_name] + more_packages).strip() + line = [package_name] + more_packages + line = ' '.join(str(s) for s in line).strip() index_indicators = ['-i', '--index', '--extra-index-url'] index, extra_indexes = None, None if any(line.endswith(s) for s in index_indicators):