diff --git a/ipydeps/ipydeps.py b/ipydeps/ipydeps.py index b432404..c276230 100644 --- a/ipydeps/ipydeps.py +++ b/ipydeps/ipydeps.py @@ -24,7 +24,7 @@ get_stdlib_packages, ) -package_name_pattern = re.compile(r'([A-Za-z][A-Za-z0-9_\-]+(((<|>|<=|>=|==|~=)[0-9]+\.[0-9]+(\.[0-9]+)*)((\.?(a|b|rc|post|dev)[0-9]+)|\+[A-Za-z0-9_\-\.]+)*)?)') +package_name_pattern = re.compile(r'([A-Za-z][A-Za-z0-9_\-]+(\[(([A-Za-z][A-Za-z0-9_\-]+,?)*[A-Za-z][A-Za-z0-9_\-]+)?\])?(((<|>|<=|>=|==|~=)[0-9]+\.[0-9]+(\.[0-9]+)*)((\.?(a|b|rc|post|dev)[0-9]+)|\+[A-Za-z0-9_\-\.]+)*)?)') pip_run_args = [sys.executable, '-m', 'pip'] def run_pip( diff --git a/tests/test_ipydeps.py b/tests/test_ipydeps.py index 0ddbf82..df992a2 100644 --- a/tests/test_ipydeps.py +++ b/tests/test_ipydeps.py @@ -17,10 +17,12 @@ def test_get_pkg_names(): assert len(get_pkg_names('abc DEF hIj')) == 3 + assert len(get_pkg_names('abc[DEF] HIJ kLo[mnp,qrs]')) == 3 def test_pkg_name_list(): assert len(get_pkg_names('abc DEF hIj')) == 3 assert len(get_pkg_names(['abc', 'DEF', 'hIj'])) == 3 + assert len(get_pkg_names(['abc[DEF]', 'HIJ', 'kLo[mnp,qrs]'])) == 3 def test_bad_pkg_name(): assert len(get_pkg_names(['exec', 'exec()'])) == 1 @@ -67,6 +69,11 @@ def test_version_specifier_special_release_with_seperator(): assert len(packages) == 1 assert 'bar==5.4.0.dev1' in packages +def test_version_specifier_with_extras(): + packages = get_pkg_names('bar[extra]==5.4.0.dev1') + assert len(packages) == 1 + assert 'bar[extra]==5.4.0.dev1' in packages + def test_version_specifier_plus_sign_release(): packages = get_pkg_names('bar~=2.0.43+2') assert len(packages) == 1