186 lines
4.8 KiB
TOML
186 lines
4.8 KiB
TOML
[build-system]
|
|
requires = ["uv_build>=0.9.4,<0.10.0"]
|
|
build-backend = "uv_build"
|
|
|
|
[project]
|
|
name = "df-tools"
|
|
version = "0.1.0"
|
|
description = "This boiler plate hasn't been changed."
|
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
keywords = ['python','cli']
|
|
license = "MIT"
|
|
license-files = ["LICEN[CS]E*"]
|
|
authors = [{ name = "BipolarExpedition(Doc)", email = "lastdoc39@gmail.com" }]
|
|
maintainers = [{ name = "BipolarExpedition(Doc)", email = "lastdoc39@gmail.com" }]
|
|
requires-python = ">=3.12"
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3.12",
|
|
"License :: OSI Approved :: MIT License",
|
|
]
|
|
dependencies = [
|
|
"rich",
|
|
"typer",
|
|
"loguru",
|
|
"pydantic",
|
|
"pydantic-settings",
|
|
"tomli_w",
|
|
"opencv-python>=4.11.0.86",
|
|
"numpy>=2.4.1",
|
|
"requests>=2.32.5",
|
|
"stable-diffusion-cpp-python>=0.4.2",
|
|
"dbus-python>=1.4.0",
|
|
"pillow>=12.1.0",
|
|
"pynput>=1.8.1",
|
|
]
|
|
|
|
# TODO: Uncomment the valid links
|
|
[project.urls]
|
|
# Issues = "https://github.com/BipolarExpedition/df_tools/issues"
|
|
# Documentation = "https://df-tools.readthedocs.org"
|
|
# Changelog = "https://github.com/BipolarExpedition/df_tools/blob/master/CHANGELOG.md"
|
|
# Repository = "https://github.com/BipolarExpedition/df_tools.git"
|
|
# Homepage = "https://github.com/BipolarExpedition/df_tools"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=8",
|
|
"pytest-cov>=7",
|
|
# "pytest-mock", # As needed
|
|
"ruff>=0.14",
|
|
"mypy>=1",
|
|
]
|
|
|
|
[project.scripts]
|
|
df-tools = "df_tools.cli:app"
|
|
|
|
[tool.pyright]
|
|
include = ["src", "tests"]
|
|
exclude = [
|
|
"**/*",
|
|
"**/node_modules",
|
|
"**/__pycache__",
|
|
".venv",
|
|
".git", "**/.*"
|
|
]
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
strict = false
|
|
typeCheckingMode = "standard"
|
|
reportMissingImports = true
|
|
reportOptionalMemberAccess = false
|
|
reportArgumentType = false
|
|
|
|
[tool.pytest.ini_options]
|
|
pythonpath = ["src","src/df_tools"]
|
|
testpaths = ["tests"]
|
|
addopts = [
|
|
"--import-mode=importlib",
|
|
"--cov=df_tools",
|
|
"--cov-report=term-missing",
|
|
"-ra"
|
|
]
|
|
norecursedirs = [
|
|
".git",
|
|
".venv",
|
|
".secrets",
|
|
"design_docs",
|
|
"docs"
|
|
]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.12"
|
|
files = ["src", "tests"]
|
|
check_untyped_defs = true
|
|
disallow_any_generics = true
|
|
ignore_missing_imports = true
|
|
no_implicit_optional = true
|
|
show_error_codes = true
|
|
strict = false
|
|
warn_return_any = true
|
|
warn_unused_ignores = true
|
|
exclude = [
|
|
"docs",
|
|
".secrets",
|
|
"design_docs"
|
|
]
|
|
# Optional depending on project
|
|
# plugins = "pydantic.mypy"
|
|
|
|
[tool.coverage.report]
|
|
skip_empty = true
|
|
exclude_lines = [
|
|
"nocov",
|
|
"pragma: no cover",
|
|
"if __name__ == \"__main__\":",
|
|
"raise NotImplementedError"
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
branch = true
|
|
parallel = true
|
|
source = ["src"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|
|
indent-width = 4
|
|
line-length = 120
|
|
respect-gitignore = true
|
|
extend-exclude = [
|
|
".secrets",
|
|
"design_docs"
|
|
]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
skip-magic-trailing-comma = false
|
|
line-ending = "auto"
|
|
|
|
[tool.ruff.lint]
|
|
# Defaults are ["E4", "E7", "E9", "F"]
|
|
extend-select = [
|
|
"B", # flake8-bugbear: Opinionated rules for common design problems/potential bugs.
|
|
"I", # isort: Sort imports automatically (integrates well with VS Code's "Organize Imports").
|
|
"UP", # pyupgrade: Flags code that can be updated to newer Python versions.
|
|
"C4", # flake8-comprehensions: Encourages better comprehension usage.
|
|
"SIM", # flake8-simplify: Suggests code simplifications.
|
|
"ISC", # flake8-implicit-str-concat: Catches implicit string concatenations.
|
|
"ASYNC", # async/with errors
|
|
"S", # flake8-bandit, security checks
|
|
"A", # flake8-builtins, shadowing builtins
|
|
"INT", # flake8-gettext, international strings formatting
|
|
"ICN", # flake8-import-conventions. avoid unsupported import aliases
|
|
"FAST", # FastAPI checks
|
|
"PT", # pytest checks
|
|
"PTH", # use pathlib
|
|
"T20", # (flake8-print) catch accidental print() statements
|
|
|
|
]
|
|
# Consider: LOG, G, DOC
|
|
extend-ignore = [
|
|
"B008", # occaisonal false positives
|
|
"S104",
|
|
"S110","S112", # Log exceptions
|
|
"S303","S324", # Insecure hash functions
|
|
"S311", # suspicious-non-cryptographic-random-usage
|
|
"S404", # subprocess module
|
|
"S602","S603","S604", #
|
|
"S605","S606", "S607", #
|
|
"I001"
|
|
]
|
|
fixable = ["ALL"]
|
|
unfixable = []
|
|
# Allow unused variables when underscore-prefixed.
|
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "google"
|
|
|
|
# # 4. Ignore `E402` (import violations) in all `__init__.py` files, and in selected subdirectories.
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["E402"]
|
|
"**/{tests,docs,tools}/*" = ["E402", "S101"]
|
|
"src/**/cli.py" = ["T201"] # # Allow print() only in CLI commands
|