From 574389e5272b9416eec401f1092de08525b9b824 Mon Sep 17 00:00:00 2001 From: Itay Knaan Harpaz Date: Wed, 7 Apr 2021 18:10:30 +0300 Subject: [PATCH] Fix SSH requirement crash --- CHANGELOG.rst | 5 +++++ pip_check_reqs/__init__.py | 2 +- pip_check_reqs/common.py | 7 +++++++ tests/test_common.py | 4 +++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 11f265e..723e6e8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,7 +2,12 @@ Release History --------------- +2.2.2 + +- Fix crash on requirements of the "git+ssh://..." format. + 2.2.1 + - Python source is now always read using utf-8, even if default encoding for reading files is set otherwise. diff --git a/pip_check_reqs/__init__.py b/pip_check_reqs/__init__.py index 36a511e..f1edb19 100644 --- a/pip_check_reqs/__init__.py +++ b/pip_check_reqs/__init__.py @@ -1 +1 @@ -__version__ = '2.2.1' +__version__ = '2.2.2' diff --git a/pip_check_reqs/common.py b/pip_check_reqs/common.py index 9d6d479..a007b2d 100644 --- a/pip_check_reqs/common.py +++ b/pip_check_reqs/common.py @@ -7,6 +7,7 @@ from packaging.utils import canonicalize_name from packaging.markers import Marker + # Between different versions of pip the location of PipSession has changed. try: from pip._internal.network.session import PipSession @@ -141,6 +142,12 @@ def find_required_modules(options, requirements_filename: str): requirement.requirement, ).name + if requirement_name is None: + # This happens when the requirement parsing fails, for e.g. a + # requirement in the format of + # git+ssh://git@github.com/... + continue + if options.ignore_reqs(requirement): log.debug('ignoring requirement: %s', requirement_name) continue diff --git a/tests/test_common.py b/tests/test_common.py index 69892d6..6eb86d2 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -170,7 +170,9 @@ class options: options.ignore_reqs = common.ignorer(ignore_cfg=['barfoo']) fake_requirements_file = tmp_path / 'requirements.txt' - fake_requirements_file.write_text('foobar==1\nbarfoo==2') + fake_requirements_file.write_text('foobar==1\nbarfoo==2\n' + 'git+ssh://git@github.com/' + 'r1chardj0n3s/pip-check-reqs.git@master') reqs = common.find_required_modules( options=options,