tqdm
/
Makefile
189 строк · 5.0 Кб
1# IMPORTANT: for compatibility with `python -m pymake [alias]`, ensure:
2# 1. Every alias is preceded by @[+]make (eg: @make alias)
3# 2. A maximum of one @make alias or command per line
4# see: https://github.com/tqdm/py-make/issues/1
5
6.PHONY:
7alltests
8all
9flake8
10test
11pytest
12testsetup
13testnb
14testcoverage
15testperf
16testtimer
17distclean
18coverclean
19prebuildclean
20clean
21toxclean
22install_dev
23install
24build
25buildupload
26pypi
27snap
28docker
29help
30none
31run
32
33help:
34@python -m pymake -p
35
36alltests:
37@+make testcoverage
38@+make testperf
39@+make flake8
40@+make testsetup
41
42all:
43@+make alltests
44@+make build
45
46flake8:
47@+pre-commit run -a flake8
48@+pre-commit run -a nbstripout
49
50test:
51TOX_SKIP_ENV=perf tox --skip-missing-interpreters -p all
52tox -e perf
53
54pytest:
55pytest
56
57testsetup:
58@make README.rst
59@make tqdm/tqdm.1
60@make tqdm/completion.sh
61@make help
62
63testnb:
64pytest tests_notebook.ipynb --cov=tqdm.notebook --cov-report=term -W=ignore --nbval --current-env --sanitize-with=.meta/nbval.ini
65
66testcoverage:
67@make coverclean
68pytest tests_notebook.ipynb --cov=tqdm --cov-report= -W=ignore --nbval --current-env --sanitize-with=.meta/nbval.ini
69pytest -k "not perf" --cov=tqdm --cov-report=xml --cov-report=term --cov-append --cov-fail-under=80
70
71testperf:
72# do not use coverage (which is extremely slow)
73pytest -k perf
74
75testtimer:
76pytest
77
78# another performance test, to check evolution across commits
79testasv:
80# Test only the last 3 commits (quick test)
81asv run -j 8 HEAD~3..HEAD
82@make viewasv
83
84testasvfull:
85# Test all the commits since the beginning (full test)
86asv run --skip-existing-commits -j 8 v1.0.0..HEAD
87@make testasv
88
89viewasv:
90asv publish
91asv preview
92
93tqdm/tqdm.1: .meta/.tqdm.1.md tqdm/cli.py tqdm/std.py
94# TODO: add to mkdocs.py
95python -m tqdm --help | tail -n+5 |\
96sed -r -e 's/\\/\\\\/g' \
97-e 's/^ (--.*)=<(.*)> : (.*)$$/\n\\\1=*\2*\n: \3./' \
98-e 's/^ (--.*) : (.*)$$/\n\\\1\n: \2./' \
99-e 's/ (-.*, )(--.*) /\n\1\\\2\n: /' |\
100cat "$<" - |\
101pandoc -o "$@" -s -t man
102
103tqdm/completion.sh: .meta/mkcompletion.py tqdm/std.py tqdm/cli.py
104@python .meta/mkcompletion.py
105
106README.rst: .meta/.readme.rst tqdm/std.py tqdm/cli.py
107@python .meta/mkdocs.py
108
109snapcraft.yaml: .meta/mksnap.py
110@python .meta/mksnap.py
111
112.dockerignore:
113@+python -c "fd=open('.dockerignore', 'w'); fd.write('*\n!dist/*.whl\n')"
114
115Dockerfile:
116@+python -c 'fd=open("Dockerfile", "w"); fd.write("FROM python:3.8-alpine\nCOPY dist/*.whl .\nRUN pip install -U $$(ls ./*.whl) && rm ./*.whl\nENTRYPOINT [\"tqdm\"]\n")'
117
118distclean:
119@+make coverclean
120@+make prebuildclean
121@+make clean
122prebuildclean:
123@+python -c "import shutil; shutil.rmtree('build', True)"
124@+python -c "import shutil; shutil.rmtree('dist', True)"
125@+python -c "import shutil; shutil.rmtree('tqdm.egg-info', True)"
126@+python -c "import shutil; shutil.rmtree('.eggs', True)"
127@+python -c "import os; os.remove('tqdm/_dist_ver.py') if os.path.exists('tqdm/_dist_ver.py') else None"
128coverclean:
129@+python -c "import os; os.remove('.coverage') if os.path.exists('.coverage') else None"
130@+python -c "import os, glob; [os.remove(i) for i in glob.glob('.coverage.*')]"
131@+python -c "import shutil; shutil.rmtree('tests/__pycache__', True)"
132@+python -c "import shutil; shutil.rmtree('benchmarks/__pycache__', True)"
133@+python -c "import shutil; shutil.rmtree('tqdm/__pycache__', True)"
134@+python -c "import shutil; shutil.rmtree('tqdm/contrib/__pycache__', True)"
135@+python -c "import shutil; shutil.rmtree('tqdm/examples/__pycache__', True)"
136clean:
137@+python -c "import os, glob; [os.remove(i) for i in glob.glob('*.py[co]')]"
138@+python -c "import os, glob; [os.remove(i) for i in glob.glob('tests/*.py[co]')]"
139@+python -c "import os, glob; [os.remove(i) for i in glob.glob('benchmarks/*.py[co]')]"
140@+python -c "import os, glob; [os.remove(i) for i in glob.glob('examples/*.py[co]')]"
141@+python -c "import os, glob; [os.remove(i) for i in glob.glob('tqdm/*.py[co]')]"
142@+python -c "import os, glob; [os.remove(i) for i in glob.glob('tqdm/contrib/*.py[co]')]"
143toxclean:
144@+python -c "import shutil; shutil.rmtree('.tox', True)"
145
146
147submodules:
148git clone git@github.com:tqdm/tqdm.wiki wiki
149git clone git@github.com:tqdm/tqdm.github.io docs
150git clone git@github.com:conda-forge/tqdm-feedstock feedstock
151cd feedstock && git remote add autotick-bot git@github.com:regro-cf-autotick-bot/tqdm-feedstock
152
153install:
154python -m pip install .
155install_dev:
156python -m pip install -e .
157install_build:
158python -m pip install -r .meta/requirements-build.txt
159install_test:
160python -m pip install -r .meta/requirements-test.txt
161pre-commit install
162
163build:
164@make prebuildclean
165@make testsetup
166python -m build
167python -m twine check dist/*
168
169pypi:
170python -m twine upload dist/*
171
172buildupload:
173@make build
174@make pypi
175
176snap:
177@make -B snapcraft.yaml
178snapcraft
179docker:
180@make build
181@make .dockerignore
182@make Dockerfile
183docker build . -t tqdm/tqdm
184docker tag tqdm/tqdm:latest tqdm/tqdm:$(shell docker run -i --rm tqdm/tqdm -v)
185none:
186# used for unit testing
187
188run:
189python -Om tqdm --help
190