-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
95 lines (84 loc) · 2.56 KB
/
Copy pathpyproject.toml
File metadata and controls
95 lines (84 loc) · 2.56 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
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "squid-tools"
version = "1.0.0"
description = "Post-processing connector for Cephla-Lab/Squid microscopy"
requires-python = ">=3.10"
# v1 ships the union of every plugin's runtime deps in core so a single
# `pip install squid-tools` covers all 8 products. Per-plugin extras stay
# declared (alias to core for now) so v2 can split them without a refactor.
dependencies = [
# Core viewer + data model
"pydantic>=2.10",
"numpy>=1.24",
"dask[array]>=2024.1",
"tifffile>=2024.1",
"pyyaml>=6.0",
"zarr>=2.16",
"PySide6>=6.6",
"vispy>=0.14",
# Stitching (vendored TileFusion)
"numba>=0.59",
"scikit-image>=0.22",
"scipy>=1.10",
"tensorstore>=0.1.50",
"pandas>=2.0",
"tqdm>=4.65",
# Background subtraction
"sep>=1.4",
# Remote (R2) + web demo
"boto3>=1.34",
"Pillow>=10.0",
]
[project.optional-dependencies]
# Per-plugin extras kept for forward-compatibility with v2's split-install
# story. In v1 they all resolve to the core install (everything is bundled).
stitching = []
flatfield = []
decon = []
phase = [] # waveorder pulled lazily when used
acns = []
bgsub = []
r2 = []
webdemo = []
# GPU-accelerated compositor + decon (CUDA-only, opt-in)
gpu = ["cupy-cuda12x>=13.0"]
# 3D volume viewer (vispy already in core)
3d = []
# Convenience aliases retained for muscle memory
all-corrections = []
all-restoration = []
everything = []
# Dev only
dev = [
"pytest>=8.0",
"pytest-qt>=4.2",
"ruff>=0.4",
"mypy>=1.10",
]
[project.entry-points."squid_tools.plugins"]
flatfield = "squid_tools.processing.flatfield.plugin:FlatfieldPlugin"
stitcher = "squid_tools.processing.stitching.plugin:StitcherPlugin"
decon = "squid_tools.processing.decon.plugin:DeconvolutionPlugin"
bgsub = "squid_tools.processing.bgsub.plugin:BackgroundSubtractPlugin"
# phase + acns shelved for v1; re-enable in v2 once correctness asserts
# land. Plugin code remains under squid_tools.processing.{phase,acns}/.
[tool.ruff]
line-length = 100
target-version = "py310"
# Vendored upstream code — track as-is, don't drift from upstream style.
extend-exclude = ["squid_tools/processing/stitching/_tilefusion/**"]
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "SIM"]
[tool.mypy]
python_version = "3.10"
strict = true
plugins = ["pydantic.mypy"]
[tool.pytest.ini_options]
testpaths = ["tests"]
qt_api = "pyside6"
markers = [
"gpu: requires CUDA GPU",
]