mirror of
https://github.com/home-assistant/core
synced 2024-10-07 10:13:38 +02:00
Use regex instead of partition to section package definition (#58278)
This commit is contained in:
parent
e38754a836
commit
2a7192167d
@ -22,7 +22,9 @@ from .model import Config, Integration
|
|||||||
IGNORE_PACKAGES = {
|
IGNORE_PACKAGES = {
|
||||||
commented.lower().replace("_", "-") for commented in COMMENT_REQUIREMENTS
|
commented.lower().replace("_", "-") for commented in COMMENT_REQUIREMENTS
|
||||||
}
|
}
|
||||||
PACKAGE_REGEX = re.compile(r"^(?:--.+\s)?([-_\.\w\d]+).*==.+$")
|
PACKAGE_REGEX = re.compile(
|
||||||
|
r"^(?:--.+\s)?([-_\.\w\d\[\]]+)(==|>=|<=|~=|!=|<|>|===)*(.*)$"
|
||||||
|
)
|
||||||
PIP_REGEX = re.compile(r"^(--.+\s)?([-_\.\w\d]+.*(?:==|>=|<=|~=|!=|<|>|===)?.*$)")
|
PIP_REGEX = re.compile(r"^(--.+\s)?([-_\.\w\d]+.*(?:==|>=|<=|~=|!=|<|>|===)?.*$)")
|
||||||
SUPPORTED_PYTHON_TUPLES = [
|
SUPPORTED_PYTHON_TUPLES = [
|
||||||
REQUIRED_PYTHON_VER[:2],
|
REQUIRED_PYTHON_VER[:2],
|
||||||
@ -84,16 +86,19 @@ def validate_requirements_format(integration: Integration) -> bool:
|
|||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
pkg, sep, version = req.partition("==")
|
pkg, sep, version = PACKAGE_REGEX.match(req).groups()
|
||||||
|
|
||||||
if not sep and integration.core:
|
if integration.core and sep != "==":
|
||||||
integration.add_error(
|
integration.add_error(
|
||||||
"requirements",
|
"requirements",
|
||||||
f'Requirement {req} need to be pinned "<pkg name>==<version>".',
|
f'Requirement {req} need to be pinned "<pkg name>==<version>".',
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if AwesomeVersion(version).strategy == AwesomeVersionStrategy.UNKNOWN:
|
if (
|
||||||
|
version
|
||||||
|
and AwesomeVersion(version).strategy == AwesomeVersionStrategy.UNKNOWN
|
||||||
|
):
|
||||||
integration.add_error(
|
integration.add_error(
|
||||||
"requirements",
|
"requirements",
|
||||||
f"Unable to parse package version ({version}) for {pkg}.",
|
f"Unable to parse package version ({version}) for {pkg}.",
|
||||||
|
@ -45,7 +45,7 @@ def test_validate_requirements_format_wrongly_pinned(integration: Integration):
|
|||||||
|
|
||||||
def test_validate_requirements_format_ignore_pin_for_custom(integration: Integration):
|
def test_validate_requirements_format_ignore_pin_for_custom(integration: Integration):
|
||||||
"""Test requirement ignore pinning for custom."""
|
"""Test requirement ignore pinning for custom."""
|
||||||
integration.manifest["requirements"] = ["test_package>=1"]
|
integration.manifest["requirements"] = ["test_package>=1", "test_package"]
|
||||||
integration.path = Path("")
|
integration.path = Path("")
|
||||||
assert validate_requirements_format(integration)
|
assert validate_requirements_format(integration)
|
||||||
assert len(integration.errors) == 0
|
assert len(integration.errors) == 0
|
||||||
@ -63,6 +63,9 @@ def test_validate_requirements_format_invalid_version(integration: Integration):
|
|||||||
|
|
||||||
def test_validate_requirements_format_successful(integration: Integration):
|
def test_validate_requirements_format_successful(integration: Integration):
|
||||||
"""Test requirement with successful result."""
|
"""Test requirement with successful result."""
|
||||||
integration.manifest["requirements"] = ["test_package==1.2.3"]
|
integration.manifest["requirements"] = [
|
||||||
|
"test_package==1.2.3",
|
||||||
|
"test_package[async]==1.2.3",
|
||||||
|
]
|
||||||
assert validate_requirements_format(integration)
|
assert validate_requirements_format(integration)
|
||||||
assert len(integration.errors) == 0
|
assert len(integration.errors) == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user