04d18ee1f7
- Create pyproject.toml with python-semantic-release configuration - Add release.yml workflow for automated releases - Add commitlint pre-commit hook for conventional commits validation - Add python-semantic-release to dev dependencies Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
200 lines
4.6 KiB
TOML
200 lines
4.6 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=45", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "docuelevate"
|
|
dynamic = ["version"]
|
|
description = "Intelligent document processing system with AI-powered metadata extraction"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
license = {text = "Apache-2.0"}
|
|
authors = [
|
|
{name = "Christian Louis", email = "christianlouis@users.noreply.github.com"}
|
|
]
|
|
keywords = ["document", "processing", "ocr", "ai", "metadata", "extraction"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/christianlouis/DocuElevate"
|
|
Documentation = "https://github.com/christianlouis/DocuElevate/tree/main/docs"
|
|
Repository = "https://github.com/christianlouis/DocuElevate"
|
|
Issues = "https://github.com/christianlouis/DocuElevate/issues"
|
|
Changelog = "https://github.com/christianlouis/DocuElevate/blob/main/CHANGELOG.md"
|
|
|
|
[tool.setuptools.dynamic]
|
|
version = {file = "VERSION"}
|
|
|
|
[tool.semantic_release]
|
|
version_toml = []
|
|
version_variables = ["VERSION:__version__"]
|
|
version_source = "tag"
|
|
commit_version_number = true
|
|
tag_format = "v{version}"
|
|
major_on_zero = false
|
|
allow_zero_version = true
|
|
build_command = """
|
|
chmod +x scripts/generate_build_metadata.sh
|
|
./scripts/generate_build_metadata.sh
|
|
"""
|
|
|
|
[tool.semantic_release.branches.main]
|
|
match = "main"
|
|
prerelease = false
|
|
|
|
[tool.semantic_release.changelog]
|
|
template_dir = "templates"
|
|
changelog_file = "CHANGELOG.md"
|
|
exclude_commit_patterns = [
|
|
"^chore\\(release\\):",
|
|
"^Merge",
|
|
"^Bump version",
|
|
]
|
|
|
|
[tool.semantic_release.changelog.environment]
|
|
block_start_string = "{%"
|
|
block_end_string = "%}"
|
|
variable_start_string = "{{"
|
|
variable_end_string = "}}"
|
|
comment_start_string = "{#"
|
|
comment_end_string = "#}"
|
|
trim_blocks = false
|
|
lstrip_blocks = false
|
|
newline_sequence = "\n"
|
|
keep_trailing_newline = false
|
|
extensions = []
|
|
autoescape = true
|
|
|
|
[tool.semantic_release.commit_parser_options]
|
|
allowed_tags = [
|
|
"feat",
|
|
"fix",
|
|
"docs",
|
|
"style",
|
|
"refactor",
|
|
"perf",
|
|
"test",
|
|
"build",
|
|
"ci",
|
|
"chore",
|
|
]
|
|
minor_tags = ["feat"]
|
|
patch_tags = ["fix", "perf"]
|
|
default_bump_level = 0
|
|
|
|
[tool.semantic_release.remote]
|
|
name = "origin"
|
|
type = "github"
|
|
ignore_token_for_push = false
|
|
|
|
[tool.semantic_release.remote.token]
|
|
env = "GH_TOKEN"
|
|
|
|
[tool.semantic_release.publish]
|
|
dist_glob_patterns = []
|
|
upload_to_vcs_release = true
|
|
upload_to_pypi = false
|
|
upload_to_repository = false
|
|
|
|
# Black configuration
|
|
[tool.black]
|
|
line-length = 120
|
|
target-version = ['py311']
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# directories
|
|
\.eggs
|
|
| \.git
|
|
| \.hg
|
|
| \.mypy_cache
|
|
| \.tox
|
|
| \.venv
|
|
| build
|
|
| dist
|
|
| migrations
|
|
)/
|
|
'''
|
|
|
|
# isort configuration
|
|
[tool.isort]
|
|
profile = "black"
|
|
line_length = 120
|
|
skip_gitignore = true
|
|
known_first_party = ["app"]
|
|
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
|
|
|
|
# pytest configuration
|
|
[tool.pytest.ini_options]
|
|
minversion = "7.0"
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
addopts = [
|
|
"-v",
|
|
"--strict-markers",
|
|
"--strict-config",
|
|
"--cov=app",
|
|
"--cov-report=term-missing",
|
|
"--cov-report=html",
|
|
"--cov-branch",
|
|
]
|
|
markers = [
|
|
"unit: Unit tests for individual functions/methods",
|
|
"integration: Integration tests for API endpoints and workflows",
|
|
"slow: Tests that take significant time to run",
|
|
"security: Security-related tests",
|
|
"requires_external: Tests requiring external services (OpenAI, Azure, etc.)",
|
|
"requires_db: Tests requiring database",
|
|
"requires_redis: Tests requiring Redis",
|
|
]
|
|
|
|
# mypy configuration
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = false
|
|
disallow_incomplete_defs = false
|
|
check_untyped_defs = true
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_no_return = true
|
|
warn_unreachable = true
|
|
strict_equality = true
|
|
ignore_missing_imports = true
|
|
|
|
# Coverage configuration
|
|
[tool.coverage.run]
|
|
source = ["app"]
|
|
omit = [
|
|
"*/tests/*",
|
|
"*/migrations/*",
|
|
"*/__pycache__/*",
|
|
"*/venv/*",
|
|
"*/env/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
precision = 2
|
|
show_missing = true
|
|
skip_covered = false
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
"@abstractmethod",
|
|
]
|