aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/.flake87
-rw-r--r--python/Makefile30
2 files changed, 32 insertions, 5 deletions
diff --git a/python/.flake8 b/python/.flake8
new file mode 100644
index 00000000..49935ced
--- /dev/null
+++ b/python/.flake8
@@ -0,0 +1,7 @@
+[flake8]
+# TODO: ANN for better annotation coverage
+select = C,E,F,W
+ignore = F405,F403,W503,E231,E203,E501,E226,E711,E713,E265,ANN101,ANN204,ANN102
+max-complexity = 20
+exclude = .git,__pycache__,.venv
+max-line-length = 120
diff --git a/python/Makefile b/python/Makefile
index 182bc739..4c8ff45f 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -6,14 +6,34 @@ SHELL = /bin/bash
help: ## Print info about all commands
@echo "Commands:"
@echo
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[01;32m%-20s\033[0m %s\n", $$1, $$2}'
+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[01;32m%-20s\033[0m %s\n", $$1, $$2}'
+
+.PHONY: dep
+dep: ## Create local virtualenv using pipenv
+ pipenv install --dev
+
+.PHONY: lint
+lint: ## Run lints (eg, flake8, mypy)
+ pipenv run flake8 *.py tests/ fatcat_web/ fatcat_tools/ --select=E9,F63,F7,F82
+ pipenv run flake8 *.py tests/ fatcat_web/ fatcat_tools/ --exit-zero
+
+.PHONY: mypy
+mypy: ## Run mypy type checks (not part of regular lint yet)
+ pipenv run mypy *.py fatcat_web/ fatcat_tools/ --ignore-missing-imports
+
+# Not ready for 'black' yet
+#.PHONY: fmt
+#fmt: ## Run code formating on all source code
+# pipenv run black *.py fatcat_web/ fatcat_tools/ tests/
.PHONY: test
-test: ## Run all tests and lints
- curl --silent localhost:9411/v0/changelog > /dev/null || (echo "API not running locally, bailing early from tests" && exit 1)
+test: lint ## Run all tests and lints
+ @curl --silent localhost:9411/v0/changelog > /dev/null || (echo "API not running locally, bailing early from tests" && exit 1)
pipenv run pytest
- pipenv run pylint -j 0 -E fatcat*.py fatcat_tools fatcat_web tests/*.py
- pipenv run flake8 tests/ fatcat_web/ fatcat_tools/ *.py --count --select=E9,F63,F7,F82 --show-source --statistics
+
+.PHONY: coverage
+coverage: ## Run all tests with coverage
+ pipenv run pytest --cov
.PHONY: test-cli
test-cli: ## Run CLI commands. WARNING: may mutate local database