diff --git a/mkdocs.yaml b/mkdocs.yaml index 05612c2..5d1d0a3 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -26,13 +26,23 @@ extra_css: plugins: - search - - mkdocstrings + - mkdocstrings: + handlers: + python: + options: + line_length: 80 + show_source: false + show_root_toc_entry: false + separate_signature: true + show_signature_annotations: true markdown_extensions: - admonition - codehilite - extra - pymdownx.superfences + - toc: + permalink: true nav: - Home: index.md diff --git a/pyproject.toml b/pyproject.toml index 9aa1710..26d066f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,14 +9,14 @@ build-backend = "setuptools.build_meta" name = "${REPO_NAME}" description = "${REPO_DESCRIPTION}" authors = [ - { name = "${REPO_OWNER_TITLE}", email = "mail@PLACEHOLDER.to" }, + { name = "${REPO_OWNER_TITLE}", email = ... }, ] maintainers = [ - { name = "${REPO_OWNER_TITLE}", email = "mail@PLACEHOLDER.to" }, + { name = "${REPO_OWNER_TITLE}", email = ... }, ] requires-python = ">=3.9, <4.0" keywords = [ - + ... ] license = { text = "Apache Software License Version 2.0" } classifiers = [ @@ -30,6 +30,7 @@ classifiers = [ # "Intended Audience :: Developers", # "Framework :: AsyncIO", # "Topic :: Internet", + ... ] dynamic = [ "dependencies", @@ -39,32 +40,34 @@ dynamic = [ [project.optional-dependencies] full = [ - + ... ] dev = [ - "black", - "build", - "coverage[toml]", - "flake8", - "mkdocs-material", - "mkdocstrings[python]", - "mypy", + "black==23.3.0", + "build==0.10.0", + "coverage[toml]==7.2.7", + "isort==5.12.0", + "mkdocs-material==9.1.17", + "mkdocstrings[python]==0.22.0", + "mypy==1.4.0", + "ruff==0.0.275", ] [project.urls] -repository = "https://github.com/${REPO_OWNER_LOWER}/${REPO_NAME_LOWER}" -bug_tracker = "https://github.com/${REPO_OWNER_LOWER}/${REPO_NAME_LOWER}/issues" -documentation = "http://${REPO_OWNER_LOWER}.github.io/${REPO_NAME_LOWER}" +"Repository" = "https://github.com/${REPO_OWNER_LOWER}/${REPO_NAME_LOWER}" +"Issue Tracker" = "https://github.com/${REPO_OWNER_LOWER}/${REPO_NAME_LOWER}/issues" +"Documentation" = "http://${REPO_OWNER_LOWER}.github.io/${REPO_NAME_LOWER}" [tool.setuptools.dynamic] dependencies = { file = "requirements/common.txt" } -readme = { file = ["README.md"] } -version = {attr = "PACKAGE_NAME_PLACEHOLDER.__version__"} +readme = { file = ["README.md"], content-type = "text/markdown" } +version = {attr = ..."${REPO_NAME}.__version__"} -######### -# Mypy: # +######################### +# Static type checking: # [tool.mypy] +cache_dir = ".cache/mypy" files = [ "src/", "tests/", @@ -73,13 +76,14 @@ warn_unused_configs = true strict = true show_error_codes = true plugins = [ - +... ] -############# -# Coverage: # +####################### +# Unit test coverage: # [tool.coverage.run] +data_file = ".cache/coverage" source = [ "src/", ] @@ -100,3 +104,45 @@ exclude_lines = [ omit = [ "tests/*", ] + +############################### +# Linting and style checking: # + +[tool.ruff] +cache-dir = ".cache/ruff" +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # pyflakes + "D", # pydocstyle + "C", # flake8-comprehensions + "B", # flake8-bugbear + "PL", # pylint + "RUF", # ruff-specific +] +ignore = [ + "E501", # Line too long -> handled by black + "D203", # 1 blank line required before class docstring -> D211 is better + "D212", # Multi-line docstring summary should start at the first line -> ugly, D212 is better + "D401", # First line of docstring should be in imperative mood -> no, it shouldn't + "D407", # Missing dashed underline after section -> different docstring style +] + +[tool.ruff.per-file-ignores] +"src/**/__init__.py" = [ + "D104", # Missing docstring in public package + "F401", # {...} imported but unused +] +"tests/*.py" = [ + "D100", # Missing docstring in public module + "D101", # Missing docstring in public class + "D102", # Missing docstring in public method + "D104", # Missing docstring in public package +] + +################### +# Import sorting: # + +[tool.isort] +profile = "black" +extra_standard_library = ["typing_extensions"] diff --git a/requirements/dev.txt b/requirements/dev.txt index 2124456..a714af6 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,8 +1,9 @@ -r common.txt -black -build -coverage[toml] -flake8 -mkdocs-material -mkdocstrings[python] -mypy +black==23.3.0 +build==0.10.0 +coverage[toml]==7.2.7 +isort==5.12.0 +mkdocs-material==9.1.17 +mkdocstrings[python]==0.22.0 +mypy==1.4.0 +ruff==0.0.275