Files
pyscn/pyproject.toml
DaisukeYoda 44ddf8d3d4 chore: update development status to stable for v1.0.0
Update PyPI classifier from Beta to Production/Stable as we prepare
for the first stable release.
2025-10-05 20:45:19 +09:00

142 lines
3.3 KiB
TOML

[build-system]
requires = ["setuptools>=64", "setuptools_scm>=8", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pyscn"
dynamic = ["version"]
description = "An intelligent Python code quality analyzer with architectural guidance"
readme = "README.md"
license = {file = "LICENSE"}
authors = [
{name = "DaisukeYoda", email = "daisukeyoda@users.noreply.github.com"}
]
maintainers = [
{name = "DaisukeYoda", email = "daisukeyoda@users.noreply.github.com"}
]
keywords = [
"python",
"static-analysis",
"code-quality",
"complexity",
"linter",
"ast",
"cfg",
"dead-code"
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed",
]
requires-python = ">=3.8"
dependencies = []
[project.optional-dependencies]
dev = [
"pytest>=6.0",
"build>=0.7.0",
"twine>=3.0.0",
]
[project.scripts]
pyscn = "pyscn.__main__:main"
[project.urls]
Homepage = "https://github.com/ludo-technologies/pyscn"
Documentation = "https://github.com/ludo-technologies/pyscn/tree/main/docs"
Repository = "https://github.com/ludo-technologies/pyscn"
Issues = "https://github.com/ludo-technologies/pyscn/issues"
Changelog = "https://github.com/ludo-technologies/pyscn/blob/main/CHANGELOG.md"
[tool.setuptools]
packages = ["pyscn"]
package-dir = {"" = "python/src"}
[tool.setuptools.package-data]
pyscn = ["bin/*"]
[tool.setuptools.exclude-package-data]
"*" = ["*.py[co]", "__pycache__", "*.so", "*.pyd"]
[tool.setuptools_scm]
# Default configuration - gets version from git tags
[build]
exclude = [
"*.pyc",
"*.pyo",
"__pycache__",
".git",
".gitignore",
"*.md",
"tests/",
"docs/"
]
# pyscn clone detection configuration (flat structure)
[tool.pyscn.clones]
# Analysis settings
min_lines = 5
min_nodes = 10
max_edit_distance = 50.0
ignore_literals = false
ignore_identifiers = false
cost_model_type = "python"
# Threshold settings for clone type classification
type1_threshold = 0.98
type2_threshold = 0.95
type3_threshold = 0.85
type4_threshold = 0.70
similarity_threshold = 0.8
# Input settings
paths = ["."]
recursive = true
include_patterns = ["*.py"]
exclude_patterns = ["test_*.py", "*_test.py", "__pycache__/*"]
# Output settings
format = "text"
show_details = false
show_content = false
sort_by = "similarity"
group_clones = true
# Filtering settings
min_similarity = 0.0
max_similarity = 1.0
enabled_clone_types = ["type1", "type2", "type3", "type4"]
max_results = 10000
# Grouping settings
grouping_mode = "connected"
grouping_threshold = 0.85
k_core_k = 2
# LSH acceleration settings
lsh_enabled = "auto"
lsh_auto_threshold = 500
lsh_similarity_threshold = 0.78
lsh_bands = 32
lsh_rows = 4
lsh_hashes = 128
# Performance settings
max_memory_mb = 100
batch_size = 100
enable_batching = true
max_goroutines = 4
timeout_seconds = 300