Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
134 lines (122 loc) · 3.32 KB
/
Copy pathpyproject.toml
File metadata and controls
134 lines (122 loc) · 3.32 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
[project]
name = "negpy"
description = "A tool for processing film negatives."
readme = "README.md"
license = "GPL-3.0"
authors = [
{ name = "marcinz606" },
{ name = "NegPy Contributors" }
]
dynamic = ["version"]
requires-python = ">=3.13"
dependencies = [
"rawpy==0.27.0",
"tifffile==2026.6.1",
"imagecodecs==2026.6.6",
"imageio==2.37.3",
"jinja2==3.1.6",
"numpy==2.4.4",
# Pinned below its latest release: 1.24.0+ dropped macOS x86_64 wheels entirely,
# which breaks install on an Intel Mac. 1.23.2 is the last version with one.
"onnxruntime==1.23.2",
"pillow==12.2.0",
"pyqt6==6.11.0",
"pyqt6-charts==6.11.0",
"piexif==1.1.3",
"qtawesome==1.4.2",
"wgpu==0.31.1",
"pyserial>=3.5",
"negpy-core",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Environment :: GPU",
"Intended Audience :: End Users/Desktop",
"Operating System :: Microsoft :: Windows",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3.13",
"Topic :: Multimedia :: Graphics :: Graphics Conversion",
"Topic :: Multimedia :: Graphics :: Viewers",
"Topic :: Scientific/Engineering :: Image Processing"
]
[project.optional-dependencies]
nkscan = ["nkscan>=0.17"]
plustek = ["pyopticfilm>=1.3.8"]
sane = ["python-sane>=2.9"]
camera = ["gphoto2>=2.5 ; sys_platform != 'win32'"]
[dependency-groups]
dev = [
"pyinstaller>=6.18.0",
"pytest==9.0.2",
"pytest-cov>=7.0",
"ruff==0.14.10",
"ty>=0.0.26",
# The test oracle for the negpy_core kernels that port OpenCV; the app imports no cv2.
"opencv-python-headless==4.13.0.92",
]
sane = [
"python-sane>=2.9",
]
plustek = [
"pyopticfilm>=1.3.8",
]
camera = [
# Tethered camera scanning. libgphoto2 has no Windows build, so the wheels — and the
# Camera Scanning tab with them — are macOS and Linux only.
"gphoto2>=2.5 ; sys_platform != 'win32'",
]
pieusb = [
"pieusb>=0.3.7",
]
nkscan = [
# Nikon Coolscan over SCSI/USB. A Rust extension, shipped as wheels.
"nkscan>=0.17",
]
[project.urls]
Homepage = "https://github.com/marcinz606/NegPy"
Documentation = "https://github.com/marcinz606/NegPy/docs"
Repository = "https://github.com/marcinz606/NegPy.git"
Issues = "https://github.com/marcinz606/NegPy/issues"
[tool.uv.workspace]
members = ["negpy_core"]
[tool.uv.sources]
negpy-core = { workspace = true }
[build-system]
requires = ["setuptools~=80.10.2"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
include = ["negpy", "negpy.*"]
[tool.setuptools.package-data]
negpy = ["translations/*.json", "translations/*.md"]
[tool.setuptools.dynamic]
version = { file = "VERSION" }
[tool.pytest.ini_options]
markers = [
"slow: wall-clock tests that require I/O or a real RAW file (deselect with '-m not slow')",
"metrics: opt-in performance metrics tests",
]
addopts = "-m 'not slow'"
# Lets test modules share helpers via `from conftest import ...` (FakeRepo/FakeController).
pythonpath = ["tests"]
[tool.ruff]
line-length = 140
exclude = [
"venv",
".venv",
"__pycache__",
".git",
".github",
"user",
"docs",
".streamlit",
".pytest_cache",
"icc",
"processed",
"node_modules",
"dist",
"desktop/bin",
"build",
]
[tool.coverage.run]
source = ["negpy"]