#* Variables SHELL := /usr/bin/env bash PYTHON := python PYTHONPATH := `pwd` #* Docker variables IMAGE := internet_ml VERSION := latest #* Docs .PHONY: docs-dev docs-dev: mkdocs serve .PHONY: docs-build docs-build: mkdocs build .PHONY: publish publish: poetry build && poetry publish --build --username $PYPI_USERNAME --password $PYPI_PASSWORD #* Poetry .PHONY: poetry-download poetry-download: curl -sSL https://install.python-poetry.org | $(PYTHON) - .PHONY: poetry-remove poetry-remove: curl -sSL https://install.python-poetry.org | $(PYTHON) - --uninstall #* Installation .PHONY: install install: poetry lock -n && poetry export --without-hashes > requirements.txt poetry install -n -poetry run mypy --install-types --non-interactive ./ .PHONY: pre-commit-install pre-commit-install: poetry run pre-commit install #* Formatters .PHONY: codestyle codestyle: poetry run pyupgrade --exit-zero-even-if-changed --py311-plus **/*.py poetry run isort --settings-path pyproject.toml ./ poetry run black --config pyproject.toml ./ poetry run mypy --config pyproject.toml ./ .PHONY: formatting formatting: codestyle #* Linting .PHONY: test test: PYTHONPATH=$(PYTHONPATH) poetry run pytest -c pyproject.toml --cov-report=html --cov=internet_ml tests/ poetry run coverage-badge -o assets/images/coverage.svg -f .PHONY: check-codestyle check-codestyle: poetry run isort --diff --check-only --settings-path pyproject.toml ./ poetry run black --diff --check --config pyproject.toml ./ poetry run darglint --verbosity 2 internet_ml tests .PHONY: mypy mypy: poetry run mypy --config-file pyproject.toml ./ .PHONY: check-safety check-safety: poetry check poetry run safety check --full-report poetry run bandit -ll --recursive internet_ml tests .PHONY: lint lint: test check-codestyle mypy check-safety .PHONY: update-dev-deps update-dev-deps: poetry add --group dev bandit@latest darglint@latest "isort[colors]@latest" mypy@latest pre-commit@latest pydocstyle@latest pylint@latest pytest@latest pyupgrade@latest safety@latest coverage@latest coverage-badge@latest pytest-html@latest pytest-cov@latest poetry add --group dev --allow-prereleases black@latest .PHONY: update-deps update-deps: poetry update --lock .PHONY: update update: update-dev-deps update-deps install #* Container / Docker # Example: make container-build VERSION=latest # Example: make container-build IMAGE=some_name VERSION=0.1.0 .PHONY: container-build container-build: @echo Building container $(IMAGE):$(VERSION) ... docker build \ -t $(IMAGE):$(VERSION) . \ -f ./container/Containerfile --no-cache # Example: make container-remove VERSION=latest # Example: make container-remove IMAGE=some_name VERSION=0.1.0 .PHONY: container-remove container-remove: @echo Removing container $(IMAGE):$(VERSION) ... docker rmi -f $(IMAGE):$(VERSION) #* Cleaning .PHONY: pycache-remove pycache-remove: find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf .PHONY: dsstore-remove dsstore-remove: find . | grep -E ".DS_Store" | xargs rm -rf .PHONY: mypycache-remove mypycache-remove: find . | grep -E ".mypy_cache" | xargs rm -rf .PHONY: ipynbcheckpoints-remove ipynbcheckpoints-remove: find . | grep -E ".ipynb_checkpoints" | xargs rm -rf .PHONY: pytestcache-remove pytestcache-remove: find . | grep -E ".pytest_cache" | xargs rm -rf .PHONY: pkl-remove pytestcache-remove: find . | grep -E ".pkl" | xargs rm -rf .PHONY: log-remove pytestcache-remove: find . | grep -E ".log" | xargs rm -rf .PHONY: env-remove pytestcache-remove: find . | grep -E ".env" | xargs rm -rf .PHONY: env-fishremove pytestcache-remove: find . | grep -E ".env-fish" | xargs rm -rf .PHONY: build-remove build-remove: rm -rf build/ .PHONY: cleanup cleanup: pycache-remove dsstore-remove mypycache-remove ipynbcheckpoints-remove pytestcache-remove pkl-remove log-remove