Use poetry

I'm not sure about this...
This commit is contained in:
IamTheFij 2024-06-07 16:31:02 -07:00
parent 61512de3aa
commit 8e54d7a74d
5 changed files with 43 additions and 83 deletions

1
.gitignore vendored
View File

@ -140,3 +140,4 @@ cython_debug/
tags tags
unhacs.txt unhacs.txt
poetry.lock

View File

@ -5,69 +5,43 @@ ENV := env
.PHONY: default .PHONY: default
default: test default: test
# Creates virtualenv
$(ENV):
python3 -m venv $(ENV)
# Install package and dependencies in virtualenv
$(ENV)/bin/$(NAME): $(ENV)
$(ENV)/bin/pip install -r requirements-dev.txt
# Install tox into virtualenv for running tests
$(ENV)/bin/tox: $(ENV)
$(ENV)/bin/pip install tox
# Install wheel for building packages
$(ENV)/bin/wheel: $(ENV)
$(ENV)/bin/pip install wheel
# Install twine for uploading packages
$(ENV)/bin/twine: $(ENV)
$(ENV)/bin/pip install twine
# Installs dev requirements to virtualenv
.PHONY: devenv
devenv: $(ENV)/bin/$(NAME)
# Generates a smaller env for running tox, which builds it's own env
.PHONY: test-env
test-env: $(ENV)/bin/tox
# Generates a small build env for building and uploading dists
.PHONY: build-env
build-env: $(ENV)/bin/twine $(ENV)/bin/wheel
# Runs package # Runs package
.PHONY: run .PHONY: run
run: $(ENV)/bin/$(NAME) run:
$(ENV)/bin/$(NAME) poetry run $(NAME) list
# Runs tests with tox .PHONY: install
install:
poetry install
.PHONY: devenv
devenv: install
# Runs tests
.PHONY: test .PHONY: test
test: $(ENV)/bin/tox test:
$(ENV)/bin/tox poetry run pytest
# Builds wheel for package to upload # Builds wheel for package to upload
.PHONY: build .PHONY: build
build: $(ENV)/bin/wheel build:
$(ENV)/bin/python setup.py sdist poetry build
$(ENV)/bin/python setup.py bdist_wheel
# Verify that the python version matches the git tag so we don't push bad shas # Verify that the python version matches the git tag so we don't push bad shas
.PHONY: verify-tag-version .PHONY: verify-tag-version
verify-tag-version: verify-tag-version:
$(eval TAG_NAME = $(shell [ -n "$(DRONE_TAG)" ] && echo $(DRONE_TAG) || git describe --tags --exact-match)) $(eval TAG_NAME = $(shell [ -n "$(DRONE_TAG)" ] && echo $(DRONE_TAG) || git describe --tags --exact-match))
test "v$(shell python setup.py -V)" = "$(TAG_NAME)" test "v$(shell poetry version | awk '{print $$2}')" = "$(TAG_NAME)"
# Uses twine to upload to pypi # Upload to pypi
.PHONY: upload .PHONY: upload
upload: verify-tag-version build $(ENV)/bin/twine upload: verify-tag-version build
$(ENV)/bin/twine upload dist/* poetry publish
# Uses twine to upload to test pypi # Uses twine to upload to test pypi
.PHONY: upload-test .PHONY: upload-test
upload-test: verify-tag-version build $(ENV)/bin/twine upload-test: verify-tag-version build
$(ENV)/bin/twine upload --repository-url https://test.pypi.org/legacy/ dist/* poetry publish --repository testpypi
# Cleans all build, runtime, and test artifacts # Cleans all build, runtime, and test artifacts
.PHONY: clean .PHONY: clean
@ -79,20 +53,20 @@ clean:
# Cleans dist and env # Cleans dist and env
.PHONY: dist-clean .PHONY: dist-clean
dist-clean: clean dist-clean: clean
rm -fr ./dist $(ENV) rm -fr ./dist
# Install pre-commit hooks # Install pre-commit hooks
.PHONY: install-hooks .PHONY: install-hooks
install-hooks: devenv install-hooks: devenv
$(ENV)/bin/pre-commit install -f --install-hooks pre-commit install -f --install-hooks
# Generates test coverage # Generates test coverage
.coverage: .coverage:
$(ENV)/bin/tox poetry run pytest
# Builds coverage html # Builds coverage html
htmlcov/index.html: .coverage htmlcov/index.html: .coverage
$(ENV)/bin/coverage html poetry run coverage html
# Opens coverage html in browser (on macOS and some Linux systems) # Opens coverage html in browser (on macOS and some Linux systems)
.PHONY: open-coverage .PHONY: open-coverage
@ -106,7 +80,7 @@ docs-clean:
# Builds docs # Builds docs
docs/build/html/index.html: docs/build/html/index.html:
$(ENV)/bin/tox -e docs @echo TODO: Make docs
# Shorthand for building docs # Shorthand for building docs
.PHONY: docs .PHONY: docs

View File

@ -1,16 +1,24 @@
[build-system] [build-system]
requires = ["setuptools", "wheel"] requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[project] [tool.poetry]
name = "unhacs" name = "unhacs"
version = "0.1.0" version = "0.1.0"
description = "" description = "Command line interface to install Home Assistant Community Store packages"
authors = [{name = "Ian Fijolek", email = "ian@iamthefij.com"}] authors = ["Ian Fijolek <ian@iamthefij.com>"]
requires-python = ">=3.8" license = "MIT"
readme = "README.md"
dependencies = [ [tool.poetry.dependencies]
"requests" python = "^3.11"
] requests = "^2.32.3"
[project.scripts] [tool.poetry.group.dev.dependencies]
black = "^24.4.2"
mypy = "^1.10.0"
pre-commit = "^3.7.1"
types-requests = "^2.32.0.20240602"
[tool.poetry.scripts]
unhacs = 'unhacs.main:main' unhacs = 'unhacs.main:main'

View File

@ -1,6 +0,0 @@
-e .
pytest
coverage
pre-commit
mypy
types-requests

17
tox.ini
View File

@ -1,17 +0,0 @@
[tox]
envlist = py3,pypy3
[testenv]
deps =
-rrequirements-dev.txt
commands =
coverage erase
coverage run --source=unhacs/ -m pytest --capture=no -vv {posargs:tests}
coverage report -m --fail-under 70
pre-commit run --all-files
[testenv:pre-commit]
deps =
pre-commit
commands =
pre-commit {posargs}