diff --git a/.gitignore b/.gitignore index c208581..aff86fa 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ build .cache .pytest_cache .tox -.python-version +uv.lock diff --git a/Makefile b/Makefile deleted file mode 100644 index bf1b7fe..0000000 --- a/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -DEFAULT_GOAL := help - -.PHONY: help -help: - @echo "Available rules:" - @echo "" - @fgrep -h "##" Makefile | fgrep -v fgrep | sed 's/\(.*\):.*##/\1:/' - -.PHONY: clean -clean: ## Clean build artifacts - rm -rf build dist siggen.egg-info .tox .pytest-cache - rm -rf docs/_build/* - find siggen/ tests/ -name __pycache__ | xargs rm -rf - find siggen/ tests/ -name '*.pyc' | xargs rm -rf - -.PHONY: format -format: ## Format Python files - tox exec -e py39-lint -- ruff format - -.PHONY: lint -lint: ## Lint files - tox -e py39-lint - -.PHONY: test -test: ## Run tests - tox diff --git a/README.rst b/README.rst index bdf991a..f3af60d 100644 --- a/README.rst +++ b/README.rst @@ -16,18 +16,30 @@ This is an extraction of the Socorro crash signature generation code. Installing ========== -socorro-siggen is available on `PyPI `_. You -can install for library usage with:: +socorro-siggen is available on `PyPI `_. + +pip +--- + +Install library:: $ pip install siggen -You can install for cli usage with:: +Install library with command-line interface:: $ pip install 'siggen[cli]' -Install for hacking:: - $ pip install -r requirements-dev.txt +uv +-- + +Install library:: + + $ uv tool install siggen + +Install library with command-line interface:: + + $ uv tool install 'siggen[cli]' Versioning @@ -37,9 +49,9 @@ siggen is an extraction of the signature generation code in Socorro. If you are running signature generation on crash data and you want signatures to match equivalent crash reports in Socorro, then you need to keep siggen up-to-date. -siggen uses a calver scheme: +siggen uses a calver scheme:: -MAJOR.MINOR.yyyymmdd + MAJOR.MINOR.yyyymmdd * MAJOR: indicates incompatible API changes -- listed as "big changes" in HISTORY.rst @@ -295,3 +307,18 @@ That produces this output:: "proto_signature": "SomeFunc | SomeOtherFunc", "signature": "SomeFunc" } + + +Development +=========== + +Requirements: Python, `uv __, `just +`__ + +Create a development environment:: + + $ just devenv + +View `just `__ recipes:: + + $ just diff --git a/justfile b/justfile new file mode 100644 index 0000000..f66018d --- /dev/null +++ b/justfile @@ -0,0 +1,26 @@ +@_default: + just --list + +# Build a dev environment +devenv: + uv sync --extra dev --refresh --upgrade + +# Clean development and build artifacts +clean: + rm -rf .venv uv.lock + rm -rf build dist siggen.egg-info .tox .pytest-cache + rm -rf docs/_build/* + find siggen/ -name __pycache__ | xargs rm -rf + find siggen/ -name '*.pyc' | xargs rm -rf + +# Format files +format: devenv + uv run tox exec -e py39-lint -- ruff format + +# Lint files +lint: devenv + uv run tox -e py39-lint + +# Run tests and linting +test *args: devenv + uv run tox {{args}} diff --git a/pyproject.toml b/pyproject.toml index af2cde8..21d0236 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ dev = [ "ruff", "tox", "tox-gh-actions", + "tox-uv", "twine", "wheel", ] @@ -79,6 +80,7 @@ envlist = py311 py312 py313 +uv_python_preference = only-managed [gh-actions] python =