forked from dme722/ayx-blackbird
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdodo.py
84 lines (66 loc) · 2.05 KB
/
dodo.py
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
DOIT_CONFIG = {
"default_tasks": [
"python_dependencies",
"flake8",
"black",
"pydocstyle",
"mypy",
"pytest",
],
"cleanforget": True,
"verbosity": 0,
}
python_directories = ["ayx_blackbird", "tests"]
def task_python_dependencies():
log_file = ".doit.pip.log"
return {
"actions": [f"pip install -r requirements-dev.txt --log {log_file}"],
"file_dep": ["requirements.txt", "requirements-dev.txt"],
"targets": [log_file],
"clean": True,
}
def task_black():
for directory in python_directories:
yield {
"name": directory,
"actions": [f"black --check {directory}"],
"file_dep": list_files(directory),
"task_dep": ["python_dependencies"],
}
def task_flake8():
for directory in python_directories:
yield {
"name": directory,
"actions": [f"flake8 {directory}"],
"file_dep": list_files(directory),
}
def task_pydocstyle():
for directory in python_directories:
if directory != "tests":
yield {
"name": directory,
"actions": [f"pydocstyle --convention=numpy {directory}"],
"file_dep": list_files(directory),
}
def task_mypy():
return {
"actions": [f"mypy ayx_blackbird"],
"file_dep": list_files("ayx_blackbird") + ["setup.cfg"],
}
def task_pytest():
file_deps = []
for path in python_directories:
file_deps += list_files(path)
return {"actions": [f"coverage run -m pytest tests"], "file_dep": file_deps}
def list_files(directory, ignore_extensions=None):
import os
if ignore_extensions is None:
ignore_extensions = []
fs = []
for root, directories, files in os.walk(directory):
for file in files:
file = os.path.join(root, file)
filename, file_extension = os.path.splitext(file)
if file_extension not in ignore_extensions:
fs.append(file)
return fs