Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot install pgobject, Invalid specifier: '>=3.5.4|^4.2.0' #2203

Closed
1 task done
AntoninRousset opened this issue Aug 27, 2023 · 2 comments · Fixed by #2215
Closed
1 task done

Cannot install pgobject, Invalid specifier: '>=3.5.4|^4.2.0' #2203

AntoninRousset opened this issue Aug 27, 2023 · 2 comments · Fixed by #2215
Assignees
Labels
🐛 bug Something isn't working

Comments

@AntoninRousset
Copy link

  • I have searched the issue tracker and believe that this is not a duplicate.

Make sure you run commands with -v flag before pasting the output.

Steps to reproduce

Install pygobject

pdm add pygobject

Actual behavior

Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.11/pdm", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/core.py", line 290, in main
    return Core().main(args or sys.argv[1:])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/core.py", line 208, in main
    raise cast(Exception, err).with_traceback(traceback) from None
  File "/usr/lib/python3.11/site-packages/pdm/core.py", line 203, in main
    self.handle(project, options)
  File "/usr/lib/python3.11/site-packages/pdm/core.py", line 157, in handle
    command.handle(project, options)
  File "/usr/lib/python3.11/site-packages/pdm/cli/commands/add.py", line 67, in handle
    self.do_add(
  File "/usr/lib/python3.11/site-packages/pdm/cli/commands/add.py", line 147, in do_add
    all_dependencies = project.all_dependencies
                       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/project/core.py", line 343, in all_dependencies
    return {group: self.get_dependencies(group) for group in self.iter_groups()}
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/project/core.py", line 343, in <dictcomp>
    return {group: self.get_dependencies(group) for group in self.iter_groups()}
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/project/core.py", line 328, in get_dependencies
    req = parse_requirement(line)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/requirements.py", line 506, in parse_requirement
    r = Requirement.from_pkg_requirement(pkg_req)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/requirements.py", line 228, in from_pkg_requirement
    return klass(url=req.url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 12, in __init__
  File "/usr/lib/python3.11/site-packages/pdm/models/requirements.py", line 255, in __post_init__
    self._check_installable()
  File "/usr/lib/python3.11/site-packages/pdm/models/requirements.py", line 394, in _check_installable
    result = Setup.from_directory(self.path.absolute())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/setup.py", line 37, in from_directory
    return _SetupReader.read_from_directory(dir)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/setup.py", line 61, in read_from_directory
    new_result = file_reader(filepath)
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/setup.py", line 73, in read_pyproject_toml
    metadata = PyProject(file, ui=termui.UI()).metadata.unwrap()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/project/toml_file.py", line 18, in __init__
    self._data = self.read()
                 ^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/project/project_file.py", line 32, in read
    metadata, settings = converter.convert(None, self._path, None)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/formats/poetry.py", line 204, in convert
    return converter.convert()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/formats/base.py", line 55, in convert
    self._data[key] = func(self, value)
                      ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/formats/poetry.py", line 147, in dev_dependencies
    "dev": make_array([r for key, req in value.items() for r in _convert_req(key, req)], True),
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/formats/poetry.py", line 147, in <listcomp>
    "dev": make_array([r for key, req in value.items() for r in _convert_req(key, req)], True),
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/formats/poetry.py", line 74, in _convert_req
    yield Requirement.from_req_dict(name, _convert_specifier(req_dict)).as_line()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/requirements.py", line 180, in from_req_dict
    return NamedRequirement(name=name, specifier=get_specifier(req_dict))
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/pdm/models/specifiers.py", line 28, in get_specifier
    return SpecifierSet(version_str)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/packaging/specifiers.py", line 714, in __init__
    parsed.add(Specifier(specifier))
               ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/packaging/specifiers.py", line 245, in __init__
    raise InvalidSpecifier(f"Invalid specifier: '{spec}'")
packaging.specifiers.InvalidSpecifier: Invalid specifier: '>=3.5.4|^4.2.0'

Expected behavior

Successful installation

Environment Information

PDM version:
  2.8.2
Python Interpreter:
  /tmp/test/.venv/bin/python (3.11)
Project Root:
  /tmp/test
Local Packages:

{
  "implementation_name": "cpython",
  "implementation_version": "3.11.4",
  "os_name": "posix",
  "platform_machine": "x86_64",
  "platform_release": "6.1.31-gentoo-dist",
  "platform_system": "Linux",
  "platform_version": "#1 SMP PREEMPT_DYNAMIC Sun Jun 25 00:30:59 CEST 2023",
  "python_full_version": "3.11.4",
  "platform_python_implementation": "CPython",
  "python_version": "3.11",
  "sys_platform": "linux"
}
@AntoninRousset AntoninRousset added the 🐛 bug Something isn't working label Aug 27, 2023
@pawamoy
Copy link
Sponsor Contributor

pawamoy commented Aug 27, 2023

I believe >=3.5.4|^4.2.0 is indeed an invalid specifier according to PEP 508. >=3.5.4 or >=4.2.0,<4.3.0 is I think equivalent to >=3.5.4,<4.3.0? I'm not sure there's an equivalent. This specifier seems to come from Poetry, and PDM has a way to convert such specifiers to valid ones, but it looks like it's failing here?

@frostming
Copy link
Collaborator

I think that specifier is invalid even in Poetry's spec? It should be >=3.5.4||^4.2.0.

@frostming frostming self-assigned this Aug 29, 2023
frostming added a commit that referenced this issue Aug 30, 2023
Close #2203

Signed-off-by: Frost Ming <me@frostming.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants