-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathpyproject.toml
More file actions
103 lines (92 loc) · 3.74 KB
/
Copy pathpyproject.toml
File metadata and controls
103 lines (92 loc) · 3.74 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
[build-system]
requires = ["setuptools>=82.0.1", "setuptools-scm>=10.0.5"]
build-backend = "setuptools.build_meta"
[project]
name = "deepprofiler"
dynamic = ["version"]
description = "Tools for representation learning in high throughput image collections"
readme = "README.md"
license = { file = "LICENSE.md" }
authors = [
{ name = "Juan C. Caicedo", email = "jccaicedo@gmail.com" },
{ name = "Nikita Moshkov", email = "nikitam851@gmail.com" },
{ name = "Shantanu Singh", email = "shsingh@broadinstitute.org" },
{ name = "Santiago Benoit", email = "santib27@gmail.com" },
{ name = "Matthew Smith", email = "msmith16.ma@gmail.com" },
{ name = "Peter Goldsborough", email = "peter@goldsborough.me" },
{ name = "John Arevalo", email = "johnarevalo@gmail.com" },
{ name = "Marzieh Haghighi", email = "marzieh.haghighi@gmail.com" },
{ name = "Michael Bornholdt", email = "michael.bornholdt@outlook.com" },
{ name = "Gregory Way", email = "gregory.way@gmail.com" },
{ name = "Gideon Mendels", email = "gidim@users.noreply.github.com" },
{ name = "Frances Hubis", email = "frances.hubis@gmail.com" },
{ name = "Fernanda Fossa", email = "fefossa@gmail.com" },
{ name = "Thouis Jones", email = "thouis@broadinstitute.org" },
]
maintainers = [
{ name = "Gregory Way", email = "gregory.way@gmail.com" },
{ name = "Dave Bunten", email = "dave.bunten@cuanschutz.edu" },
]
keywords = ["deep learning", "image-based profiling", "microscopy", "cell painting"]
classifiers = [
"Development Status :: 4 - Beta",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Scientific/Engineering :: Bio-Informatics",
"Topic :: Scientific/Engineering :: Image Processing",
]
requires-python = ">=3.10,<3.12"
dependencies = [
"click>=8.4.1",
"efficientnet==1.1.1",
"numpy>=1.24,<2.0",
"pandas>=2.0",
"scikit-image>=0.21",
"tensorflow>=2.10,<2.16",
"tensorflow-macos>=2.10,<2.16; sys_platform == 'darwin' and platform_machine == 'arm64'",
]
[dependency-groups]
dev = [
"imagecodecs>=2025.3.30",
"pytest>=8.0",
"pytest-cov>=5.0",
"ruff>=0.4",
]
[project.urls]
Homepage = "https://github.com/cytomining/DeepProfiler"
Repository = "https://github.com/cytomining/DeepProfiler"
Documentation = "https://cytomining.github.io/DeepProfiler-handbook/"
[project.scripts]
deepprofiler = "deepprofiler.__main__:cli"
[tool.setuptools_scm]
[tool.setuptools.packages.find]
where = ["."]
include = ["deepprofiler*"]
[tool.pytest.ini_options]
addopts = "--cov=deepprofiler -v -m 'not integration'"
testpaths = ["tests"]
markers = ["integration: requires network access and downloads large files (run with -m integration)"]
[tool.ruff]
target-version = "py310"
line-length = 100
exclude = ["scripts/"]
[tool.ruff.lint]
select = ["D", "E", "F", "I", "S"]
# E501: line length — not enforced on legacy code pending rewrite
# E731: lambda assignments — common pattern in legacy code
# E722: bare except — legacy code, acceptable for now
# E741: ambiguous variable names — legacy code
# E701: multiple statements — legacy code
ignore = ["E501"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.per-file-ignores]
# Legacy TF1 imaging code — lenient linting until rewrite
"deepprofiler/imaging/*" = ["D", "E731", "E722", "E701", "F841", "E741", "S101"]
"deepprofiler/dataset/compression.py" = ["D", "E731", "F841", "S301"]
"deepprofiler/dataset/illumination_statistics.py" = ["D", "E731"]
"deepprofiler/dataset/image_dataset.py" = ["D", "E731"]
# Tests — assert is idiomatic pytest; /tmp paths and urlretrieve are intentional in fixtures
"tests/*" = ["D", "F841", "S101", "S108", "S310"]