8000 Reuse packaging and its base classes · Issue #2 · aboutcode-org/packvers · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Reuse packaging and its base classes #2
Open
@pombredanne

Description

@pombredanne

This error at https://dev.azure.com/nexB/2b40e32d-2a30-4c1b-b0f0-7fb807f657bb/_apis/build/builds/9618/logs/48

2023-01-15T17:07:54.5426090Z _________________________ test_api_with_specifier_pdt __________________________
2023-01-15T17:07:54.5427340Z [gw0] darwin -- Python 3.7.15 /Users/runner/work/1/s/venv/bin/python
2023-01-15T17:07:54.5427640Z 
2023-01-15T17:07:54.5428050Z     def test_api_with_specifier_pdt():
2023-01-15T17:07:54.5428530Z         result_file = test_env.get_temp_file("json")
2023-01-15T17:07:54.5429740Z         expected_file = test_env.get_test_loc("test-api-pdt-expected.json", must_exist=False)
2023-01-15T17:07:54.5430460Z         with open(result_file, "w") as result:
2023-01-15T17:07:54.5430880Z             result.write(
2023-01-15T17:07:54.5431290Z                 json.dumps(
2023-01-15T17:07:54.5431710Z                     resolver_api(
2023-01-15T17:07:54.5432490Z                         specifiers=["flask==2.1.2"],
2023-01-15T17:07:54.5433370Z                         python_version="3.10",
2023-01-15T17:07:54.5433870Z                         operating_system="linux",
2023-01-15T17:07:54.5434290Z >                       pdt_output=True,
2023-01-15T17:07:54.5435350Z                     ).to_dict()
2023-01-15T17:07:54.5435690Z                 )
2023-01-15T17:07:54.5436080Z             )
2023-01-15T17:07:54.5436210Z 
2023-01-15T17:07:54.5436610Z tests/test_api.py:55: 
2023-01-15T17:07:54.5437100Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2023-01-15T17:07:54.5437660Z src/python_inspector/api.py:160: in resolve_dependencies
2023-01-15T17:07:54.5438300Z     dep = dependencies.get_dependency(specifier=specifier)
2023-01-15T17:07:54.5438890Z src/python_inspector/dependencies.py:69: in get_dependency
2023-01-15T17:07:54.5439390Z     requirement_line=specifier,
2023-01-15T17:07:54.5439940Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2023-01-15T17:07:54.5440220Z 
2023-01-15T17:07:54.5441510Z self = <[AttributeError("'InstallRequirement' object has no attribute 'req'") raised in repr()] InstallRequirement object at 0x10f3de290>
2023-01-15T17:07:54.54
607D
42820Z req = <Requirement('flask==2.1.2')>, requirement_line = 'flask==2.1.2'
2023-01-15T17:07:54.5443510Z link = None, marker = None, install_options = None, global_options = None
2023-01-15T17:07:54.5444250Z hash_options = None, is_constraint = False, extras = (), invalid_options = None
2023-01-15T17:07:54.5444560Z 
2023-01-15T17:07:54.5444930Z     def __init__(
2023-01-15T17:07:54.5445260Z         self,
2023-01-15T17:07:54.5445640Z         req: Optional[Requirement],
2023-01-15T17:07:54.5446130Z         requirement_line: RequirementLine,
2023-01-15T17:07:54.5446590Z         link: Optional[Link] = None,
2023-01-15T17:07:54.5447030Z         marker: Optional[Marker] = None,
2023-01-15T17:07:54.5447490Z         install_options: Optional[List[str]] = None,
2023-01-15T17:07:54.5448060Z         global_options: Optional[List[str]] = None,
2023-01-15T17:07:54.5448570Z         hash_options: Optional[List[str]] = None,
2023-01-15T17:07:54.5449020Z         is_constraint: bool = False,
2023-01-15T17:07:54.5449500Z         extras: Collection[str] = (),
2023-01-15T17:07:54.5450030Z         invalid_options: Optional[Dict[str, Any]] = None,
2023-01-15T17:07:54.5450910Z     ) -> None:
2023-01-15T17:07:54.5451280Z         """
2023-01-15T17:07:54.5451720Z         Initialize a new pip requirement
2023-01-15T17:07:54.5452090Z     
2023-01-15T17:07:54.5453010Z         - ``req`` is a packaging Requirement object that may be None
2023-01-15T17:07:54.5454170Z         - ``requirement_line`` is the original line this requirement was found
2023-01-15T17:07:54.5455330Z         - ``link`` is a Link object provided when the requirement is a path or URL
2023-01-15T17:07:54.5456560Z         - ``marker`` is a packaging Marker object.
2023-01-15T17:07:54.5457160Z           This is provided when a marker is used and there is no ``req`` Requirement.
2023-01-15T17:07:54.5458380Z         - ``install_options``, ``global_options`` and ``hash_options`` are the
2023-01-15T17:07:54.5459550Z           CLI-style pip options for this specifc requirement.
2023-01-15T17:07:54.5460630Z         - ``is_constraint`` is True if this requirement came from loading a
2023-01-15T17:07:54.5461650Z            nested ``-c/--constraint`` file.
2023-01-15T17:07:54.5462740Z         - ``extras`` is a list of [extra] strings for this package.
2023-01-15T17:07:54.5463360Z            This is provided when extras are used and there is no ``req`` Requirement.
2023-01-15T17:07:54.5464690Z         - ``invalid_options`` are global pip options that are mistakenly set at the line-level.
2023-01-15T17:07:54.5465350Z            This is an error.
2023-01-15T17:07:54.5465690Z         """
2023-01-15T17:07:54.5466170Z >       assert req is None or isinstance(req, Requirement), req
2023-01-15T17:07:54.5467210Z E       AssertionError: <Requirement('flask==2.1.2')>
2023-01-15T17:07:54.5468660Z E       assert (<Requirement('flask==2.1.2')> is None or False)
2023-01-15T17:07:54.5470340Z E        +  where False = isinstance(<Requirement('flask==2.1.2')>, Requirement)
2023-01-15T17:07:54.5470670Z 
2023-01-15T17:07:54.5471700Z venv/lib/python3.7/site-packages/pip_requirements_parser.py:1970: AssertionError

is because packvers and packaging have different class hierarchies and it would be better to adopt a different approach.

None of these two approached is satisfying. We should go a different way, which would be making packavers a lightweight fork of packaging.version that WOULD USE the packaging.version base classes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0