mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-01 09:56:18 +00:00
Add basic typing for module_utils (#11222)
* Add basic typing for module_utils.
* Apply some suggestions.
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
* Make pass again.
* Add more types as suggested.
* Normalize extra imports.
* Add more type hints.
* Improve typing.
* Add changelog fragment.
* Reduce changelog.
* Apply suggestions from code review.
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
* Fix typo.
* Cleanup.
* Improve types and make type checking happy.
* Let's see whether older Pythons barf on this.
* Revert "Let's see whether older Pythons barf on this."
This reverts commit 9973af3dbe.
* Add noqa.
---------
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
parent
fb2f34ba85
commit
c7f6a28d89
56 changed files with 725 additions and 469 deletions
|
|
@ -4,8 +4,13 @@
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
import typing as t
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils import deps
|
||||
|
||||
if t.TYPE_CHECKING:
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
|
||||
with deps.declare("packaging"):
|
||||
from packaging.requirements import Requirement
|
||||
|
|
@ -13,11 +18,11 @@ with deps.declare("packaging"):
|
|||
|
||||
|
||||
class PackageRequirement:
|
||||
def __init__(self, module, name):
|
||||
def __init__(self, module: AnsibleModule, name: str) -> None:
|
||||
self.module = module
|
||||
self.parsed_name, self.requirement = self._parse_spec(name)
|
||||
|
||||
def _parse_spec(self, name):
|
||||
def _parse_spec(self, name: str) -> tuple[str, Requirement | None]:
|
||||
"""
|
||||
Parse a package name that may include version specifiers using PEP 508.
|
||||
Returns a tuple of (name, requirement) where requirement is of type packaging.requirements.Requirement and it may be None.
|
||||
|
|
@ -49,7 +54,7 @@ class PackageRequirement:
|
|||
except Exception as e:
|
||||
raise ValueError(f"Invalid package specification for '{name}': {e}") from e
|
||||
|
||||
def matches_version(self, version):
|
||||
def matches_version(self, version: str):
|
||||
"""
|
||||
Check if a version string fulfills a version specifier.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue