From 718a3c155d3dbd9f5772757c72f6da5477abd9df Mon Sep 17 00:00:00 2001 From: Dan Tebben Date: Sun, 15 Feb 2026 17:56:38 -0500 Subject: [PATCH 1/2] added formatting of pyproject.toml using pyproject.fmt default values --- noxfile.py | 26 +++++- pyproject.toml | 145 +++++++++++++++----------------- tests/subproject/pyproject.toml | 43 +++++----- tests/subproject/uv.lock | 19 +++-- uv.lock | 93 +++++++++++++++++++- 5 files changed, 218 insertions(+), 108 deletions(-) diff --git a/noxfile.py b/noxfile.py index 29b487a..b0580ee 100644 --- a/noxfile.py +++ b/noxfile.py @@ -4,7 +4,7 @@ options.error_on_external_run = True options.default_venv_backend = "uv" -options.sessions = ["lint", "type_check", "test"] +options.sessions = ["lint", "type_check", "test", "pyproject_fmt_check"] @session( @@ -67,6 +67,30 @@ def lint_fix(s: Session) -> None: s.run("ruff", "check", ".", "--extend-fixable", "F401", "--fix") +@session(uv_only_groups=["lint"]) +@parametrize( + "command", + [ + ["pyproject-fmt", "pyproject.toml"], + ["pyproject-fmt", "tests/subproject/pyproject.toml"], + ], +) +def pyproject_fmt_fix(s: Session, command: list[str]) -> None: + s.run(*command) + + +@session(uv_only_groups=["lint"]) +@parametrize( + "command", + [ + ["pyproject-fmt", "--check", "pyproject.toml"], + ["pyproject-fmt", "--check", "tests/subproject/pyproject.toml"], + ], +) +def pyproject_fmt_check(s: Session, command: list[str]) -> None: + s.run(*command) + + @session(uv_groups=["test", "type_check"]) def type_check(s: Session) -> None: s.run("mypy", "src", "tests", "noxfile.py") diff --git a/pyproject.toml b/pyproject.toml index 458a53e..c8d06e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,103 +1,92 @@ +[build-system] +build-backend = "uv_build" +requires = [ "uv-build>=0.9,<0.10" ] + [project] name = "nox-uv" version = "0.7.2-dev0" description = "Facilitate nox integration with uv for Python projects" -keywords = ["nox", "uv"] readme = "README.md" -authors = [{ name = "Dan Tebben", email = "dantebben@gmail.com" }] +keywords = [ "nox", "uv" ] license = "MIT" -license-files = ["LICENSE.txt"] +license-files = [ "LICENSE.txt" ] +authors = [ { name = "Dan Tebben", email = "dantebben@gmail.com" } ] +requires-python = ">=3.9" classifiers = [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: 3.14", - "Topic :: Software Development :: Testing", - "Typing :: Typed", + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Topic :: Software Development :: Testing", + "Typing :: Typed", ] - -requires-python = ">=3.9" -dependencies = ["nox>=2026.2.9"] - -[project.urls] -Homepage = "https://github.com/dantebben/nox-uv" -Repository = "https://github.com/dantebben/nox-uv" -Issues = "https://github.com/dantebben/nox-uv/issues" - -[build-system] -requires = ["uv_build>=0.9.0,<0.10.0"] -build-backend = "uv_build" +dependencies = [ "nox>=2026.2.9" ] +urls.Homepage = "https://github.com/dantebben/nox-uv" +urls.Issues = "https://github.com/dantebben/nox-uv/issues" +urls.Repository = "https://github.com/dantebben/nox-uv" [dependency-groups] -lint = ["ruff>=0.9.7"] test = [ - "pytest>=8.4.0", - # TODO: Remove this upper bound when CoverageWarnings are fixed. - "pytest-cov<7", + "pytest>=8.4", + # TODO: Remove this upper bound when CoverageWarnings are fixed. + "pytest-cov<7", ] -type_check = ["mypy>=1.15.0"] +lint = [ "pyproject-fmt>=2.8", "ruff>=0.9.7" ] +type_check = [ "mypy>=1.15" ] [tool.uv] default-groups = "all" -[tool.mypy] -ignore_missing_imports = true -strict = true -enable_error_code = ["deprecated", "exhaustive-match", "explicit-override"] - - [tool.ruff] line-length = 99 -src = ["src"] - - -[tool.ruff.lint] -select = [ - "F", # pyflakes - "E", # pycodestyle - "I", # isort - "N", # pep8-naming - "UP", # pyupgrade - "RUF", # ruff - "B", # flake8-bugbear - "C4", # flake8-comprehensions - "ISC", # flake8-implicit-str-concat - "PIE", # flake8-pie - "PT", # flake-pytest-style - "PTH", # flake8-use-pathlib - "SIM", # flake8-simplify - "TID", # flake8-tidy-imports +src = [ "src" ] +lint.select = [ + "B", # flake8-bugbear + "C4", # flake8-comprehensions + "E", # pycodestyle + "F", # pyflakes + "I", # isort + "ISC", # flake8-implicit-str-concat + "N", # pep8-naming + "PIE", # flake8-pie + "PT", # flake-pytest-style + "PTH", # flake8-use-pathlib + "RUF", # ruff + "SIM", # flake8-simplify + "TID", # flake8-tidy-imports + "UP", # pyupgrade ] -extend-ignore = ["RUF005", "RUF012"] -unfixable = [ - # Disable removing unused imports by default and only enable within nox so editors don't delete - # unused imports while the user is in the middle of editing a file on save. - "F401", +lint.extend-ignore = [ "RUF005", "RUF012" ] +lint.unfixable = [ + # Disable removing unused imports by default and only enable within nox so editors don't delete + # unused imports while the user is in the middle of editing a file on save. + "F401", ] +lint.flake8-tidy-imports.ban-relative-imports = "all" +lint.isort.force-sort-within-sections = true +lint.isort.split-on-trailing-comma = false -[tool.ruff.lint.isort] -force-sort-within-sections = true -split-on-trailing-comma = false - +[tool.pytest] +ini_options.addopts = [ "--strict-config", "--strict-markers" ] +ini_options.xfail_strict = true +ini_options.filterwarnings = [ "error" ] -[tool.ruff.lint.flake8-tidy-imports] -ban-relative-imports = "all" +[tool.coverage] +# The nox session that calls coverage does not find "src/nox_uv", but it is found in the -[tool.pytest.ini_options] -addopts = ["--strict-config", "--strict-markers"] -xfail_strict = true -filterwarnings = ["error"] - -[tool.coverage.run] -parallel = true -# The nox session that calls coverage does not find "src/nox_uv", but it is found in the # subprocess. Coverage generates a warning that the module was not found, but coverage is actually + # run and determined in the "parallel" subprocess. + +[tool.mypy] +ignore_missing_imports = true +strict = true +enable_error_code = [ "deprecated", "exhaustive-match", "explicit-override" ] diff --git a/tests/subproject/pyproject.toml b/tests/subproject/pyproject.toml index 20647f3..43fd1c9 100644 --- a/tests/subproject/pyproject.toml +++ b/tests/subproject/pyproject.toml @@ -1,30 +1,33 @@ +[build-system] +build-backend = "uv_build" +requires = [ "uv-build>=0.9,<0.10" ] + [project] name = "subproject" version = "0.1.0" description = "Project for testing nox-uv" readme = "README.md" requires-python = ">=3.9" -classifiers = ["Private :: Do Not Upload"] -dependencies = ["nox-uv"] - -[tool.uv.sources] -nox-uv = { path = "../../", editable = true } - -[build-system] -requires = ["uv_build>=0.9.0,<0.10.0"] -build-backend = "uv_build" - - -[project.optional-dependencies] -pyyaml = ["pyyaml"] -scapy = ["scapy"] +classifiers = [ + "Private :: Do Not Upload", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", +] +dependencies = [ "nox-uv" ] +optional-dependencies.pyyaml = [ "pyyaml" ] +optional-dependencies.scapy = [ "scapy" ] [dependency-groups] -never-used = ["networkx"] - -lint = ["ruff>=0.9.7"] -test = ["nose>=1.3.7"] -type_check = ["mypy>=1.15.0"] +test = [ "nose>=1.3.7" ] +lint = [ "ruff>=0.9.7" ] +never-used = [ "networkx" ] +type_check = [ "mypy>=1.15" ] [tool.uv] -default-groups = ["lint", "test", "type_check"] +default-groups = [ "lint", "test", "type_check" ] +sources.nox-uv = { path = "../../", editable = true } diff --git a/tests/subproject/uv.lock b/tests/subproject/uv.lock index fcdd8d9..11ea530 100644 --- a/tests/subproject/uv.lock +++ b/tests/subproject/uv.lock @@ -309,7 +309,7 @@ wheels = [ [[package]] name = "nox" -version = "2025.11.12" +version = "2026.2.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argcomplete" }, @@ -322,9 +322,9 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/a8/e169497599266d176832e2232c08557ffba97eef87bf8a18f9f918e0c6aa/nox-2025.11.12.tar.gz", hash = "sha256:3d317f9e61f49d6bde39cf2f59695bb4e1722960457eee3ae19dacfe03c07259", size = 4030561, upload-time = "2025-11-12T18:39:03.319Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/8e/55a9679b31f1efc48facedd2448eb53c7f1e647fb592aa1403c9dd7a4590/nox-2026.2.9.tar.gz", hash = "sha256:1bc8a202ee8cd69be7aaada63b2a7019126899a06fc930a7aee75585bf8ee41b", size = 4031165, upload-time = "2026-02-10T04:38:58.878Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/34/434c594e0125a16b05a7bedaea33e63c90abbfbe47e5729a735a8a8a90ea/nox-2025.11.12-py3-none-any.whl", hash = "sha256:707171f9f63bc685da9d00edd8c2ceec8405b8e38b5fb4e46114a860070ef0ff", size = 74447, upload-time = "2025-11-12T18:39:01.575Z" }, + { url = "https://files.pythonhosted.org/packages/8d/58/0d5e5a044f1868bdc45f38afdc2d90ff9867ce398b4e8fa9e666bfc9bfba/nox-2026.2.9-py3-none-any.whl", hash = "sha256:1b7143bc8ecdf25f2353201326152c5303ae4ae56ca097b1fb6179ad75164c47", size = 74615, upload-time = "2026-02-10T04:38:57.266Z" }, ] [[package]] @@ -336,15 +336,18 @@ dependencies = [ ] [package.metadata] -requires-dist = [{ name = "nox", specifier = ">=2025.5.1" }] +requires-dist = [{ name = "nox", specifier = ">=2026.2.9" }] [package.metadata.requires-dev] -lint = [{ name = "ruff", specifier = ">=0.9.7" }] +lint = [ + { name = "pyproject-fmt", specifier = ">=2.8" }, + { name = "ruff", specifier = ">=0.9.7" }, +] test = [ - { name = "pytest", specifier = ">=8.4.0" }, + { name = "pytest", specifier = ">=8.4" }, { name = "pytest-cov", specifier = "<7" }, ] -type-check = [{ name = "mypy", specifier = ">=1.15.0" }] +type-check = [{ name = "mypy", specifier = ">=1.15" }] [[package]] name = "packaging" @@ -541,7 +544,7 @@ provides-extras = ["pyyaml", "scapy"] lint = [{ name = "ruff", specifier = ">=0.9.7" }] never-used = [{ name = "networkx" }] test = [{ name = "nose", specifier = ">=1.3.7" }] -type-check = [{ name = "mypy", specifier = ">=1.15.0" }] +type-check = [{ name = "mypy", specifier = ">=1.15" }] [[package]] name = "tomli" diff --git a/uv.lock b/uv.lock index fbcd539..18a1991 100644 --- a/uv.lock +++ b/uv.lock @@ -565,6 +565,8 @@ dependencies = [ [package.dev-dependencies] lint = [ + { name = "pyproject-fmt", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pyproject-fmt", version = "2.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "ruff" }, ] test = [ @@ -580,7 +582,10 @@ type-check = [ requires-dist = [{ name = "nox", specifier = ">=2026.2.9" }] [package.metadata.requires-dev] -lint = [{ name = "ruff", specifier = ">=0.9.7" }] +lint = [ + { name = "pyproject-fmt", specifier = ">=2.8.0" }, + { name = "ruff", specifier = ">=0.9.7" }, +] test = [ { name = "pytest", specifier = ">=8.4.0" }, { name = "pytest-cov", specifier = "<7" }, @@ -647,6 +652,62 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] +[[package]] +name = "pyproject-fmt" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "toml-fmt-common", version = "1.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/47/f36c13b5675773ce05f1907e14112c1c6bcc1862d725b7449eccc345ac35/pyproject_fmt-2.8.0.tar.gz", hash = "sha256:7daff2eaa257bc3fc4e812cca37747830da94db9f6b7424c42cafe96cd38f432", size = 45657, upload-time = "2025-10-08T16:59:16.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/47/946e8b90a28a4769b50970c154c90dc9a70cfb2d19fbc2aee2a456619499/pyproject_fmt-2.8.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:9c9c76c984d2e0d563aaa8cc6bd1d1adfeb139a28a84bfdbbbf2319a9b7f1729", size = 1267049, upload-time = "2025-10-08T16:58:53.689Z" }, + { url = "https://files.pythonhosted.org/packages/cc/7d/ad644e9fb43e528027021db747de7962eef50bbbcedbb87c98121d6f2859/pyproject_fmt-2.8.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:e14feffc413ba2bcbc207dc0ad8847725541a60a4ac3cd68026bb1223d07ed7a", size = 1201449, upload-time = "2025-10-08T16:58:55.251Z" }, + { url = "https://files.pythonhosted.org/packages/96/2a/a5358157bc9aafcaaa6e297d10ac50f99c33a0ef37b9344f597049ea2aff/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb124d275903374701d2931f3a44c7dd0d817933596a184d511bb0a8b444ce9", size = 1260091, upload-time = "2025-10-08T16:58:56.744Z" }, + { url = "https://files.pythonhosted.org/packages/76/53/f4c9473c0d28f040888c13c26adb5848b1d5196a7f75c132d1685581fce3/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc4baf32f55ae44e610aaf0c21a263dee2f11ffaa05cb742feaabcd41ec8409", size = 1219766, upload-time = "2025-10-08T16:58:57.809Z" }, + { url = "https://files.pythonhosted.org/packages/b7/6f/56e8ffd335a28cda75814a98bdf1fd15f0d63ec26a4dda5cf0ae6bb1a892/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6e87e71602fa458be8d81e96dfbba7986149d75fbf2e8c1d22890c83ed03fa09", size = 1531312, upload-time = "2025-10-08T16:58:59.364Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9c/843e0e82b4f64c32092ffa9f8f0439b32de94ffc4c56a86b2270cb85db33/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bb7c2f582a5cffd739087ecb2aa1e01b85128a0caa75695e3c12ef2452e988f", size = 1418892, upload-time = "2025-10-08T16:59:00.634Z" }, + { url = "https://files.pythonhosted.org/packages/6e/49/00c99c87b7032e2859ab42bca7bc4368fef724998b8fcbc35f661a1d25b6/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6da5744fa8882f195228f2a6f5835ed4ba26504e6ae1ef509e3c5202d46637c", size = 1368528, upload-time = "2025-10-08T16:59:02.106Z" }, + { url = "https://files.pythonhosted.org/packages/aa/17/eb2f137fd11c8c04ca2df36568f538f825e5b719c67aa980ea0228a4fa75/pyproject_fmt-2.8.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5b5e8419b0d0df7da0533b23a431242ec71c14621c9e7bf94bc327d3014354e", size = 1374240, upload-time = "2025-10-08T16:59:03.271Z" }, + { url = "https://files.pythonhosted.org/packages/41/4b/419966a7d17c3865aaaf01eab99973e8dcc159ec270ac8c639c5726c7f92/pyproject_fmt-2.8.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:ace1e6e2f9c9ba727a1d1df7ddadeb03855418b293bfe286e7a1a860bedfac55", size = 1505154, upload-time = "2025-10-08T16:59:05.041Z" }, + { url = "https://files.pythonhosted.org/packages/92/7b/85655bec3d3f5a1f1115b5afae7c36eb20587b6a47d6301b0d7cfd884311/pyproject_fmt-2.8.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f980662befddd688c7fb4d74b41b2985d8460d4477da559ac1914289ca566510", size = 1541633, upload-time = "2025-10-08T16:59:06.119Z" }, + { url = "https://files.pythonhosted.org/packages/2f/14/3aaac91ff8cd6b34131acc73c16037fc79b8e89bca6f9806876a22c9a73f/pyproject_fmt-2.8.0-cp39-abi3-win32.whl", hash = "sha256:0cde3c9d957d73d389386ac59c4c06a542c5d99a27ed64ee1cf1b429a13c5ebe", size = 1117606, upload-time = "2025-10-08T16:59:07.316Z" }, + { url = "https://files.pythonhosted.org/packages/13/1d/5ed1023f8fb75040a185237db76f121c64d03c15a42c5b4f1b6b263135b3/pyproject_fmt-2.8.0-cp39-abi3-win_amd64.whl", hash = "sha256:0f5cbad373b373d8b04cf085c98876196adec5e64a300e7a1b9e5dff4be68076", size = 1219826, upload-time = "2025-10-08T16:59:08.647Z" }, + { url = "https://files.pythonhosted.org/packages/70/70/044dec9b72c05e90b7d1a8d0814839a408798a2c3d4dd68a22a2d7b16286/pyproject_fmt-2.8.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0969dc6ff845ebdb2af7f0ec01f2e266bd8614912bde0dae4818db2414119cd4", size = 1266852, upload-time = "2025-10-08T16:59:09.932Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4b/b5fc1f935d5ca31943d4f7eb862c063b829198edfd1aee1a3538012f1192/pyproject_fmt-2.8.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ebb9b4779d84ea194fde3ec1876a275f2fb071791bb4003158a385861b371a53", size = 1201295, upload-time = "2025-10-08T16:59:11.376Z" }, + { url = "https://files.pythonhosted.org/packages/1b/21/5439bd5cbc6d5c969fa0348e279718f9bd3684c9fc297ff47a842d0a8d0a/pyproject_fmt-2.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e32f3c8761829382362fbe2344010ce55c99e6ecb3ba381d073e50736f8ab5c", size = 1367607, upload-time = "2025-10-08T16:59:12.444Z" }, + { url = "https://files.pythonhosted.org/packages/23/1f/50f2669cbffbcca4e7703cdcde1205ec7857b926879b937fe2ad3dabc55b/pyproject_fmt-2.8.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3aa183fad85892edac82e6214209f8dd8e170d98ae6758436f318ba281725fab", size = 1266733, upload-time = "2025-10-08T16:59:13.48Z" }, + { url = "https://files.pythonhosted.org/packages/a7/7b/7e978d879132dab362273fde10aa3dfa2b39bc2b1e1a451f7dc3483d4301/pyproject_fmt-2.8.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:340de4b15d0bbe7a7854e037e3b7cfb953a00764b6a58ed55d981dcc6a92b7ff", size = 1201348, upload-time = "2025-10-08T16:59:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a4/50/750ef5d5d73d8b91642904378c2479c55320a00a1798b8b8198b5d77763d/pyproject_fmt-2.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18baa00dc1501c6d4cac892d2f0a37bbe74410b1a4ddd6d0df59437a1cbdf520", size = 1368512, upload-time = "2025-10-08T16:59:15.719Z" }, +] + +[[package]] +name = "pyproject-fmt" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "toml-fmt-common", version = "1.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/2c/54d8b155d9157b8c69a02186793a419f82a1add53c62a827dcb65a6e973e/pyproject_fmt-2.16.0.tar.gz", hash = "sha256:7fd1bfc096737d6d57759292f66a1ad34b4c94efbc4949490cb363dbf8df7afa", size = 138399, upload-time = "2026-02-12T22:31:07.712Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/0b/efe6f6bd3d6a55e865f4a02f26a2f950dbb51b4b37a55cf162921b2fcbc5/pyproject_fmt-2.16.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4ab38c8b670b5311bb82613f26f6dfa6a94fe58d5dfd966e62a022aa0d12a1c7", size = 4713872, upload-time = "2026-02-12T22:30:50.193Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/41bb340885477cdcdc243e38824aff11bd2ee1fa2622065c8e44272b2dc3/pyproject_fmt-2.16.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1408124b4cc4732956b414e1e69f8ca42a2cf10f9e01fb05017f568154a0afa5", size = 4526548, upload-time = "2026-02-12T22:30:51.897Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c5/d4a22d10cac92c0c3cc4f7fa8b7e2d48ba93f11e931f6abffcd978146210/pyproject_fmt-2.16.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:abcc96ce23a44b4a72c9f9531d5091d0720be5ab02688907561ba053c362a781", size = 4669201, upload-time = "2026-02-12T22:30:53.596Z" }, + { url = "https://files.pythonhosted.org/packages/38/88/2ce5ab610771f9efee2b4f7bad618996f70ac4a85b269d0c58c4acb5fc44/pyproject_fmt-2.16.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:316cab903bd0e702e537b6453851de32acad07281b5a26ad6a4fa0bd6d961c20", size = 4983950, upload-time = "2026-02-12T22:30:55.235Z" }, + { url = "https://files.pythonhosted.org/packages/87/d7/92bbc9f3d7ef37438303fca87a01a7fe5babfa6486eeddcff52e5d144922/pyproject_fmt-2.16.0-cp39-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:18d3bf855983d804e18c72780b8ed23e687e60bff2c63a029082cef6b29f249d", size = 4709229, upload-time = "2026-02-12T22:30:58.197Z" }, + { url = "https://files.pythonhosted.org/packages/8f/21/9a57d1046a19d3ed710d35c01a2ff659aab52bbdfbe82319d4a33b4b7a5b/pyproject_fmt-2.16.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:11212586f360315a2e4ec5dceb5a82db189ef77df8930b030e1b83274ca04c1a", size = 5187940, upload-time = "2026-02-12T22:30:59.768Z" }, + { url = "https://files.pythonhosted.org/packages/e5/c2/13dd593c0302d367e466f0fcf82d924ad2f66d6f35b02d8b47c600dd3753/pyproject_fmt-2.16.0-cp39-abi3-win_amd64.whl", hash = "sha256:958fc2c6541abdb5ba226d6ba730b3b5de77982d55eb5a83abd43374725f58e9", size = 4828992, upload-time = "2026-02-12T22:31:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4a/7871200ee8bde07334c39d6e08d8869ec44b98d12f5f4cb65923e9ee7042/pyproject_fmt-2.16.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c183040f9b3ca82df5068d90ae007d5ae99cd4edea7fc88facfecfb8b8b9810", size = 4709695, upload-time = "2026-02-12T22:31:02.795Z" }, + { url = "https://files.pythonhosted.org/packages/89/14/d377f8283c8b4c2d6ab8b4984d6a0a73c0a27b6a375b292b15f66214c036/pyproject_fmt-2.16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4111957bbb8c90801bd4c873b7170f208894f2d16655ed24292d2bdb55f1e48", size = 4521890, upload-time = "2026-02-12T22:31:04.565Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f7/7fdd3f40dc5b05234fbea6835e3e496154902d90f1bad1a16a980765a63b/pyproject_fmt-2.16.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:99c6a3db80ef2bf9aa2d9a1cb84416430cb96b35f55b928af669ac72104e18ef", size = 4979912, upload-time = "2026-02-12T22:31:06.227Z" }, +] + [[package]] name = "pytest" version = "8.4.2" @@ -730,6 +791,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f6/b0/2d823f6e77ebe560f4e397d078487e8d52c1516b331e3521bc75db4272ca/ruff-0.15.0-py3-none-win_arm64.whl", hash = "sha256:c480d632cc0ca3f0727acac8b7d053542d9e114a462a145d0b00e7cd658c515a", size = 10865753, upload-time = "2026-02-03T17:53:03.014Z" }, ] +[[package]] +name = "toml-fmt-common" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "tomli", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/7a/fca432020e0b2134f7bb8fa4bf4714f6f0d1c72a08100c96b582c22098bc/toml_fmt_common-1.0.1.tar.gz", hash = "sha256:7a29e99e527ffac456043296a0f1d8c03aaa1b06167bd39ad5e3cc5041f31c17", size = 9626, upload-time = "2024-10-20T05:01:31.278Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/7f/094a5d096adaf2a51de24c8650530625a262bef0c654fc981165ad45821f/toml_fmt_common-1.0.1-py3-none-any.whl", hash = "sha256:7a6542e36a7167fa94b8b997d3f8debadbb4ab757c7d78a77304579bd7a0cc7d", size = 5666, upload-time = "2024-10-20T05:01:29.468Z" }, +] + +[[package]] +name = "toml-fmt-common" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.10'", +] +dependencies = [ + { name = "tomli", marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/26/00c52fb55720e0e3056d59936f959e9dcb7a5caf3a21619eb5c2ba7b5144/toml_fmt_common-1.2.0.tar.gz", hash = "sha256:9c3630dc9409157e866b27ee0cdacf453636735b26dcf0fff385d3d2c1166698", size = 9735, upload-time = "2026-01-30T08:37:45.131Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/bb/aabb52533ec79abccbed8b8fcef386e4037f581c42fc0331e859039619da/toml_fmt_common-1.2.0-py3-none-any.whl", hash = "sha256:f27ba0f4a3594035f3385231d23d437a49bd6ff67ec624424a677c2b304076d3", size = 5699, upload-time = "2026-01-30T08:37:44.069Z" }, +] + [[package]] name = "tomli" version = "2.4.0" From de4fceffd956e1cfbde7d108a485bbef63bac9d3 Mon Sep 17 00:00:00 2001 From: Dan Tebben Date: Sun, 15 Feb 2026 18:00:25 -0500 Subject: [PATCH 2/2] added pyproject fmt test to CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e47cc41..585b477 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - nox-session: ["lint", "type_check"] + nox-session: ["lint", "type_check", "pyproject_fmt_check"] steps: - uses: actions/checkout@v5 - name: Install uv