diff --git a/.ci/run_container.sh b/.ci/run_container.sh index ed8deb3..d1a837c 100755 --- a/.ci/run_container.sh +++ b/.ci/run_container.sh @@ -69,8 +69,8 @@ else fi export PULP_CONTENT_ORIGIN -PULP_DJANGO_SECRET="$(python3 -c "import secrets; print(secrets.token_urlsafe(50))")" -export PULP_DJANGO_SECRET +PULP_SECRET_KEY="$(python3 -c "import secrets; print(secrets.token_urlsafe(50))")" +export PULP_SECRET_KEY "${CONTAINER_RUNTIME}" \ run ${RM:+--rm} \ @@ -82,7 +82,7 @@ export PULP_DJANGO_SECRET ${PULP_DOMAIN_ENABLED:+--env PULP_DOMAIN_ENABLED} \ ${PULP_ENABLED_PLUGINS:+--env PULP_ENABLED_PLUGINS} \ --env PULP_CONTENT_ORIGIN \ - --env PULP_DJANGO_SECRET \ + --env PULP_SECRET_KEY \ --detach \ --name "pulp-ephemeral" \ --volume "${PULP_CLI_TEST_TMPDIR}/settings:/etc/pulp${SELINUX:+:Z}" \ diff --git a/.ci/scripts/check_click_for_mypy.py b/.ci/scripts/check_click_for_mypy.py index 33ecf4c..d4b1aea 100755 --- a/.ci/scripts/check_click_for_mypy.py +++ b/.ci/scripts/check_click_for_mypy.py @@ -5,7 +5,7 @@ # "packaging>=25.0,<25.1", # ] # /// - +import sys from importlib import metadata from packaging.version import Version @@ -15,4 +15,4 @@ if click_version < Version("8.1.1"): print("🚧 Linting with mypy is currently only supported with click>=8.1.1. 🚧") print("🔧 Please run `pip install click>=8.1.1` first. 🔨") - exit(1) + sys.exit(1) diff --git a/.ci/scripts/collect_changes.py b/.ci/scripts/collect_changes.py index 80d7477..9ed2b48 100755 --- a/.ci/scripts/collect_changes.py +++ b/.ci/scripts/collect_changes.py @@ -9,10 +9,12 @@ import itertools import re +import typing as t from pathlib import Path import tomllib from git import GitCommandError, Repo +from packaging.version import Version from packaging.version import parse as parse_version # Read Towncrier settings @@ -51,7 +53,7 @@ ) -def get_changelog(repo, branch): +def get_changelog(repo: Repo, branch: str) -> str: branch_tc_settings = tomllib.loads(repo.git.show(f"{branch}:pyproject.toml"))["tool"][ "towncrier" ] @@ -59,7 +61,7 @@ def get_changelog(repo, branch): return repo.git.show(f"{branch}:{branch_changelog_file}") + "\n" -def _tokenize_changes(splits): +def _tokenize_changes(splits: list[str]) -> t.Iterator[list[Version | str]]: assert len(splits) % 3 == 0 for i in range(len(splits) // 3): title = splits[3 * i] @@ -67,13 +69,13 @@ def _tokenize_changes(splits): yield [version, title + splits[3 * i + 2]] -def split_changelog(changelog): +def split_changelog(changelog: str) -> tuple[str, list[list[Version | str]]]: preamble, rest = changelog.split(START_STRING, maxsplit=1) split_rest = re.split(TITLE_REGEX, rest) return preamble + START_STRING + split_rest[0], list(_tokenize_changes(split_rest[1:])) -def main(): +def main() -> None: repo = Repo(Path.cwd()) remote = repo.remotes[0] branches = [ref for ref in remote.refs if re.match(r"^([0-9]+)\.([0-9]+)$", ref.remote_head)] @@ -91,7 +93,7 @@ def main(): except GitCommandError: print("No changelog found on this branch.") continue - dummy, changes = split_changelog(changelog) + _dummy, changes = split_changelog(changelog) new_changes = sorted(main_changes + changes, key=lambda x: x[0], reverse=True) # Now remove duplicates (retain the first one) main_changes = [new_changes[0]] diff --git a/pulp-glue-workflow/pyproject.toml b/pulp-glue-workflow/pyproject.toml index 223e258..9059650 100644 --- a/pulp-glue-workflow/pyproject.toml +++ b/pulp-glue-workflow/pyproject.toml @@ -47,7 +47,11 @@ line-length = 100 [tool.ruff.lint] # This section is managed by the cookiecutter templates. select = ["E4", "E7", "E9", "F"] -extend-select = ["I", "INT", "PTH"] +extend-select = ["FURB", "I", "INT", "PTH", "SIM1", "TID", "T10", "UP"] + +[tool.ruff.lint.flake8-tidy-imports.banned-api] +# This section is managed by the cookiecutter templates. +"distutils".msg = "The 'distutils' module has been deprecated since Python 3.9." [tool.mypy] diff --git a/pyproject.toml b/pyproject.toml index 549bcd9..8da1974 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -188,13 +188,18 @@ line-length = 100 [tool.ruff.lint] # This section is managed by the cookiecutter templates. select = ["E4", "E7", "E9", "F"] -extend-select = ["I", "INT", "PTH"] +extend-select = ["FURB", "I", "INT", "PTH", "SIM1", "TID", "T10", "UP"] [tool.ruff.lint.isort] # This section is managed by the cookiecutter templates. sections = { second-party = ["pulp_glue"] } section-order = ["future", "standard-library", "third-party", "second-party", "first-party", "local-folder"] +[tool.ruff.lint.flake8-tidy-imports.banned-api] +# This section is managed by the cookiecutter templates. +"distutils".msg = "The 'distutils' module has been deprecated since Python 3.9." +"pulpcore.cli.common.generic".msg = "This module moved to 'pulp_cli.generic'." + [tool.mypy] # This section is managed by the cookiecutter templates. @@ -225,7 +230,7 @@ dev = [ lint = [ {include-group = "test"}, "mypy~=1.20.0", - "ruff~=0.15.1", + "ruff~=0.16.0", "shellcheck-py~=0.11.0.1", "types-pygments", "types-pyyaml",