From 681884aa6670473c9d4bfe51850c8324a9cc60c5 Mon Sep 17 00:00:00 2001 From: Sorin Sbarnea Date: Wed, 18 Jun 2025 17:21:38 +0100 Subject: [PATCH] Migrate to pyproject.toml --- .pre-commit-config.yaml | 9 +++-- pyproject.toml | 88 +++++++++++++++++++++++++++++++++++++++++ setup.cfg | 82 -------------------------------------- setup.py | 4 -- 4 files changed, 93 insertions(+), 90 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0cad4822..59f134b7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,10 +9,6 @@ repos: - id: double-quote-string-fixer - id: name-tests-test - id: requirements-txt-fixer -- repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.8.0 - hooks: - - id: setup-cfg-fmt - repo: https://github.com/asottile/reorder-python-imports rev: v3.15.0 hooks: @@ -39,3 +35,8 @@ repos: rev: v1.16.0 hooks: - id: mypy +- repo: https://github.com/pappasam/toml-sort + rev: v0.24.2 + hooks: + - id: toml-sort-fix + alias: toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..4b8b8e6e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,88 @@ +[build-system] +build-backend = "setuptools.build_meta" +requires = [ + "setuptools >= 65.3.0", + "setuptools_scm[toml] >= 7.0.5" +] + +[options] +packages = "find:" +install_requires = [ + "ruamel.yaml>=0.15", + 'tomli>=1.1.0;python_version<"3.11"' +] +python_requires = ">=3.9" + +[project] +name = "pre_commit_hooks" +version = "5.0.0" +description = "Some out-of-the-box hooks for pre-commit." +readme = "README.md" +authors = [{"email" = "asottile@umich.edu", "name" = "Anthony Sottile"}] +license = "MIT" +classifiers = [ + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy" +] + +[project.scripts] +check-added-large-files = "pre_commit_hooks.check_added_large_files:main" +check-ast = "pre_commit_hooks.check_ast:main" +check-builtin-literals = "pre_commit_hooks.check_builtin_literals:main" +check-case-conflict = "pre_commit_hooks.check_case_conflict:main" +check-docstring-first = "pre_commit_hooks.check_docstring_first:main" +check-executables-have-shebangs = "pre_commit_hooks.check_executables_have_shebangs:main" +check-json = "pre_commit_hooks.check_json:main" +check-merge-conflict = "pre_commit_hooks.check_merge_conflict:main" +check-shebang-scripts-are-executable = "pre_commit_hooks.check_shebang_scripts_are_executable:main" +check-symlinks = "pre_commit_hooks.check_symlinks:main" +check-toml = "pre_commit_hooks.check_toml:main" +check-vcs-permalinks = "pre_commit_hooks.check_vcs_permalinks:main" +check-xml = "pre_commit_hooks.check_xml:main" +check-yaml = "pre_commit_hooks.check_yaml:main" +debug-statement-hook = "pre_commit_hooks.debug_statement_hook:main" +destroyed-symlinks = "pre_commit_hooks.destroyed_symlinks:main" +detect-aws-credentials = "pre_commit_hooks.detect_aws_credentials:main" +detect-private-key = "pre_commit_hooks.detect_private_key:main" +double-quote-string-fixer = "pre_commit_hooks.string_fixer:main" +end-of-file-fixer = "pre_commit_hooks.end_of_file_fixer:main" +file-contents-sorter = "pre_commit_hooks.file_contents_sorter:main" +fix-byte-order-marker = "pre_commit_hooks.fix_byte_order_marker:main" +forbid-new-submodules = "pre_commit_hooks.forbid_new_submodules:main" +mixed-line-ending = "pre_commit_hooks.mixed_line_ending:main" +name-tests-test = "pre_commit_hooks.tests_should_end_in_test:main" +no-commit-to-branch = "pre_commit_hooks.no_commit_to_branch:main" +pre-commit-hooks-removed = "pre_commit_hooks.removed:main" +pretty-format-json = "pre_commit_hooks.pretty_format_json:main" +requirements-txt-fixer = "pre_commit_hooks.requirements_txt_fixer:main" +sort-simple-yaml = "pre_commit_hooks.sort_simple_yaml:main" +trailing-whitespace-fixer = "pre_commit_hooks.trailing_whitespace_fixer:main" + +[project.urls] +homepage = "https://github.com/pre-commit/pre-commit-hooks" + +[tool.coverage.run] +plugins = ["covdefaults"] + +[tool.mypy] +check_untyped_defs = true +disallow_any_generics = true +disallow_incomplete_defs = true +disallow_untyped_defs = true +warn_redundant_casts = true +warn_unused_ignores = true + +[[tool.mypy.overrides]] +module = [ + "tests.*", + "testing.*" +] +disallow_untyped_defs = false + +[tool.setuptools.packages.find] +exclude = [ + "tests*", + "testing*" +] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index c5e6e0bd..00000000 --- a/setup.cfg +++ /dev/null @@ -1,82 +0,0 @@ -[metadata] -name = pre_commit_hooks -version = 5.0.0 -description = Some out-of-the-box hooks for pre-commit. -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/pre-commit/pre-commit-hooks -author = Anthony Sottile -author_email = asottile@umich.edu -license = MIT -license_files = LICENSE -classifiers = - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: Implementation :: CPython - Programming Language :: Python :: Implementation :: PyPy - -[options] -packages = find: -install_requires = - ruamel.yaml>=0.15 - tomli>=1.1.0;python_version<"3.11" -python_requires = >=3.9 - -[options.packages.find] -exclude = - tests* - testing* - -[options.entry_points] -console_scripts = - check-added-large-files = pre_commit_hooks.check_added_large_files:main - check-ast = pre_commit_hooks.check_ast:main - check-builtin-literals = pre_commit_hooks.check_builtin_literals:main - check-case-conflict = pre_commit_hooks.check_case_conflict:main - check-docstring-first = pre_commit_hooks.check_docstring_first:main - check-executables-have-shebangs = pre_commit_hooks.check_executables_have_shebangs:main - check-json = pre_commit_hooks.check_json:main - check-merge-conflict = pre_commit_hooks.check_merge_conflict:main - check-shebang-scripts-are-executable = pre_commit_hooks.check_shebang_scripts_are_executable:main - check-symlinks = pre_commit_hooks.check_symlinks:main - check-toml = pre_commit_hooks.check_toml:main - check-vcs-permalinks = pre_commit_hooks.check_vcs_permalinks:main - check-xml = pre_commit_hooks.check_xml:main - check-yaml = pre_commit_hooks.check_yaml:main - debug-statement-hook = pre_commit_hooks.debug_statement_hook:main - destroyed-symlinks = pre_commit_hooks.destroyed_symlinks:main - detect-aws-credentials = pre_commit_hooks.detect_aws_credentials:main - detect-private-key = pre_commit_hooks.detect_private_key:main - double-quote-string-fixer = pre_commit_hooks.string_fixer:main - end-of-file-fixer = pre_commit_hooks.end_of_file_fixer:main - file-contents-sorter = pre_commit_hooks.file_contents_sorter:main - fix-byte-order-marker = pre_commit_hooks.fix_byte_order_marker:main - forbid-new-submodules = pre_commit_hooks.forbid_new_submodules:main - mixed-line-ending = pre_commit_hooks.mixed_line_ending:main - name-tests-test = pre_commit_hooks.tests_should_end_in_test:main - no-commit-to-branch = pre_commit_hooks.no_commit_to_branch:main - pre-commit-hooks-removed = pre_commit_hooks.removed:main - pretty-format-json = pre_commit_hooks.pretty_format_json:main - requirements-txt-fixer = pre_commit_hooks.requirements_txt_fixer:main - sort-simple-yaml = pre_commit_hooks.sort_simple_yaml:main - trailing-whitespace-fixer = pre_commit_hooks.trailing_whitespace_fixer:main - -[bdist_wheel] -universal = True - -[coverage:run] -plugins = covdefaults - -[mypy] -check_untyped_defs = true -disallow_any_generics = true -disallow_incomplete_defs = true -disallow_untyped_defs = true -warn_redundant_casts = true -warn_unused_ignores = true - -[mypy-testing.*] -disallow_untyped_defs = false - -[mypy-tests.*] -disallow_untyped_defs = false diff --git a/setup.py b/setup.py deleted file mode 100644 index 3d93aefb..00000000 --- a/setup.py +++ /dev/null @@ -1,4 +0,0 @@ -from __future__ import annotations - -from setuptools import setup -setup()