Switch out conditional requirement parser

Fixes
```
Traceback (most recent call last):
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 35, in __init__
    parsed = _parse_requirement(requirement_string)
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 64, in parse_requirement
    return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 73, in _parse_requirement
    name_token = tokenizer.expect(
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py", line 140, in expect
    raise self.raise_syntax_error(f"Expected {expected}")
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py", line 165, in raise_syntax_error
    raise ParserSyntaxError(
pkg_resources.extern.packaging._tokenizer.ParserSyntaxError: Expected package name at the start of dependency specifier
    "git+https://github.com/jakobmerljak/pyarcrest.git@dev"
    ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/storage/srv/galaxy/server/lib/galaxy/dependencies/__init__.py", line 312, in optional
    conditional = ConditionalDependencies(config_file)
  File "/storage/srv/galaxy/server/lib/galaxy/dependencies/__init__.py", line 45, in __init__
    self.get_conditional_requirements()
  File "/storage/srv/galaxy/server/lib/galaxy/dependencies/__init__.py", line 176, in get_conditional_requirements
    for req in pkg_resources.parse_requirements(open(crfile).readlines()):
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/__init__.py", line 3174, in __init__
    super(Requirement, self).__init__(requirement_string)
  File "/storage/srv/galaxy/server/.venv/lib64/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 37, in __init__
    raise InvalidRequirement(str(e)) from e
pkg_resources.extern.packaging.requirements.InvalidRequirement: Expected package name at the start of dependency specifier
    "git+https://github.com/jakobmerljak/pyarcrest.git@dev"
    ^

```

for advanced package specifiers that might be used during development.
This commit is contained in:
mvdbeek
2023-09-01 13:35:21 +02:00
parent 25b67699ba
commit c1fab91e3a
3 changed files with 10 additions and 6 deletions
+8 -6
View File
@@ -10,8 +10,8 @@ from os.path import (
join,
)
import pkg_resources
import yaml
from dparse import parse
from galaxy.util import (
asbool,
@@ -173,8 +173,10 @@ class ConditionalDependencies:
def get_conditional_requirements(self):
crfile = join(dirname(__file__), "conditional-requirements.txt")
for req in pkg_resources.parse_requirements(open(crfile).readlines()):
self.conditional_reqs.append(req)
with open(crfile) as fh:
dependency_file = parse(fh.read(), file_type="requirements.txt")
for dep in dependency_file.dependencies:
self.conditional_reqs.append(dep)
def check(self, name):
try:
@@ -307,7 +309,7 @@ def optional(config_file=None):
return []
rval = []
conditional = ConditionalDependencies(config_file)
for opt in conditional.conditional_reqs:
if conditional.check(opt.key):
rval.append(str(opt))
for dependency in conditional.conditional_reqs:
if conditional.check(dependency.name):
rval.append(dependency.line)
return rval
@@ -61,6 +61,7 @@ dictobj==0.4 ; python_version >= "3.7" and python_version < "3.12"
dnspython==2.3.0 ; python_version >= "3.7" and python_version < "3.12"
docopt==0.6.2 ; python_version >= "3.7" and python_version < "3.12"
docutils==0.18.1 ; python_version >= "3.7" and python_version < "3.12"
dparse==0.6.3 ; python_version >= "3.7" and python_version < "3.12"
ecdsa==0.18.0 ; python_version >= "3.7" and python_version < "3.12"
edam-ontology==1.25.2 ; python_version >= "3.7" and python_version < "3.12"
email-validator==2.0.0.post2 ; python_version >= "3.7" and python_version < "3.12"
+1
View File
@@ -49,6 +49,7 @@ conda-package-streaming = "*"
dictobj = "*"
dnspython = "*"
docutils = "!=0.17, !=0.17.1"
dparse = "*"
edam-ontology = "*"
fastapi = ">=0.71.0, !=0.89.0, <0.99" # https://github.com/tiangolo/fastapi/issues/4041 https://github.com/tiangolo/fastapi/issues/5861
fastapi-utils = "*"