tqdm

Форк
0
/
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:
7
	alltests
8
	all
9
	flake8
10
	test
11
	pytest
12
	testsetup
13
	testnb
14
	testcoverage
15
	testperf
16
	testtimer
17
	distclean
18
	coverclean
19
	prebuildclean
20
	clean
21
	toxclean
22
	install_dev
23
	install
24
	build
25
	buildupload
26
	pypi
27
	snap
28
	docker
29
	help
30
	none
31
	run
32

33
help:
34
	@python -m pymake -p
35

36
alltests:
37
	@+make testcoverage
38
	@+make testperf
39
	@+make flake8
40
	@+make testsetup
41

42
all:
43
	@+make alltests
44
	@+make build
45

46
flake8:
47
	@+pre-commit run -a flake8
48
	@+pre-commit run -a nbstripout
49

50
test:
51
	TOX_SKIP_ENV=perf tox --skip-missing-interpreters -p all
52
	tox -e perf
53

54
pytest:
55
	pytest
56

57
testsetup:
58
	@make README.rst
59
	@make tqdm/tqdm.1
60
	@make tqdm/completion.sh
61
	@make help
62

63
testnb:
64
	pytest tests_notebook.ipynb --cov=tqdm.notebook --cov-report=term -W=ignore --nbval --current-env --sanitize-with=.meta/nbval.ini
65

66
testcoverage:
67
	@make coverclean
68
	pytest tests_notebook.ipynb --cov=tqdm --cov-report= -W=ignore --nbval --current-env --sanitize-with=.meta/nbval.ini
69
	pytest -k "not perf" --cov=tqdm --cov-report=xml --cov-report=term --cov-append --cov-fail-under=80
70

71
testperf:
72
	# do not use coverage (which is extremely slow)
73
	pytest -k perf
74

75
testtimer:
76
	pytest
77

78
# another performance test, to check evolution across commits
79
testasv:
80
	# Test only the last 3 commits (quick test)
81
	asv run -j 8 HEAD~3..HEAD
82
	@make viewasv
83

84
testasvfull:
85
	# Test all the commits since the beginning (full test)
86
	asv run --skip-existing-commits -j 8 v1.0.0..HEAD
87
	@make testasv
88

89
viewasv:
90
	asv publish
91
	asv preview
92

93
tqdm/tqdm.1: .meta/.tqdm.1.md tqdm/cli.py tqdm/std.py
94
	# TODO: add to mkdocs.py
95
	python -m tqdm --help | tail -n+5 |\
96
    sed -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: /' |\
100
    cat "$<" - |\
101
    pandoc -o "$@" -s -t man
102

103
tqdm/completion.sh: .meta/mkcompletion.py tqdm/std.py tqdm/cli.py
104
	@python .meta/mkcompletion.py
105

106
README.rst: .meta/.readme.rst tqdm/std.py tqdm/cli.py
107
	@python .meta/mkdocs.py
108

109
snapcraft.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

115
Dockerfile:
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

118
distclean:
119
	@+make coverclean
120
	@+make prebuildclean
121
	@+make clean
122
prebuildclean:
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"
128
coverclean:
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)"
136
clean:
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]')]"
143
toxclean:
144
	@+python -c "import shutil; shutil.rmtree('.tox', True)"
145

146

147
submodules:
148
	git clone git@github.com:tqdm/tqdm.wiki wiki
149
	git clone git@github.com:tqdm/tqdm.github.io docs
150
	git clone git@github.com:conda-forge/tqdm-feedstock feedstock
151
	cd feedstock && git remote add autotick-bot git@github.com:regro-cf-autotick-bot/tqdm-feedstock
152

153
install:
154
	python -m pip install .
155
install_dev:
156
	python -m pip install -e .
157
install_build:
158
	python -m pip install -r .meta/requirements-build.txt
159
install_test:
160
	python -m pip install -r .meta/requirements-test.txt
161
	pre-commit install
162

163
build:
164
	@make prebuildclean
165
	@make testsetup
166
	python -m build
167
	python -m twine check dist/*
168

169
pypi:
170
	python -m twine upload dist/*
171

172
buildupload:
173
	@make build
174
	@make pypi
175

176
snap:
177
	@make -B snapcraft.yaml
178
	snapcraft
179
docker:
180
	@make build
181
	@make .dockerignore
182
	@make Dockerfile
183
	docker build . -t tqdm/tqdm
184
	docker tag tqdm/tqdm:latest tqdm/tqdm:$(shell docker run -i --rm tqdm/tqdm -v)
185
none:
186
	# used for unit testing
187

188
run:
189
	python -Om tqdm --help
190

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.