diff --git a/.ci/gen_certs.py b/.ci/gen_certs.py index 289cd95..d55b0b9 100644 --- a/.ci/gen_certs.py +++ b/.ci/gen_certs.py @@ -1,3 +1,10 @@ +# /// script +# requires-python = ">=3.10" +# dependencies = [ +# "trustme>=1.2.1,<1.3.0", +# ] +# /// + import argparse import os import sys @@ -6,7 +13,6 @@ def main() -> None: - parser = argparse.ArgumentParser(prog="gen_certs") parser.add_argument( "-d", diff --git a/.ci/scripts/calc_constraints.py b/.ci/scripts/calc_constraints.py index d906425..ca8e11e 100755 --- a/.ci/scripts/calc_constraints.py +++ b/.ci/scripts/calc_constraints.py @@ -1,4 +1,11 @@ #!/bin/python3 +# /// script +# requires-python = ">=3.10" +# dependencies = [ +# "packaging>=25.0,<25.1", +# "tomli>=2.3.0,<2.4.0;python_version<'3.11'", +# ] +# /// import argparse import fileinput diff --git a/.ci/scripts/check_cli_dependencies.py b/.ci/scripts/check_cli_dependencies.py index 56e6a55..19dc19e 100755 --- a/.ci/scripts/check_cli_dependencies.py +++ b/.ci/scripts/check_cli_dependencies.py @@ -1,8 +1,15 @@ #!/bin/env python3 -import tomllib +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "packaging>=25.0,<25.1", +# ] +# /// + import typing as t from pathlib import Path +import tomllib from packaging.requirements import Requirement GLUE_DIR = "pulp-glue-ostree" diff --git a/.ci/scripts/check_click_for_mypy.py b/.ci/scripts/check_click_for_mypy.py index 408a7c6..33ecf4c 100755 --- a/.ci/scripts/check_click_for_mypy.py +++ b/.ci/scripts/check_click_for_mypy.py @@ -1,4 +1,10 @@ #!/bin/env python3 +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "packaging>=25.0,<25.1", +# ] +# /// from importlib import metadata diff --git a/.ci/scripts/collect_changes.py b/.ci/scripts/collect_changes.py index e6cb0da..499265c 100755 --- a/.ci/scripts/collect_changes.py +++ b/.ci/scripts/collect_changes.py @@ -1,10 +1,17 @@ #!/bin/env python3 +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "gitpython>=3.1.46,<3.2.0", +# "packaging>=25.0,<25.1", +# ] +# /// import itertools import os import re -import tomllib +import tomllib from git import GitCommandError, Repo from packaging.version import parse as parse_version diff --git a/.ci/scripts/pr_labels.py b/.ci/scripts/pr_labels.py index 9d637b6..49eb4ad 100755 --- a/.ci/scripts/pr_labels.py +++ b/.ci/scripts/pr_labels.py @@ -1,12 +1,18 @@ #!/bin/env python3 +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "gitpython>=3.1.46,<3.2.0", +# ] +# /// # This script is running with elevated privileges from the main branch against pull requests. import re import sys -import tomllib from pathlib import Path +import tomllib from git import Repo diff --git a/.ci/scripts/validate_commit_message.py b/.ci/scripts/validate_commit_message.py index 16304ef..9b11a93 100644 --- a/.ci/scripts/validate_commit_message.py +++ b/.ci/scripts/validate_commit_message.py @@ -1,10 +1,17 @@ +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "gitpython>=3.1.46,<3.2.0", +# ] +# /// + import os import re import subprocess import sys -import tomllib from pathlib import Path +import tomllib from github import Github with open("pyproject.toml", "rb") as fp: diff --git a/Makefile b/Makefile index 2b04ab1..2273059 100644 --- a/Makefile +++ b/Makefile @@ -2,29 +2,28 @@ GLUE_PLUGINS=$(notdir $(wildcard pulp-glue-ostree/pulp_glue/*)) CLI_PLUGINS=$(notdir $(wildcard pulpcore/cli/*)) +.PHONY: info info: @echo Pulp glue @echo plugins: $(GLUE_PLUGINS) @echo Pulp CLI @echo plugins: $(CLI_PLUGINS) +.PHONY: build build: cd pulp-glue-ostree; pyproject-build -n pyproject-build -n -black: format - +.PHONY: format format: - isort . - cd pulp-glue-ostree; isort . - black . + ruff format + ruff check --fix +.PHONY: lint lint: find tests .ci -name '*.sh' -print0 | xargs -0 shellcheck -x - isort -c --diff . - cd pulp-glue-ostree; isort -c --diff . - black --diff --check . - flake8 + ruff format --check --diff + ruff check --diff .ci/scripts/check_cli_dependencies.py .ci/scripts/check_click_for_mypy.py MYPYPATH=pulp-glue-ostree mypy @@ -35,15 +34,18 @@ tests/cli.toml: cp $@.example $@ @echo "In order to configure the tests to talk to your test server, you might need to edit $@ ." +.PHONY: test test: | tests/cli.toml python3 -m pytest -v tests pulp-glue-ostree/tests +.PHONY: livetest livetest: | tests/cli.toml python3 -m pytest -v tests pulp-glue-ostree/tests -m live +.PHONY: unittest unittest: python3 -m pytest -v tests pulp-glue-ostree/tests -m "not live" +.PHONY: unittest_glue unittest_glue: python3 -m pytest -v pulp-glue-ostree/tests -m "not live" -.PHONY: build info black lint test diff --git a/lint_requirements.txt b/lint_requirements.txt index adf5ff8..804f227 100644 --- a/lint_requirements.txt +++ b/lint_requirements.txt @@ -1,8 +1,5 @@ # Lint requirements -black==25.12.0 -flake8==7.3.0 -flake8-pyproject==1.2.4 -isort==7.0.0 +ruff==0.14.11 mypy==1.19.1 shellcheck-py==0.11.0.1 diff --git a/pulp-glue-ostree/pyproject.toml b/pulp-glue-ostree/pyproject.toml index 8b87519..c8c6151 100644 --- a/pulp-glue-ostree/pyproject.toml +++ b/pulp-glue-ostree/pyproject.toml @@ -31,29 +31,38 @@ repository = "https://github.com/pulp/pulp-cli-ostree" changelog = "https://github.com/pulp/pulp-cli-ostree/blob/main/CHANGES.md" [tool.setuptools.packages.find] +# This section is managed by the cookiecutter templates. where = ["."] include = ["pulp_glue.*"] namespaces = true [tool.setuptools.package-data] -"*" = ["py.typed", "locale/*/LC_MESSAGES/*.mo"] +# This section is managed by the cookiecutter templates. +"*" = ["py.typed"] -[tool.black] -line-length = 100 - -[tool.isort] -profile = "black" -line_length = 100 [tool.mypy] +# This section is managed by the cookiecutter templates. strict = true +warn_unused_ignores = false show_error_codes = true -files = "pulp_glue/**/*.py" +files = "pulp_glue/**/*.py, tests/**/*.py" namespace_packages = true explicit_package_bases = true [[tool.mypy.overrides]] +# This section is managed by the cookiecutter templates. module = [ "schema.*", ] ignore_missing_imports = true + + +[tool.ruff] +# This section is managed by the cookiecutter templates. +line-length = 100 + +[tool.ruff.lint] +# This section is managed by the cookiecutter templates. +extend-select = ["I"] + diff --git a/pulp-glue-ostree/tests/conftest.py b/pulp-glue-ostree/tests/conftest.py index 1597c93..e69de29 100644 --- a/pulp-glue-ostree/tests/conftest.py +++ b/pulp-glue-ostree/tests/conftest.py @@ -1,7 +0,0 @@ -from pulp_glue.common.context import PulpContext - - -class PulpTestContext(PulpContext): - # TODO check if we can just make the base class ignore echo. - def echo(*args, **kwargs) -> None: - return diff --git a/pulpcore/cli/ostree/distribution.py b/pulpcore/cli/ostree/distribution.py index 796c992..8177c16 100644 --- a/pulpcore/cli/ostree/distribution.py +++ b/pulpcore/cli/ostree/distribution.py @@ -122,7 +122,7 @@ def update( else: distribution_ctx.update(body={"repository": ""}, non_blocking=True) - body["repository_version"] = f'{distribution["repository"]}versions/{version}/' + body["repository_version"] = f"{distribution['repository']}versions/{version}/" elif distribution["repository_version"]: repository_href = distribution["repository_version"].partition("versions")[0] body["repository_version"] = f"{repository_href}versions/{version}/" diff --git a/pyproject.toml b/pyproject.toml index 3a838a4..90247a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -108,16 +108,6 @@ name = "Misc" showcontent = true -[tool.black] -# This section is managed by the cookiecutter templates. -line-length = 100 - -[tool.isort] -# This section is managed by the cookiecutter templates. -profile = "black" -line_length = 100 -extend_skip = ["pulp-glue-ostree"] - [tool.pytest.ini_options] markers = [ "script: tests provided as shell scripts", @@ -194,12 +184,12 @@ search = "\"pulp-glue-ostree=={current_version}\"" replace = "\"pulp-glue-ostree=={new_version}\"" -[tool.flake8] +[tool.ruff] +# This section is managed by the cookiecutter templates. +line-length = 100 +extend-exclude = ["cookiecutter"] + +[tool.ruff.lint] # This section is managed by the cookiecutter templates. -exclude = ["./docs/*"] -ignore = ["W503", "Q000", "Q003", "D100", "D104", "D106", "D200", "D202", "D205", "D400", "D401", "D402"] -# E203: whitespace before ':'; https://github.com/psf/black/issues/279 -# E401: multiple imports on one line -extend-ignore = ["E203", "E401"] -max-line-length = 100 +extend-select = ["I"]