-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpyproject.toml
More file actions
138 lines (126 loc) · 4.3 KB
/
Copy pathpyproject.toml
File metadata and controls
138 lines (126 loc) · 4.3 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
[build-system]
requires = ["setuptools", "setuptools-scm", "wheel"]
build-backend = "setuptools.build_meta"
[project]
dynamic= ["version"]
name = "picasso_workflow"
description = "Automation and documentation of DNA-PAINT analysis workflows"
license = {'file' = "LICENSE"}
requires-python = ">=3.10"
dependencies = [
"matplotlib",
"seaborn",
"numpy",
"pandas",
"tables",
"numba",
"openpyxl==3.1.2",
"picassosr>=0.11.0a1",
# GUI uses PyQt6 directly; keep in sync with picasso's constraint
"PyQt6>=6.10.2,<7",
# Embedded HTML report viewer in the GUI Results tab (QWebEngineView);
# keep the major/minor in sync with PyQt6.
"PyQt6-WebEngine>=6.10,<7",
# NVML bindings for GPU CUDA-core count in analysis_documentation
# (nvidia-smi cannot report cores). Harmless without an NVIDIA driver.
"nvidia-ml-py>=12.0.0",
"moviepy==1.0.3",
"python-dotenv==1.0.1",
"pre-commit>=3.5.1",
"bandit==1.7.8",
# "coverage>=6.5,<6.6",
"pytest==8.1.1",
"isort==5.13.2",
"aicspylibczi>=3.1.1",
"fsspec>=2022.8.0",
"aicsimageio",
"psutil",
"atlassian-python-api",
"memory-profiler>=0.61.0",
"loguru>=0.7.3",
"h5py",
"memory_profiler",
# "mpi4py",
# "openmpi"
]
keywords = ["picasso"]
[project.scripts]
picasso-workflow-gui = "picasso_workflow._launcher:main"
[project.optional-dependencies]
cluster = [
"mpi4py>=4.0.2",
]
[tool.setuptools]
packages = ["picasso_workflow"]
[tool.setuptools_scm]
# Writes the version into a file that is importable at runtime, even when
# installed from a wheel or sdist (i.e. without a .git directory).
write_to = "picasso_workflow/_version.py"
# Shown when the package is imported outside a git repository and no tag
# is reachable (e.g. a fresh checkout with no tags yet).
fallback_version = "0.3.3.dev0"
[tool.setuptools.package-data]
picasso_workflow = ["picasso-workflow.ico"]
[tool.black]
line-length = 79
include = "\\.pyi?$"
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''
[tool.mypy]
strict = true
[tool.flake8]
# Stock flake8 only (E/W = pycodestyle, F = pyflakes, C90 = complexity). Line
# length is owned by black, so E501 is ignored here (black already wraps code;
# long strings/comments/HTML it can't split are intentional). E203/W503 are
# the standard black-compatibility ignores.
max-line-length = 88 # informational; E501 is ignored
extend-ignore = "E203,E501,W503"
# extend-exclude keeps flake8's sensible defaults and additionally skips the
# generated/snapshot test fixtures and the isolated experimental modules
# (not imported by the package) that still carry WIP F-codes.
extend-exclude = "docs,picasso_workflow/spinna_mle.py,picasso_workflow/spinna_mle_2.py,picasso_workflow/nn_redistribution.py,picasso_workflow/tests/TestData"
[tool.bandit]
exclude = "/tests"
skips = "B105,B404"
baseline = "bandit-baseline.json"
format = "txt"
[tool.pytest-cov]
[pytest-cov.run]
branch = "True"
[pytest-cov.report]
fail_under = 80
[tool.pytest.ini_options]
minversion = "6.0"
# Local default: run only the fast unit tests. The heavy `integration`
# tests (synthetic pipeline + template smoke) are deselected here so a bare
# `pytest -v` stays quick during development. Opt back in explicitly with
# `pytest -m integration` (or run them on the cluster via
# tools/cluster_tests/submit_all.sh). The cluster tier sbatch scripts pass
# their own `-m ...`, which overrides this default (last `-m` wins).
addopts = "-ra -q -m 'not integration'"
testpaths = ["picasso_workflow/tests"]
markers = [
"integration: tests that run the real picasso pipeline (run with '-m integration'; deselected by default)",
"real_data: tests that require acquired datasets from the lab network volumes (set PW_TEST_DATA_DIR)",
]
# picasso announces API changes (a default flipping, a function going private)
# via DeprecationWarning, which Python hides by default -- so a picassosr bump
# silently breaks the workflow at runtime on the cluster instead of here. Fail
# the test run on them. Scoped to `picasso.*` so unrelated third-party
# deprecations stay warnings; the pattern is a regex matched against the
# emitting module's __name__, and "picasso\." excludes our own
# "picasso_workflow.*" modules.
filterwarnings = [
'error::DeprecationWarning:picasso\..*',
]