canvod-auxiliary 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. canvod_auxiliary-0.2.0/PKG-INFO +270 -0
  2. canvod_auxiliary-0.2.0/README.md +238 -0
  3. canvod_auxiliary-0.2.0/pyproject.toml +85 -0
  4. canvod_auxiliary-0.2.0/src/canvod/auxiliary/.DS_Store +0 -0
  5. canvod_auxiliary-0.2.0/src/canvod/auxiliary/__init__.py +141 -0
  6. canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/__init__.py +24 -0
  7. canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/logger.py +31 -0
  8. canvod_auxiliary-0.2.0/src/canvod/auxiliary/_internal/units.py +19 -0
  9. canvod_auxiliary-0.2.0/src/canvod/auxiliary/augmentation.py +771 -0
  10. canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/__init__.py +25 -0
  11. canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/parser.py +153 -0
  12. canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/reader.py +212 -0
  13. canvod_auxiliary-0.2.0/src/canvod/auxiliary/clock/validator.py +101 -0
  14. canvod_auxiliary-0.2.0/src/canvod/auxiliary/container.py +57 -0
  15. canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/__init__.py +10 -0
  16. canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/base.py +342 -0
  17. canvod_auxiliary-0.2.0/src/canvod/auxiliary/core/downloader.py +387 -0
  18. canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/__init__.py +24 -0
  19. canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/parser.py +226 -0
  20. canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/provider.py +409 -0
  21. canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/reader.py +283 -0
  22. canvod_auxiliary-0.2.0/src/canvod/auxiliary/ephemeris/validator.py +88 -0
  23. canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation/__init__.py +21 -0
  24. canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation/interpolator.py +438 -0
  25. canvod_auxiliary-0.2.0/src/canvod/auxiliary/interpolation.py +378 -0
  26. canvod_auxiliary-0.2.0/src/canvod/auxiliary/matching/__init__.py +5 -0
  27. canvod_auxiliary-0.2.0/src/canvod/auxiliary/matching/dataset_matcher.py +251 -0
  28. canvod_auxiliary-0.2.0/src/canvod/auxiliary/pipeline.py +460 -0
  29. canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/__init__.py +20 -0
  30. canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/position.py +158 -0
  31. canvod_auxiliary-0.2.0/src/canvod/auxiliary/position/spherical_coords.py +276 -0
  32. canvod_auxiliary-0.2.0/src/canvod/auxiliary/preprocessing.py +546 -0
  33. canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/.DS_Store +0 -0
  34. canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/__init__.py +35 -0
  35. canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/models.py +247 -0
  36. canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/products.toml +773 -0
  37. canvod_auxiliary-0.2.0/src/canvod/auxiliary/products/registry_config.py +256 -0
@@ -0,0 +1,270 @@
1
+ Metadata-Version: 2.3
2
+ Name: canvod-auxiliary
3
+ Version: 0.2.0
4
+ Summary: Auxiliary data augmentation for GNSS VOD analysis
5
+ Keywords: GNSS,VOD,auxiliary,SP3,CLK,ephemeris,clock
6
+ Author: Nicolas François Bader
7
+ Author-email: Nicolas François Bader <nicolas.bader@geo.tuwien.ac.at>
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Science/Research
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Requires-Dist: canvod-readers>=0.1.0
14
+ Requires-Dist: scipy>=1.15.0
15
+ Requires-Dist: numpy>=1.24.0
16
+ Requires-Dist: xarray>=2023.12.0
17
+ Requires-Dist: pydantic>=2.5.0
18
+ Requires-Dist: requests>=2.31.0
19
+ Requires-Dist: retrying>=1.3.4
20
+ Requires-Dist: beautifulsoup4>=4.12.0
21
+ Requires-Dist: lxml>=5.3.0
22
+ Requires-Dist: pint>=0.23
23
+ Requires-Dist: pymap3d>=3.0.0
24
+ Requires-Dist: tqdm>=4.67.1
25
+ Requires-Dist: hvplot>=0.12.2
26
+ Requires-Dist: plotly>=6.5.1
27
+ Requires-Dist: mcp>=1.25.0
28
+ Maintainer: Climate and Environmental Remote Sensing (CLIMERS)
29
+ Maintainer-email: Climate and Environmental Remote Sensing (CLIMERS) <nicolas.bader@geo.tuwien.ac.at>
30
+ Requires-Python: >=3.14
31
+ Description-Content-Type: text/markdown
32
+
33
+ # canvod-auxiliary
34
+
35
+ **Auxiliary data augmentation for GNSS VOD analysis**
36
+
37
+ Part of the [canVODpy](https://github.com/nfb2021/canvodpy) ecosystem.
38
+
39
+ ## Overview
40
+
41
+ `canvod-auxiliary` provides tools for downloading, parsing, and interpolating auxiliary GNSS data files including:
42
+
43
+ - **SP3 ephemerides** - Satellite orbit positions and velocities
44
+ - **CLK corrections** - Satellite clock corrections
45
+ - **Interpolation strategies** - Hermite and linear interpolation for temporal alignment
46
+ - **Augmentation framework** - Pluggable system for enriching RINEX datasets
47
+
48
+ ## Features
49
+
50
+ **SP3 File Handling**
51
+ - Download from ESA or NASA CDDIS servers
52
+ - Parse SP3 format (positions + velocities)
53
+ - Cubic Hermite interpolation using velocities
54
+ - Fallback to linear interpolation
55
+
56
+ **Clock Corrections**
57
+ - CLK file download and parsing
58
+ - Jump-aware interpolation
59
+ - Segment-based processing
60
+
61
+ **Flexible Pipeline**
62
+ - Automatic file discovery and caching
63
+ - Thread-safe downloading
64
+ - Configurable FTP servers and agencies
65
+
66
+ **Augmentation System**
67
+ - Spherical coordinate calculation (φ, θ, r)
68
+ - Clock correction application
69
+ - Extensible via ABC pattern
70
+
71
+ ## Installation
72
+
73
+ ```bash
74
+ # From PyPI (when published)
75
+ pip install canvod-auxiliary
76
+
77
+ # Development install
78
+ cd canvodpy/packages/canvod-auxiliary
79
+ uv pip install -e .
80
+ ```
81
+
82
+ ## Quick Start
83
+
84
+ ### Basic SP3 Usage
85
+
86
+ ```python
87
+ from pathlib import Path
88
+ from canvod.auxiliary import Sp3File
89
+
90
+ # Load SP3 ephemeris file
91
+ sp3 = Sp3File.from_file(Path("COD0MGXFIN_20240150000_01D_05M_ORB.SP3"))
92
+
93
+ # Access data as xarray Dataset
94
+ data = sp3.data
95
+ print(data) # Coordinates: epoch, sid | Variables: X, Y, Z, Vx, Vy, Vz
96
+
97
+ # Get interpolation strategy
98
+ strategy = sp3.get_interpolation_strategy()
99
+ print(strategy.config) # Sp3Config(use_velocities=True)
100
+ ```
101
+
102
+ ### Pipeline Usage
103
+
104
+ ```python
105
+ from canvod.auxiliary import AuxDataPipeline
106
+ from pathlib import Path
107
+
108
+ # Create pipeline
109
+ pipeline = AuxDataPipeline(
110
+ agency="COD",
111
+ product_type="final",
112
+ ftp_server="ftp://gssc.esa.int/gnss",
113
+ aux_file_path=Path("aux_data")
114
+ )
115
+
116
+ # Get augmented data for specific date
117
+ augmented_ds = pipeline.get_or_create_aux_data(
118
+ yyyydoy="2024015",
119
+ target_epochs=my_rinex_epochs
120
+ )
121
+ ```
122
+
123
+ ### Custom Interpolation
124
+
125
+ ```python
126
+ from canvod.auxiliary import Sp3Config, Sp3InterpolationStrategy
127
+ import numpy as np
128
+
129
+ # Configure interpolation
130
+ config = Sp3Config(use_velocities=True, fallback_method='cubic')
131
+ strategy = Sp3InterpolationStrategy(config=config)
132
+
133
+ # Interpolate to new epochs
134
+ target_epochs = np.array([...]) # Your target timestamps
135
+ interpolated = strategy.interpolate(sp3_dataset, target_epochs)
136
+ ```
137
+
138
+ ## Documentation
139
+
140
+ [Centralized documentation](../../docs/packages/auxiliary/overview.md)
141
+
142
+ ## Package Structure
143
+
144
+ ```
145
+ canvod-auxiliary/
146
+ ├── src/canvod/aux/
147
+ │ ├── __init__.py # Public API
148
+ │ ├── _internal/ # Internal utilities
149
+ │ │ ├── units.py # UREG unit registry
150
+ │ │ ├── date_utils.py # YYYYDOY, GPS week utils
151
+ │ │ └── logger.py # Logging utilities
152
+ │ ├── reader.py # AuxFile ABC
153
+ │ ├── container.py # FTP downloader
154
+ │ ├── interpolation.py # Interpolation strategies
155
+ │ ├── sp3.py # SP3 handler
156
+ │ ├── clk.py # CLK handler
157
+ │ ├── pipeline.py # AuxDataPipeline
158
+ │ └── augmentation.py # Augmentation framework
159
+ ├── tests/ # 65 tests, 100% core coverage
160
+ ├── docs/ # MyST documentation
161
+ └── pyproject.toml
162
+ ```
163
+
164
+ ## Development
165
+
166
+ ### Setup
167
+
168
+ ```bash
169
+ # Clone repository
170
+ git clone https://github.com/nfb2021/canvodpy.git
171
+ cd canvodpy/packages/canvod-auxiliary
172
+
173
+ # Install dependencies
174
+ uv sync
175
+
176
+ # Install pre-commit hooks
177
+ pre-commit install
178
+ ```
179
+
180
+ ### Commands
181
+
182
+ ```bash
183
+ # Run tests
184
+ pytest
185
+
186
+ # With coverage
187
+ pytest --cov=canvod.auxiliary --cov-report=html
188
+
189
+ # Lint and format
190
+ ruff check .
191
+ ruff format .
192
+
193
+ # Type check
194
+ ty check src/
195
+ ```
196
+
197
+ ### Project Tasks (Just)
198
+
199
+ If you have [Just](https://github.com/casey/just) installed:
200
+
201
+ ```bash
202
+ just test # Run tests
203
+ just check # Lint + format check
204
+ just fix # Auto-fix linting issues
205
+ just docs # Build documentation
206
+ ```
207
+
208
+ ## Dependencies
209
+
210
+ **Core:**
211
+ - scipy ≥1.15.0
212
+ - numpy ≥1.24.0
213
+ - xarray ≥2023.12.0
214
+ - pydantic ≥2.5.0
215
+ - pint ≥0.23
216
+
217
+ **Network:**
218
+ - requests ≥2.31.0
219
+
220
+ - retrying ≥1.3.4
221
+ - beautifulsoup4 ≥4.12.0
222
+ - lxml ≥5.3.0
223
+
224
+ **Development:**
225
+ - pytest ≥8.0
226
+ - pytest-cov ≥5.0
227
+ - ruff ≥0.14
228
+ - ty ≥0.0.9
229
+
230
+ ## Contributing
231
+
232
+ Contributions welcome! Please see the [main repository](https://github.com/nfb2021/canvodpy) for contribution guidelines.
233
+
234
+ ## License
235
+
236
+ Apache License 2.0 - See LICENSE file
237
+
238
+ ## Related Packages
239
+
240
+ Part of the canVODpy ecosystem:
241
+
242
+ - **[canvod-readers](../canvod-readers/)** - RINEX data readers
243
+ - **[canvod-grids](../canvod-grids/)** - Hemisphere grids
244
+ - **[canvod-vod](../canvod-vod/)** - VOD calculations
245
+ - **[canvod-store](../canvod-store/)** - Icechunk storage
246
+ - **[canvod-viz](../canvod-viz/)** - Visualization
247
+ - **[canvodpy](../../canvodpy/)** - Umbrella package
248
+
249
+ ## Citation
250
+
251
+ If you use canvod-auxiliary in your research, please cite:
252
+
253
+ ```bibtex
254
+ @software{canvodpy2026,
255
+ author = {Bader, Nicolas F.},
256
+ title = {canVODpy: GNSS Transmissometry Analysis},
257
+ year = {2026},
258
+ publisher = {TU Wien},
259
+ url = {https://github.com/nfb2021/canvodpy}
260
+ }
261
+ ```
262
+
263
+ ## Author & Affiliation
264
+
265
+ **Nicolas François Bader**
266
+ Climate and Environmental Remote Sensing Research Unit (CLIMERS)
267
+ Department of Geodesy and Geoinformation
268
+ TU Wien (Vienna University of Technology)
269
+ Email: nicolas.bader@geo.tuwien.ac.at
270
+ [https://www.tuwien.at/en/mg/geo/climers](https://www.tuwien.at/en/mg/geo/climers)
@@ -0,0 +1,238 @@
1
+ # canvod-auxiliary
2
+
3
+ **Auxiliary data augmentation for GNSS VOD analysis**
4
+
5
+ Part of the [canVODpy](https://github.com/nfb2021/canvodpy) ecosystem.
6
+
7
+ ## Overview
8
+
9
+ `canvod-auxiliary` provides tools for downloading, parsing, and interpolating auxiliary GNSS data files including:
10
+
11
+ - **SP3 ephemerides** - Satellite orbit positions and velocities
12
+ - **CLK corrections** - Satellite clock corrections
13
+ - **Interpolation strategies** - Hermite and linear interpolation for temporal alignment
14
+ - **Augmentation framework** - Pluggable system for enriching RINEX datasets
15
+
16
+ ## Features
17
+
18
+ **SP3 File Handling**
19
+ - Download from ESA or NASA CDDIS servers
20
+ - Parse SP3 format (positions + velocities)
21
+ - Cubic Hermite interpolation using velocities
22
+ - Fallback to linear interpolation
23
+
24
+ **Clock Corrections**
25
+ - CLK file download and parsing
26
+ - Jump-aware interpolation
27
+ - Segment-based processing
28
+
29
+ **Flexible Pipeline**
30
+ - Automatic file discovery and caching
31
+ - Thread-safe downloading
32
+ - Configurable FTP servers and agencies
33
+
34
+ **Augmentation System**
35
+ - Spherical coordinate calculation (φ, θ, r)
36
+ - Clock correction application
37
+ - Extensible via ABC pattern
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ # From PyPI (when published)
43
+ pip install canvod-auxiliary
44
+
45
+ # Development install
46
+ cd canvodpy/packages/canvod-auxiliary
47
+ uv pip install -e .
48
+ ```
49
+
50
+ ## Quick Start
51
+
52
+ ### Basic SP3 Usage
53
+
54
+ ```python
55
+ from pathlib import Path
56
+ from canvod.auxiliary import Sp3File
57
+
58
+ # Load SP3 ephemeris file
59
+ sp3 = Sp3File.from_file(Path("COD0MGXFIN_20240150000_01D_05M_ORB.SP3"))
60
+
61
+ # Access data as xarray Dataset
62
+ data = sp3.data
63
+ print(data) # Coordinates: epoch, sid | Variables: X, Y, Z, Vx, Vy, Vz
64
+
65
+ # Get interpolation strategy
66
+ strategy = sp3.get_interpolation_strategy()
67
+ print(strategy.config) # Sp3Config(use_velocities=True)
68
+ ```
69
+
70
+ ### Pipeline Usage
71
+
72
+ ```python
73
+ from canvod.auxiliary import AuxDataPipeline
74
+ from pathlib import Path
75
+
76
+ # Create pipeline
77
+ pipeline = AuxDataPipeline(
78
+ agency="COD",
79
+ product_type="final",
80
+ ftp_server="ftp://gssc.esa.int/gnss",
81
+ aux_file_path=Path("aux_data")
82
+ )
83
+
84
+ # Get augmented data for specific date
85
+ augmented_ds = pipeline.get_or_create_aux_data(
86
+ yyyydoy="2024015",
87
+ target_epochs=my_rinex_epochs
88
+ )
89
+ ```
90
+
91
+ ### Custom Interpolation
92
+
93
+ ```python
94
+ from canvod.auxiliary import Sp3Config, Sp3InterpolationStrategy
95
+ import numpy as np
96
+
97
+ # Configure interpolation
98
+ config = Sp3Config(use_velocities=True, fallback_method='cubic')
99
+ strategy = Sp3InterpolationStrategy(config=config)
100
+
101
+ # Interpolate to new epochs
102
+ target_epochs = np.array([...]) # Your target timestamps
103
+ interpolated = strategy.interpolate(sp3_dataset, target_epochs)
104
+ ```
105
+
106
+ ## Documentation
107
+
108
+ [Centralized documentation](../../docs/packages/auxiliary/overview.md)
109
+
110
+ ## Package Structure
111
+
112
+ ```
113
+ canvod-auxiliary/
114
+ ├── src/canvod/aux/
115
+ │ ├── __init__.py # Public API
116
+ │ ├── _internal/ # Internal utilities
117
+ │ │ ├── units.py # UREG unit registry
118
+ │ │ ├── date_utils.py # YYYYDOY, GPS week utils
119
+ │ │ └── logger.py # Logging utilities
120
+ │ ├── reader.py # AuxFile ABC
121
+ │ ├── container.py # FTP downloader
122
+ │ ├── interpolation.py # Interpolation strategies
123
+ │ ├── sp3.py # SP3 handler
124
+ │ ├── clk.py # CLK handler
125
+ │ ├── pipeline.py # AuxDataPipeline
126
+ │ └── augmentation.py # Augmentation framework
127
+ ├── tests/ # 65 tests, 100% core coverage
128
+ ├── docs/ # MyST documentation
129
+ └── pyproject.toml
130
+ ```
131
+
132
+ ## Development
133
+
134
+ ### Setup
135
+
136
+ ```bash
137
+ # Clone repository
138
+ git clone https://github.com/nfb2021/canvodpy.git
139
+ cd canvodpy/packages/canvod-auxiliary
140
+
141
+ # Install dependencies
142
+ uv sync
143
+
144
+ # Install pre-commit hooks
145
+ pre-commit install
146
+ ```
147
+
148
+ ### Commands
149
+
150
+ ```bash
151
+ # Run tests
152
+ pytest
153
+
154
+ # With coverage
155
+ pytest --cov=canvod.auxiliary --cov-report=html
156
+
157
+ # Lint and format
158
+ ruff check .
159
+ ruff format .
160
+
161
+ # Type check
162
+ ty check src/
163
+ ```
164
+
165
+ ### Project Tasks (Just)
166
+
167
+ If you have [Just](https://github.com/casey/just) installed:
168
+
169
+ ```bash
170
+ just test # Run tests
171
+ just check # Lint + format check
172
+ just fix # Auto-fix linting issues
173
+ just docs # Build documentation
174
+ ```
175
+
176
+ ## Dependencies
177
+
178
+ **Core:**
179
+ - scipy ≥1.15.0
180
+ - numpy ≥1.24.0
181
+ - xarray ≥2023.12.0
182
+ - pydantic ≥2.5.0
183
+ - pint ≥0.23
184
+
185
+ **Network:**
186
+ - requests ≥2.31.0
187
+
188
+ - retrying ≥1.3.4
189
+ - beautifulsoup4 ≥4.12.0
190
+ - lxml ≥5.3.0
191
+
192
+ **Development:**
193
+ - pytest ≥8.0
194
+ - pytest-cov ≥5.0
195
+ - ruff ≥0.14
196
+ - ty ≥0.0.9
197
+
198
+ ## Contributing
199
+
200
+ Contributions welcome! Please see the [main repository](https://github.com/nfb2021/canvodpy) for contribution guidelines.
201
+
202
+ ## License
203
+
204
+ Apache License 2.0 - See LICENSE file
205
+
206
+ ## Related Packages
207
+
208
+ Part of the canVODpy ecosystem:
209
+
210
+ - **[canvod-readers](../canvod-readers/)** - RINEX data readers
211
+ - **[canvod-grids](../canvod-grids/)** - Hemisphere grids
212
+ - **[canvod-vod](../canvod-vod/)** - VOD calculations
213
+ - **[canvod-store](../canvod-store/)** - Icechunk storage
214
+ - **[canvod-viz](../canvod-viz/)** - Visualization
215
+ - **[canvodpy](../../canvodpy/)** - Umbrella package
216
+
217
+ ## Citation
218
+
219
+ If you use canvod-auxiliary in your research, please cite:
220
+
221
+ ```bibtex
222
+ @software{canvodpy2026,
223
+ author = {Bader, Nicolas F.},
224
+ title = {canVODpy: GNSS Transmissometry Analysis},
225
+ year = {2026},
226
+ publisher = {TU Wien},
227
+ url = {https://github.com/nfb2021/canvodpy}
228
+ }
229
+ ```
230
+
231
+ ## Author & Affiliation
232
+
233
+ **Nicolas François Bader**
234
+ Climate and Environmental Remote Sensing Research Unit (CLIMERS)
235
+ Department of Geodesy and Geoinformation
236
+ TU Wien (Vienna University of Technology)
237
+ Email: nicolas.bader@geo.tuwien.ac.at
238
+ [https://www.tuwien.at/en/mg/geo/climers](https://www.tuwien.at/en/mg/geo/climers)
@@ -0,0 +1,85 @@
1
+ [project]
2
+ name = "canvod-auxiliary"
3
+ version = "0.2.0"
4
+ description = "Auxiliary data augmentation for GNSS VOD analysis"
5
+ authors = [
6
+ {name = "Nicolas François Bader", email = "nicolas.bader@geo.tuwien.ac.at"}
7
+ ]
8
+ maintainers = [
9
+ {name = "Climate and Environmental Remote Sensing (CLIMERS)", email = "nicolas.bader@geo.tuwien.ac.at"}
10
+ ]
11
+ readme = "README.md"
12
+ requires-python = ">=3.14"
13
+ keywords = ["GNSS", "VOD", "auxiliary", "SP3", "CLK", "ephemeris", "clock"]
14
+ classifiers = [
15
+ "Development Status :: 3 - Alpha",
16
+ "Intended Audience :: Science/Research",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.14",
20
+ ]
21
+
22
+ dependencies = [
23
+ "canvod-readers>=0.1.0",
24
+ "scipy>=1.15.0",
25
+ "numpy>=1.24.0",
26
+ "xarray>=2023.12.0",
27
+ "pydantic>=2.5.0",
28
+ "requests>=2.31.0",
29
+
30
+ "retrying>=1.3.4",
31
+ "beautifulsoup4>=4.12.0",
32
+ "lxml>=5.3.0",
33
+ "pint>=0.23",
34
+ "pymap3d>=3.0.0",
35
+ "tqdm>=4.67.1",
36
+ "hvplot>=0.12.2",
37
+ "plotly>=6.5.1",
38
+ "mcp>=1.25.0",
39
+ ]
40
+
41
+ [dependency-groups]
42
+ dev = [
43
+ "pytest>=8.0",
44
+ "pytest-cov>=5.0",
45
+ "ruff>=0.14",
46
+ "ty>=0.0.9",
47
+ "marimo>=0.9.0",
48
+ "matplotlib>=3.8.0",
49
+ "polars>=1.0.0",
50
+ ]
51
+
52
+ [tool.uv.sources]
53
+ canvod-readers = { workspace = true }
54
+
55
+ [build-system]
56
+ requires = ["uv_build>=0.9.17,<0.10.0"]
57
+ build-backend = "uv_build"
58
+
59
+ [tool.uv.build-backend]
60
+ module-name = "canvod.auxiliary"
61
+
62
+ [tool.ruff]
63
+ line-length = 88
64
+ target-version = "py314"
65
+
66
+ [tool.ruff.lint]
67
+ select = ["E", "F", "I", "N", "W", "UP"]
68
+ ignore = []
69
+
70
+ [tool.pytest.ini_options]
71
+ testpaths = ["tests"]
72
+ python_files = ["test_*.py"]
73
+ python_classes = ["Test*"]
74
+ python_functions = ["test_*"]
75
+ addopts = [
76
+ "-v",
77
+ "--strict-markers",
78
+ "--tb=short",
79
+ "--disable-warnings",
80
+ ]
81
+ markers = [
82
+ "slow: marks tests as slow (deselect with '-m \"not slow\"')",
83
+ "integration: marks tests as integration tests",
84
+ "network: marks tests that require network access",
85
+ ]