@@ -45,15 +45,27 @@ dependencies = [
4545
4646[project .optional-dependencies ]
4747dev = [
48+ # Testing
4849 " pytest>=7.0.0" ,
4950 " pytest-cov>=4.0.0" ,
5051 " pytest-benchmark>=4.0.0" ,
51- " black>=22.0.0" ,
52+ " pytest-xdist>=3.0.0" ,
53+
54+ # Code Quality
5255 " ruff>=0.1.0" ,
56+ " black>=22.0.0" ,
5357 " mypy>=1.0.0" ,
58+
59+ # Security
5460 " bandit>=1.7.0" ,
61+ " safety>=2.0.0" ,
62+
63+ # Build & Release
5564 " build>=0.10.0" ,
5665 " twine>=4.0.0" ,
66+ " python-semantic-release>=8.0.0" ,
67+
68+ # Development Tools
5769 " pre-commit>=2.20.0" ,
5870 " tox>=4.0.0" ,
5971 " tomli>=2.0.0; python_version<'3.11'" ,
@@ -75,6 +87,46 @@ Repository = "https://github.com/bauer-group/nocodb-simple-client.git"
7587"Bug Tracker" = " https://github.com/bauer-group/nocodb-simple-client/issues"
7688Changelog = " https://github.com/bauer-group/nocodb-simple-client/blob/main/CHANGELOG.md"
7789
90+ # ============================================================================
91+ # SEMANTIC RELEASE CONFIGURATION
92+ # ============================================================================
93+ [tool .semantic_release ]
94+ # Version management
95+ version_toml = [" pyproject.toml:project.version" ] # Where to update version
96+ version_variables = [
97+ " src/nocodb_simple_client/__init__.py:__version__" , # Optional: update __version__ in code
98+ ]
99+
100+ # Git & Release configuration
101+ branch = " main"
102+ build_command = " python -m build"
103+ upload_to_vcs_release = true
104+
105+ # Changelog configuration
106+ changelog_file = " CHANGELOG.md"
107+ changelog_sections = [
108+ {section = " breaking" , name = " Breaking Changes" },
109+ {section = " feat" , name = " Features" },
110+ {section = " fix" , name = " Bug Fixes" },
111+ {section = " perf" , name = " Performance Improvements" },
112+ {section = " refactor" , name = " Code Refactoring" },
113+ {section = " style" , name = " Code Style" },
114+ {section = " build" , name = " Build System" },
115+ {section = " docs" , name = " Documentation" },
116+ {section = " test" , name = " Tests" },
117+ {section = " ci" , name = " CI/CD" },
118+ {section = " chore" , name = " Chores" },
119+ {section = " revert" , name = " Reverts" },
120+ ]
121+
122+ # Commit parsing
123+ commit_parser = " conventional"
124+
125+ [tool .semantic_release .commit_parser_options ]
126+ allowed_tags = [" feat" , " fix" , " docs" , " style" , " refactor" , " perf" , " test" , " chore" , " ci" , " build" , " revert" ]
127+ minor_tags = [" feat" ]
128+ patch_tags = [" fix" , " perf" ]
129+
78130[tool .hatch .version ]
79131path = " src/nocodb_simple_client/__init__.py"
80132
@@ -111,6 +163,13 @@ markers = [
111163[tool .coverage .run ]
112164source = [" src/nocodb_simple_client" ]
113165branch = true
166+ omit = [
167+ " */tests/*" ,
168+ " */test_*" ,
169+ " */__pycache__/*" ,
170+ " .tox/*" ,
171+ " .venv/*" ,
172+ ]
114173
115174[tool .coverage .report ]
116175exclude_lines = [
@@ -125,6 +184,8 @@ exclude_lines = [
125184 " class .*\\ bProtocol\\ ):" ,
126185 " @(abc\\ .)?abstractmethod" ,
127186]
187+ show_missing = true
188+ skip_covered = false
128189
129190# Code formatting
130191[tool .black ]
0 commit comments