-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
143 lines (107 loc) · 4.53 KB
/
Makefile
File metadata and controls
143 lines (107 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
.PHONY: clean clean-build clean-pyc clean-test coverage development dist docs help install lint release test
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
from urllib.request import pathname2url
webbrowser.open(sys.argv[1])
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
LOCALES := docs/locales
help:
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-docs: ## remove docs artifacts
rm -f docs/apidoc/ravenpy*.rst
rm -f docs/apidoc/modules.rst
rm -fr docs/locales/fr/LC_MESSAGES/*.mo
$(MAKE) -C docs clean
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -f .coverage
rm -fr .pytest_cache
rm -fr .tox/
rm -fr htmlcov/
install-lint: ## install dependencies needed for linting
python -m pip install --quiet --group lint
install-docs: ## install dependencies needed for building the docs
python -m pip install --quiet --group docs
install-test: ## install dependencies needed for standard testing
python -m pip install --quiet --group test
install-tox: ## install base dependencies needed for running tox
python -m pip install --quiet --group tox
## Testing targets:
lint: install-lint ## check style
python -m ruff check src/ravenpy tests
python -m flake8 --config=.flake8 src/ravenpy tests
python -m numpydoc lint src/ravenpy/**.py
python -m vulture src/ravenpy tests
codespell src/ravenpy tests docs
python -m deptry src
python -m yamllint --config-file=.yamllint.yaml src/ravenpy
test: install-test ## run tests quickly with the default Python
python -m pytest
test-all: install-tox ## run tests on every Python version with tox
python -m tox
coverage: install-test ## check code coverage quickly with the default Python
python -m coverage run --source src/ravenpy -m pytest
python -m coverage report -m
python -m coverage html
$(BROWSER) htmlcov/index.html
NOTEBOOKS := $(shell find $(CURDIR)/docs/notebooks -name '*.ipynb')
test-notebooks: ## test all notebooks under docs/notebooks
python -m pytest --nbval --numprocesses=logical --maxprocesses=8 --dist=loadscope $(NOTEBOOKS)
## Sphinx targets:
autodoc: install-docs clean-docs ## create sphinx-apidoc files
sphinx-apidoc -o docs/apidoc --private --module-first src/ravenpy
autodoc-custom-index: install-docs clean-docs ## create sphinx-apidoc files but with special index handling for indices and indicators
env SPHINX_APIDOC_OPTIONS="members,undoc-members,show-inheritance,noindex" sphinx-apidoc -o docs/apidoc --private --module-first src/ravenpy
linkcheck: autodoc ## run checks over all external links found throughout the documentation
$(MAKE) -C docs linkcheck
initialize-translations: autodoc-custom-index ## initialize translations, ignoring autodoc-generated files
${MAKE} -C docs gettext
sphinx-intl update -p docs/_build/gettext -d docs/locales -l fr
rm -fr docs/locales/fr/LC_MESSAGES/apidoc
build-docs: autodoc-custom-index ## generate Sphinx HTML documentation, including API docs
$(MAKE) -C docs html BUILDDIR="_build/html/en"
ifneq ("$(wildcard $(LOCALES))","")
${MAKE} -C docs gettext
$(MAKE) -C docs html BUILDDIR="_build/html/fr" SPHINXOPTS="-D language='fr'"
endif
docs: build-docs ## open the built documentation in a web browser
ifndef READTHEDOCS
$(BROWSER) docs/_build/html/en/html/index.html
endif
servedocs: autodoc-custom-index ## compile the docs watching for changes
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
## Development targets:
dist: clean ## builds source and wheel package
python -m flit build
ls -l dist
release: dist ## package and upload a release
python -m flit publish dist/*
install: clean ## install the package to the active Python's site-packages
python -m pip install --no-user .
development: clean ## install the package to the active Python's site-packages
python -m pip install --group dev
python -m pip install --no-user --editable .[extras]
prek install