forked from life4/textdistance
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Taskfile.yml
122 lines (111 loc) · 2.42 KB
/
Taskfile.yml
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
# https://taskfile.dev/
version: "3"
vars:
PYTHON_BIN: python3
VENVS: .venvs/
LINT_ENV: "{{.VENVS}}lint"
BENCHMARK_ENV: "{{.VENVS}}benchmark"
TEST_PURE_ENV: "{{.VENVS}}pytest-pure"
TEST_EXT_ENV: "{{.VENVS}}pytest-ext"
tasks:
venv:create:
status:
- "test -f {{.ENV}}/bin/activate"
cmds:
- "{{.PYTHON_BIN}} -m venv {{.ENV}}"
- "{{.ENV}}/bin/python3 -m pip install -U pip setuptools wheel"
pip:install:
sources:
- setup.py
- "{{.ENV}}/bin/activate"
status:
- test -f {{.ENV}}/bin/flake8
deps:
- task: venv:create
vars:
ENV: "{{.ENV}}"
cmds:
- "{{.ENV}}/bin/pip install '.[{{.EXTRA}}]'"
lint:install:
cmds:
- task: pip:install
vars:
ENV: "{{.LINT_ENV}}"
EXTRA: test,lint
twine:build:
deps:
- lint:install
cmds:
- rm -rf dist/
- "{{.LINT_ENV}}/bin/python3 setup.py sdist bdist_wheel"
twine:release:
deps:
- twine:build
cmds:
- "{{.LINT_ENV}}/bin/twine upload dist/textdistance-*"
flake8:
deps:
- lint:install
cmds:
- "{{.LINT_ENV}}/bin/flake8 ."
mypy:
deps:
- lint:install
cmds:
- "{{.LINT_ENV}}/bin/mypy"
pytest-pure:
deps:
- task: pip:install
vars:
ENV: "{{.TEST_PURE_ENV}}"
EXTRA: test
cmds:
- "{{.TEST_PURE_ENV}}/bin/pytest -m 'not external' {{.CLI_ARGS}}"
pytest-external:
deps:
- task: pip:install
vars:
ENV: "{{.TEST_EXT_ENV}}"
EXTRA: test,benchmark
cmds:
- "{{.TEST_EXT_ENV}}/bin/pytest {{.CLI_ARGS}}"
isort:
deps:
- lint:install
cmds:
- "{{.LINT_ENV}}/bin/isort ."
isort:check:
deps:
- lint:install
cmds:
- "{{.LINT_ENV}}/bin/isort --check ."
benchmark:
deps:
- task: pip:install
vars:
ENV: "{{.BENCHMARK_ENV}}"
EXTRA: benchmark
cmds:
- "{{.BENCHMARK_ENV}}/bin/python3 -m textdistance.benchmark"
# groups
format:
desc: "run all code formatters"
cmds:
- task: isort
lint:
desc: "run all linters"
cmds:
- task: flake8
# - task: mypy
- task: isort:check
test:
desc: "run all tests"
cmds:
- task: pytest-pure
- task: pytest-external
all:
desc: "run all code formatters, linters, and tests"
cmds:
- task: format
- task: lint
- task: test