22name = " mitreattack-python"
33description = " MITRE ATT&CK python library"
44version = " 5.0.0"
5- authors = [
6- { name = " MITRE ATT&CK" , email = " attack@mitre.org" },
7- ]
5+ authors = [{ name = " MITRE ATT&CK" , email = " attack@mitre.org" }]
86license = { text = " Apache-2.0" }
9- readme = " README.md"
10- requires-python = " >=3.11"
11- dynamic = [ " classifiers" ]
7+ readme = " README.md"
8+ requires-python = " >=3.11,<4.0 "
9+ dynamic = [" classifiers" ]
1210dependencies = [
1311 " colour>=0.1.5" ,
1412 " deepdiff>=6.6.0" ,
@@ -46,9 +44,12 @@ diff_stix = 'mitreattack.diffStix.changelog_helper:main'
4644download_attack_stix = ' mitreattack.download_stix:app'
4745
4846[tool .poetry ]
49- packages = [ { include = " mitreattack" } ]
47+ packages = [{ include = " mitreattack" } ]
5048include = [
51- { path = " mitreattack/navlayers/exporters/fonts/*.ttf" , format = [" sdist" , " wheel" ] },
49+ { path = " mitreattack/navlayers/exporters/fonts/*.ttf" , format = [
50+ " sdist" ,
51+ " wheel" ,
52+ ] },
5253]
5354classifiers = [
5455 " Programming Language :: Python :: 3" ,
@@ -57,31 +58,48 @@ classifiers = [
5758 " Operating System :: OS Independent" ,
5859]
5960
60- [project .optional-dependencies ]
61- docs = [
62- " sphinx>=8.2.3" ,
63- " sphinx_rtd_theme>=3.0.2"
61+ [tool .commitizen ]
62+ version_provider = " pep621" # source of truth is in pyproject.toml
63+ bump_message = " bump: version $current_version → $new_version"
64+ update_changelog_on_bump = true
65+ changelog_incremental = true
66+ legacy_tag_formats = [" v$version" ]
67+ version_files = [
68+ " docs/conf.py:^version = ['\" ](.*)['\" ]" ,
69+ " docs/conf.py:^release = ['\" ](.*)['\" ]" ,
6470]
6571
6672[tool .poetry .group .dev ]
6773optional = true
6874
6975[tool .poetry .group .dev .dependencies ]
7076check-wheel-contents = " >=0.6.1"
77+ commitizen = " >=4.8.3"
7178pytest = " >=8.3.5"
7279pytest-cov = " >=6.0.0"
7380pytest-dotenv = " >=0.5.2"
7481ruff = " >=0.9.9"
7582responses = " >=0.25.8"
7683
84+ [tool .poetry .group .docs ]
85+ optional = true
86+
87+ [tool .poetry .group .docs .dependencies ]
88+ sphinx = " >=8.2.3"
89+ sphinx_rtd_theme = " >=3.0.2"
90+
7791[build-system ]
7892requires = [" poetry-core>=2.0.0,<3.0.0" ]
7993build-backend = " poetry.core.masonry.api"
8094
8195[tool .ruff ]
8296line-length = 120
97+ extend-exclude = [" tests/resources/" , " examples/" , " __init__.py" ]
8398
8499[tool .ruff .lint ]
100+ ignore = [
101+ " E501" , # line-too-long
102+ ]
85103# On top of the defaults (E, F), enable pydocstyle (D), isort (I), and bugbear (B).
86104select = [" E" , " F" , " D" , " I" , " B" ]
87105
0 commit comments