Use poetry
I'm not sure about this...
This commit is contained in:
parent
61512de3aa
commit
8e54d7a74d
1
.gitignore
vendored
1
.gitignore
vendored
@ -140,3 +140,4 @@ cython_debug/
|
|||||||
|
|
||||||
tags
|
tags
|
||||||
unhacs.txt
|
unhacs.txt
|
||||||
|
poetry.lock
|
||||||
|
76
Makefile
76
Makefile
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
-e .
|
|
||||||
pytest
|
|
||||||
coverage
|
|
||||||
pre-commit
|
|
||||||
mypy
|
|
||||||
types-requests
|
|
17
tox.ini
17
tox.ini
@ -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}
|
|
Loading…
Reference in New Issue
Block a user