-
Notifications
You must be signed in to change notification settings - Fork 3
/
pyproject.toml
185 lines (166 loc) · 5.23 KB
/
pyproject.toml
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
[build-system]
build-backend = "poetry_dynamic_versioning.backend"
requires = [ "poetry-core>=1", "poetry-dynamic-versioning>=1,<2" ]
[tool.poetry]
name = "coSMicQC"
version = "0.0.0"
description = "coSMicQC is a software tool for single-cell quality control of morphology datasets."
authors = [ "Way Science Community" ]
license = "BSD-3-Clause"
readme = "README.md"
packages = [ { include = "cosmicqc", from = "src" } ]
[tool.poetry.dependencies]
python = ">=3.9,<3.13"
pandas = [
{ version = "<2.2.2", python = "<3.9" },
{ version = "^2.2.2", python = ">=3.9" },
] # used for data management
scipy = [
{ version = "<1.13.0", python = "<3.9" },
{ version = "^1.13.0", python = ">=3.9" },
] # used for calculations
# used for data ingest and export
pyarrow = "^16.0.0"
# used for reading yaml configuration files
pyyaml = "^6.0.1"
# used for CLI generation
fire = ">=0.6,<0.8"
# used for template capabilities
jinja2 = "^3.1.4"
# used for assisting single-cell profile and image analysis
cytodataframe = ">=0.0.11"
[tool.poetry.group.dev.dependencies]
# provides testing capabilities for project
pytest = "^8.2.0"
# used for report html export to image for tests
html2image = "^2.0.4.3"
# used for test data generation
sqlalchemy = ">=1.3.6,<2"
# used for example notebook work
jupyterlab = "^4.2.3"
# used for example notebook formatting
jupytext = "^1.16.2"
# used for example notebook formatting
jupyterlab-code-formatter = ">=2.2.1,<4.0.0"
# used for example notebook formatting
black = "^24.4.2"
# used for example notebook formatting
isort = "^5.13.2"
# added to generate test coverage reports
coverage = "^7.6.0"
# for standardizing various dev tasks
poethepoet = ">=0.27,<0.31"
# added for preparing data for cosmicqc in examples
cytotable = ">=0.0.10,<0.0.13"
# used to avoid dependency resolution issues during installs
botocore = ">=1.31.16,<1.31.65 || >=1.32.4,<1.34.35 || >=1.34.41,<1.34.163 || >=1.35.0,<1.35.8"
# used for visualizing large plot data
hvplot = ">=0.10,<0.12"
# used for visualization options with hvplot
datashader = "^0.16.3"
# added for demonstrating results after using cosmicqc
umap-learn = "^0.5.6"
# added for compatibility in notebooks with umap-learn dependency tqdm
ipywidgets = "^8.1.5"
# added for demonstrating results with cosmicqc
pycytominer = "^1.1.0"
# added to avoid warnings from datashader implementation
dask = { version = "^2024.8.0", extras = [ "dataframe" ] }
# used for rendering plots as images within example notebooks
selenium = "^4.24.0"
# used by pandas for extracting metadata and platemap data from S3 through pandas
s3fs = "^2024.9.0"
[tool.poetry.group.docs.dependencies]
# used for rendering docs into docsite
sphinx = "^7.0.0"
# used for rendering markdown through sphinx
myst-parser = "^3.0.0"
# used for rendering notebooks through myst parser
myst-nb = "^1.1.1"
# used for extension sphinx-multiversion and to fix git-based challenges with default branch handling
sphinx-multiversion = { git = "https://github.com/J-RN/sphinx-multiversion", rev = "a77f0c862dace3a62c18fc866da60ef7dde3873d" }
# used for gathering version data for docsite
dunamai = "^1.22.0"
# used for theming the docsite
sphinx-wagtail-theme = "^6.3.0"
[tool.poetry.scripts]
cosmicqc = "cosmicqc.cli:cli_analyze"
[tool.poetry-dynamic-versioning]
enable = true
style = "pep440"
vcs = "git"
# specify where version replacement is performed
[tool.poetry-dynamic-versioning.substitution]
files = [ "src/cosmicqc/__init__.py" ]
# defines various development tasks
[tool.setuptools_scm]
root = "."
[tool.ruff]
target-version = "py310"
line-length = 88
fix = true
lint.select = [
# flake8-builtins
"A",
# flake8-annotations
"ANN",
# flake8-comprehensions
"C4",
# mccabe
"C90",
# pycodestyle
"E",
# pyflakes
"F",
# isort
"I",
# pylint
"PL",
# ruff
"RUF",
# flake8-simplify
"SIM",
"W",
]
# Ignore `E402` and `F401` (unused imports) in all `__init__.py` files
lint.per-file-ignores."__init__.py" = [ "E402", "F401" ]
# ignore long line and func def warnings with notebooks
lint.per-file-ignores."docs/src/examples/*.ipynb" = [ "E501", "E703", "PLR0913" ]
lint.per-file-ignores."docs/src/examples/*.py" = [ "E501", "E703", "PLR0913" ]
# ignore typing rules for tests
lint.per-file-ignores."tests/*" = [ "ANN201", "PLR0913" ]
[tool.isort]
profile = "black"
[tool.pytest.ini_options]
markers = [
"generate_report_image: tests which involve the creation of report images.",
]
[tool.coverage.run]
# settings to avoid errors with cv2 and coverage
# see here for more: https://github.com/nedbat/coveragepy/issues/1653
omit = [
"config.py",
"config-3.py",
]
# set dynamic versioning capabilities for project
[tool.bandit]
exclude_dirs = [ "tests" ]
[tool.jupytext]
formats = "ipynb,py:light"
[tool.poe.tasks]
# note: quarto commands below expect quarto installed on the local system.
# see here for more information: https://quarto.org/docs/download/
poster-preview.shell = """
quarto preview \
docs/presentations/2024-09-18-SBI2-Conference/poster.qmd
"""
poster-render.shell = """
quarto render \
docs/presentations/2024-09-18-SBI2-Conference/poster.qmd
mkdir docs/src/media
mv docs/presentations/2024-09-18-SBI2-Conference/sbi2-2024-cosmicqc-poster.pdf \
docs/src/media
"""
[tool.vulture]
min_confidence = 90
paths = [ "src/cosmicqc", "tests" ]