https://github.com/atticuszeller/python-uv-package
publish your python package with uv
https://github.com/atticuszeller/python-uv-package
Last synced: 27 days ago
JSON representation
publish your python package with uv
- Host: GitHub
- URL: https://github.com/atticuszeller/python-uv-package
- Owner: AtticusZeller
- License: mit
- Created: 2024-11-30T05:13:42.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-04T17:08:26.000Z (2 months ago)
- Last Synced: 2025-08-04T20:38:50.751Z (2 months ago)
- Language: Python
- Size: 15.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Python Template with UV
[](https://github.com/astral-sh/uv)
[](https://github.com/astral-sh/ruff)[](https://github.com/atticuszeller/python-uv)
[](https://github.com/atticuszeller/python-uv/actions/workflows/main.yml)
[](https://github.com/atticuszeller/python-uv/actions/workflows/main.yml)## Feature
### CI/CD
1. publish your package to pypi
2. test matrix
3. mkdocs-materialmkdocs deps
```bash
uv add mkdocs-material pymdown-extensions mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-obsidian-bridge mkdocs-publisher --optional mkdocs
```### pre-commit
1. basic `pre-commit-hooks`
2. `codespell check`
3. `ruff-pre-commit`### Lint and Format with Ruff
```toml
[tool.ruff]
# cover and extend the default config in https://docs.astral.sh/ruff/configuration/
extend-exclude = [""]
target-version = "py310"[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
"ARG001", # unused arguments in functions
]
ignore = [
"E501", # line too long, handled by black
"B008", # do not perform function calls in argument defaults
"W191", # indentation contains tabs
"B904", # Allow raising exceptions without from e, for HTTPException
"COM819", # Trailing comma prohibited
"D100", # Missing docstring in public module(file)
"D104", # Missing docstring in public package
"D203", # 1 blank line required before class docstring
"E201", # Whitespace after '('
"E202", # Whitespace before ')'
"E203", # Whitespace before ':'
"E221", # Multiple spaces before operator
"E241", # Multiple spaces after ','
"E251", # Unexpected spaces around keyword / parameter equals
"W291", # Trailing whitespace
"W293", # Blank line contains whitespace
]isort = { combine-as-imports = true , split-on-trailing-comma = false }
# Avoid trying to fix flake8-bugbear (`B`) violations.
unfixable = ["B"][tool.ruff.format]
docstring-code-format = true
skip-magic-trailing-comma = true
```### Mypy and Pytest
```toml
[tool.pytest.ini_options]
# Set additional command line options for pytest:
# -r: show extra test summary info
# X: show extra info on xfailed tests
# s: don't capture stdout (allow print statements)
# --strict-config: any warnings about configuration are treated as errors
# --strict-markers: treat unregistered markers as errors
addopts = "-rXs --strict-config --strict-markers"
xfail_strict = true # Treat tests that are marked as xfail but pass as test failures
filterwarnings = ["error"] # Treat all warnings as errors[tool.coverage.report]
fail_under = 100
show_missing = true
skip_covered = true
```
todo:codecov ci and replace coverage with it### git-cliff
We follow a specific format for commit messages to maintain a clear and organized project history.
with `git-cliff` default config- `feat:` New features or enhancements
- `fix:` Bug fixes
- `doc:` Documentation updates
- `perf:` Performance improvements
- `refactor:` Code refactoring without adding features or fixing bugs
- `style:` Code style changes (formatting, missing semi-colons, etc.)
- `test:` Adding or modifying tests
- `chore:` Routine tasks, maintenance, or tooling changes
- `revert:` Reverting a previous commit
### copier