firecube 0.1.4__py3-none-any.whl

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 (197) hide show
  1. firecube/__init__.py +23 -0
  2. firecube/__main__.py +20 -0
  3. firecube/_version.py +46 -0
  4. firecube/cli/_audience.py +135 -0
  5. firecube/cli/_command_schemas.py +112 -0
  6. firecube/cli/_ctx.py +85 -0
  7. firecube/cli/_errors.py +115 -0
  8. firecube/cli/_formatter.py +195 -0
  9. firecube/cli/_product.py +47 -0
  10. firecube/cli/_rename_hints.py +123 -0
  11. firecube/cli/_shared_options.py +247 -0
  12. firecube/cli/_slot_env.py +102 -0
  13. firecube/cli/_slot_planning.py +95 -0
  14. firecube/cli/_typed_options.py +181 -0
  15. firecube/cli/_uri_policy.py +110 -0
  16. firecube/cli/advise.py +321 -0
  17. firecube/cli/archive.py +870 -0
  18. firecube/cli/catalog.py +196 -0
  19. firecube/cli/chunks/__init__.py +74 -0
  20. firecube/cli/chunks/_claims.py +229 -0
  21. firecube/cli/chunks/_common.py +84 -0
  22. firecube/cli/chunks/_delete.py +376 -0
  23. firecube/cli/chunks/_list.py +334 -0
  24. firecube/cli/chunks/_manager.py +161 -0
  25. firecube/cli/chunks/_runs.py +294 -0
  26. firecube/cli/chunks/_snapshots.py +165 -0
  27. firecube/cli/completion.py +73 -0
  28. firecube/cli/main.py +866 -0
  29. firecube/cli/parquet.py +289 -0
  30. firecube/cli/plugins/__init__.py +28 -0
  31. firecube/cli/plugins/commands.py +262 -0
  32. firecube/cli/plugins/introspect.py +304 -0
  33. firecube/cli/plugins/mgmt.py +198 -0
  34. firecube/cli/plugins/registry.py +132 -0
  35. firecube/cli/zarr.py +1043 -0
  36. firecube/core/__init__.py +14 -0
  37. firecube/core/api.py +88 -0
  38. firecube/core/cf/__init__.py +23 -0
  39. firecube/core/cf/check_ids.py +126 -0
  40. firecube/core/cf/report.py +57 -0
  41. firecube/core/cf/validator.py +313 -0
  42. firecube/core/config.py +307 -0
  43. firecube/core/controlplane/__init__.py +47 -0
  44. firecube/core/controlplane/_event_processor.py +136 -0
  45. firecube/core/controlplane/_helpers.py +114 -0
  46. firecube/core/controlplane/_projection.py +253 -0
  47. firecube/core/controlplane/_snapshot.py +215 -0
  48. firecube/core/controlplane/_wal_reader.py +402 -0
  49. firecube/core/controlplane/_wal_writer.py +589 -0
  50. firecube/core/controlplane/claims.py +294 -0
  51. firecube/core/controlplane/deletion.py +704 -0
  52. firecube/core/controlplane/events.py +219 -0
  53. firecube/core/controlplane/manager.py +990 -0
  54. firecube/core/controlplane/metrics.py +97 -0
  55. firecube/core/controlplane/repo.py +804 -0
  56. firecube/core/controlplane/repo_utils.py +73 -0
  57. firecube/core/controlplane/time_dim.py +111 -0
  58. firecube/core/controlplane/types.py +445 -0
  59. firecube/core/credentials.py +36 -0
  60. firecube/core/duckdb/__init__.py +27 -0
  61. firecube/core/duckdb/bridge.py +82 -0
  62. firecube/core/duckdb/io.py +30 -0
  63. firecube/core/errors.py +74 -0
  64. firecube/core/filesystem/__init__.py +60 -0
  65. firecube/core/filesystem/_obstore_compat.py +60 -0
  66. firecube/core/filesystem/fsspec_backend.py +308 -0
  67. firecube/core/filesystem/instrumentation.py +260 -0
  68. firecube/core/filesystem/obstore_backend.py +406 -0
  69. firecube/core/filesystem/ops.py +412 -0
  70. firecube/core/filesystem/protocol.py +130 -0
  71. firecube/core/filesystem/store_factory.py +149 -0
  72. firecube/core/formats/__init__.py +46 -0
  73. firecube/core/formats/_iso.py +84 -0
  74. firecube/core/formats/discovery.py +165 -0
  75. firecube/core/formats/hdf5.py +137 -0
  76. firecube/core/formats/netcdf.py +226 -0
  77. firecube/core/formats/zip.py +192 -0
  78. firecube/core/intake.py +530 -0
  79. firecube/core/observability/__init__.py +72 -0
  80. firecube/core/observability/_state.py +24 -0
  81. firecube/core/observability/logging.py +147 -0
  82. firecube/core/observability/metrics.py +230 -0
  83. firecube/core/observability/telemetry/__init__.py +87 -0
  84. firecube/core/observability/telemetry/pushgateway.py +339 -0
  85. firecube/core/observability/telemetry/sinks.py +155 -0
  86. firecube/core/observability/tracing.py +126 -0
  87. firecube/core/product/__init__.py +45 -0
  88. firecube/core/product/identity.py +76 -0
  89. firecube/core/product/resolver.py +121 -0
  90. firecube/core/product/target.py +120 -0
  91. firecube/core/runtime.py +187 -0
  92. firecube/core/slot_index.py +205 -0
  93. firecube/core/storage/__init__.py +45 -0
  94. firecube/core/storage/binding.py +39 -0
  95. firecube/core/storage/cache_key.py +40 -0
  96. firecube/core/storage/completion.py +245 -0
  97. firecube/core/storage/driver_config.py +125 -0
  98. firecube/core/storage/results.py +30 -0
  99. firecube/core/storage/session.py +431 -0
  100. firecube/core/storage/transfer.py +142 -0
  101. firecube/core/storage/uri.py +173 -0
  102. firecube/core/tensogram/__init__.py +37 -0
  103. firecube/core/tensogram/_compat.py +36 -0
  104. firecube/core/tensogram/controlplane_codec.py +230 -0
  105. firecube/core/tensogram/converter.py +390 -0
  106. firecube/core/tensogram/metadata.py +274 -0
  107. firecube/core/tensogram/restore.py +303 -0
  108. firecube/core/tensogram/schema.py +93 -0
  109. firecube/core/uris.py +182 -0
  110. firecube/core/workspaces.py +68 -0
  111. firecube/core/zarr/__init__.py +69 -0
  112. firecube/core/zarr/_reserved_attrs.py +47 -0
  113. firecube/core/zarr/_reserved_root_attrs.py +74 -0
  114. firecube/core/zarr/io.py +88 -0
  115. firecube/core/zarr/layers.py +184 -0
  116. firecube/core/zarr/multires.py +178 -0
  117. firecube/core/zarr/region_writer.py +782 -0
  118. firecube/core/zarr/scrub.py +200 -0
  119. firecube/core/zarr/state.py +258 -0
  120. firecube/core/zarr/time_decode.py +71 -0
  121. firecube/core/zarr/validation.py +622 -0
  122. firecube/ingestor/__init__.py +27 -0
  123. firecube/ingestor/api.py +215 -0
  124. firecube/ingestor/config/__init__.py +19 -0
  125. firecube/ingestor/config/coercion.py +157 -0
  126. firecube/ingestor/config/engine.py +188 -0
  127. firecube/ingestor/contracts/__init__.py +14 -0
  128. firecube/ingestor/contracts/interfaces.py +235 -0
  129. firecube/ingestor/devtools/_templates/__init__.py +14 -0
  130. firecube/ingestor/devtools/_templates/ingestor_base.py.tpl +72 -0
  131. firecube/ingestor/devtools/_templates/ingestor_direct_zarr.py.tpl +66 -0
  132. firecube/ingestor/devtools/_templates/ingestor_parquet.py.tpl +59 -0
  133. firecube/ingestor/devtools/_templates/ingestor_zarr.py.tpl +55 -0
  134. firecube/ingestor/devtools/_templates/readme.md.tpl +40 -0
  135. firecube/ingestor/devtools/scaffolding.py +229 -0
  136. firecube/ingestor/errors.py +79 -0
  137. firecube/ingestor/extensions/_binning.py +152 -0
  138. firecube/ingestor/extensions/duck.py +153 -0
  139. firecube/ingestor/extensions/grid.py +287 -0
  140. firecube/ingestor/extensions/healpix.py +330 -0
  141. firecube/ingestor/registry/__init__.py +14 -0
  142. firecube/ingestor/registry/loader.py +144 -0
  143. firecube/ingestor/registry/metadata.py +97 -0
  144. firecube/ingestor/registry/version_compat.py +95 -0
  145. firecube/ingestor/runtime/__init__.py +14 -0
  146. firecube/ingestor/runtime/aggregation.py +112 -0
  147. firecube/ingestor/runtime/base.py +836 -0
  148. firecube/ingestor/runtime/base_hooks.py +129 -0
  149. firecube/ingestor/runtime/batching.py +161 -0
  150. firecube/ingestor/runtime/configure.py +195 -0
  151. firecube/ingestor/runtime/coverage.py +177 -0
  152. firecube/ingestor/runtime/engine.py +793 -0
  153. firecube/ingestor/runtime/parallel_evidence.py +75 -0
  154. firecube/ingestor/runtime/parallel_execution_state.py +28 -0
  155. firecube/ingestor/runtime/parallel_gate.py +164 -0
  156. firecube/ingestor/runtime/parallel_run_id.py +48 -0
  157. firecube/ingestor/runtime/preflight.py +40 -0
  158. firecube/ingestor/runtime/recording.py +425 -0
  159. firecube/ingestor/runtime/resume_guard.py +556 -0
  160. firecube/ingestor/runtime/resume_types.py +65 -0
  161. firecube/ingestor/runtime/telemetry.py +171 -0
  162. firecube/ingestor/runtime/tensogram/__init__.py +14 -0
  163. firecube/ingestor/runtime/tensogram/strategy.py +164 -0
  164. firecube/ingestor/runtime/workspace.py +220 -0
  165. firecube/ingestor/runtime/zarr/__init__.py +34 -0
  166. firecube/ingestor/runtime/zarr/append.py +466 -0
  167. firecube/ingestor/runtime/zarr/append_services.py +650 -0
  168. firecube/ingestor/runtime/zarr/batch_runner.py +190 -0
  169. firecube/ingestor/runtime/zarr/contracts.py +58 -0
  170. firecube/ingestor/runtime/zarr/existing_cube_check.py +282 -0
  171. firecube/ingestor/runtime/zarr/resume_cache.py +92 -0
  172. firecube/ingestor/runtime/zarr/staged_metadata.py +249 -0
  173. firecube/ingestor/runtime/zarr/strategies/__init__.py +15 -0
  174. firecube/ingestor/runtime/zarr/strategies/append.py +172 -0
  175. firecube/ingestor/runtime/zarr/strategies/indexed_region.py +426 -0
  176. firecube/ingestor/runtime/zarr/write.py +212 -0
  177. firecube/ingestor/runtime/zarr/write_context.py +139 -0
  178. firecube/ingestor/templates/__init__.py +19 -0
  179. firecube/ingestor/templates/config.py +118 -0
  180. firecube/ingestor/templates/direct_zarr.py +790 -0
  181. firecube/ingestor/templates/generic.py +462 -0
  182. firecube/ingestor/templates/generic_tensogram.py +170 -0
  183. firecube/ingestor/types/__init__.py +19 -0
  184. firecube/ingestor/types/config.py +89 -0
  185. firecube/ingestor/types/context.py +409 -0
  186. firecube/ingestor/types/manifest.py +53 -0
  187. firecube/ingestor/types/planned_range.py +152 -0
  188. firecube/ingestor/types/result_metrics.py +386 -0
  189. firecube/ingestor/utils/__init__.py +14 -0
  190. firecube/ingestor/utils/duckdb_utils.py +235 -0
  191. firecube/ingestor/validation.py +55 -0
  192. firecube-0.1.4.dist-info/METADATA +242 -0
  193. firecube-0.1.4.dist-info/RECORD +197 -0
  194. firecube-0.1.4.dist-info/WHEEL +4 -0
  195. firecube-0.1.4.dist-info/entry_points.txt +2 -0
  196. firecube-0.1.4.dist-info/licenses/AUTHORS.md +5 -0
  197. firecube-0.1.4.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: firecube
3
+ Version: 0.1.4
4
+ Summary: Ingestion API for EO datasets
5
+ Author-email: Armagan Karatosun <armagan.karatosun@eumetsat.int>, Anna-Lena Erdmann <anna-lena.erdmann@eumetsat.int>, Carlos Horn <carlos.horn@eumetsat.int>
6
+ License: Apache-2.0
7
+ License-File: AUTHORS.md
8
+ License-File: LICENSE
9
+ Requires-Python: >=3.12
10
+ Requires-Dist: botocore[crt]>=1.42.19
11
+ Requires-Dist: dask[array]>=2025.1.0
12
+ Requires-Dist: duckdb>=1.4.1
13
+ Requires-Dist: fsspec>=2025.9.0
14
+ Requires-Dist: h5netcdf>=1.4.2
15
+ Requires-Dist: h5py>=3.11.0
16
+ Requires-Dist: netcdf4>=1.7.1.post2
17
+ Requires-Dist: numpy>=2.3.3
18
+ Requires-Dist: opentelemetry-exporter-otlp>=1.37.0
19
+ Requires-Dist: opentelemetry-sdk>=1.37.0
20
+ Requires-Dist: pandas>=2.3.3
21
+ Requires-Dist: prometheus-client>=0.23.1
22
+ Requires-Dist: psutil>=7.1.0
23
+ Requires-Dist: pyarrow>=16.1.0
24
+ Requires-Dist: s3fs>=2025.9.0
25
+ Requires-Dist: xarray>=2025.10.1
26
+ Requires-Dist: zarr>=3.1.3
27
+ Provides-Extra: healpix
28
+ Requires-Dist: healpix-geo>=0.1.2; extra == 'healpix'
29
+ Provides-Extra: obstore
30
+ Requires-Dist: obstore>=0.4.0; extra == 'obstore'
31
+ Provides-Extra: tensogram
32
+ Requires-Dist: tensogram-xarray<0.23,>=0.22.0; extra == 'tensogram'
33
+ Requires-Dist: tensogram-zarr<0.23,>=0.22.0; extra == 'tensogram'
34
+ Requires-Dist: tensogram<0.23,>=0.22.0; extra == 'tensogram'
35
+ Provides-Extra: test
36
+ Requires-Dist: healpix-geo>=0.1.2; extra == 'test'
37
+ Requires-Dist: moto[s3,server]>=5.0.0; extra == 'test'
38
+ Requires-Dist: obstore>=0.4.0; extra == 'test'
39
+ Requires-Dist: tensogram-xarray<0.23,>=0.22.0; extra == 'test'
40
+ Requires-Dist: tensogram-zarr<0.23,>=0.22.0; extra == 'test'
41
+ Requires-Dist: tensogram<0.23,>=0.22.0; extra == 'test'
42
+ Provides-Extra: virtualzarr
43
+ Requires-Dist: virtualizarr<3,>=2.7.0; extra == 'virtualzarr'
44
+ Description-Content-Type: text/markdown
45
+
46
+ <p align="center">
47
+ <img src="docs/assets/firecube-logo-title.png" alt="Firecube Logo" width="165">
48
+ </p>
49
+
50
+ <p align="center">
51
+ <strong>Plugin-driven CLI for turning Earth Observation products into analysis-ready datacubes</strong>
52
+ </p>
53
+
54
+ <p align="center">
55
+ <a href="docs/index.md">Documentation</a> |
56
+ <a href="docs/quickstart/index.md">Quickstart</a> |
57
+ <a href="docs/concepts/plugins/create-a-plugin.md">Create a Plugin</a> |
58
+ <a href="docs/tutorials/weather-csv.md">Plugin Tutorial</a>
59
+ </p>
60
+
61
+
62
+ ## Installation
63
+
64
+ Firecube requires **Python 3.12+**. We recommend using `uv` for lightning-fast dependency management and isolated environments.
65
+
66
+ ### 1. Clone the Repository
67
+
68
+ Clone the core Firecube ingestor repository:
69
+
70
+ ```bash
71
+ git clone https://github.com/eumetsat/firecube.git
72
+ cd firecube
73
+ ```
74
+
75
+ ### 2. Setup Environment
76
+
77
+ Use `uv` to install dependencies and prepare the virtual environment:
78
+
79
+ ```bash
80
+ uv venv --python 3.12
81
+ uv sync
82
+ ```
83
+
84
+ ### 3. Verify CLI
85
+
86
+ Confirm the installation by checking the version:
87
+
88
+ ```bash
89
+ uv run firecube --version
90
+ ```
91
+
92
+ ## Use A Plugin
93
+
94
+ Install an external plugin using the package name or local checkout documented
95
+ by that plugin:
96
+
97
+ ```bash
98
+ uv run firecube plugins install <plugin-package>
99
+ uv run firecube plugins list
100
+ uv run firecube plugins describe <plugin>
101
+ ```
102
+
103
+ Then follow the plugin documentation for its source data and options. Firecube
104
+ ingest commands always require explicit product flags; storage settings are
105
+ inferred from the URI scheme by default:
106
+
107
+ ```bash
108
+ uv run firecube ingest <plugin> \
109
+ --input-data file://${PWD}/source-data \
110
+ --target "file://${PWD}/my_product.zarr" \
111
+ --product-name my_product \
112
+ --output-format zarr \
113
+ --write-mode direct
114
+ ```
115
+
116
+ ```bash
117
+ # explicit storage override if needed
118
+ uv run firecube ingest <plugin> \
119
+ --input-data file://${PWD}/source-data \
120
+ --target "file://${PWD}/my_product.zarr" \
121
+ --product-name my_product \
122
+ --storage-type local \
123
+ --storage-driver obstore \
124
+ --output-format zarr \
125
+ --write-mode direct
126
+ ```
127
+
128
+ For the full first-run path, use the
129
+ [Quickstart](docs/quickstart/index.md).
130
+
131
+ ## Documentation
132
+
133
+ - [Installation](docs/quickstart/installation.md)
134
+ - [Plugin setup](docs/quickstart/plugins.md)
135
+ - [Run ingestion](docs/quickstart/ingestion.md)
136
+ - [Configuration](docs/quickstart/configuration.md)
137
+ - [CLI reference](docs/reference/cli.md)
138
+
139
+ Build or serve the docs locally:
140
+
141
+ ```bash
142
+ uv sync --group docs
143
+ uv run mkdocs serve
144
+ uv run mkdocs build
145
+ ```
146
+
147
+ ## Development
148
+
149
+ Install test extras and run the main local gate:
150
+
151
+ ```bash
152
+ uv sync --extra test
153
+ uv run pytest --strict-deps -m "not slow and not s3"
154
+ ```
155
+
156
+ ## Software Bill Of Materials
157
+
158
+ Regenerate the CycloneDX 1.5 SBOM and the dependency-license report locally with:
159
+
160
+ ```bash
161
+ mkdir -p reports
162
+ uv export --format cyclonedx1.5 --all-groups --all-extras --output-file reports/sbom.cdx.json
163
+ uv run --isolated --all-groups --all-extras --with hatchling --with pip-licenses pip-licenses --format=json --with-urls > reports/dependency-licenses.json
164
+ ```
165
+
166
+ The SBOM covers all uv dependency groups and extras. Use the dependency license
167
+ report and package metadata for license review; do not rely on CycloneDX license
168
+ fields alone.
169
+
170
+ Included third-party components: none declared.
171
+
172
+ ### Direct Runtime And Optional Dependencies
173
+
174
+ The following dependencies are not included in the package but are required or
175
+ available as optional runtime extras:
176
+
177
+ | dependency | version | license | copyright | home_url | comments |
178
+ | --- | --- | --- | --- | --- | --- |
179
+ | `duckdb` | 1.5.4 | MIT | | https://github.com/duckdb/duckdb-python | Direct dependency. |
180
+ | `pandas` | 3.0.3 | BSD-3-Clause | | https://pandas.pydata.org | Direct dependency. |
181
+ | `numpy` | 2.5.0 | BSD-3-Clause | | https://numpy.org | Direct dependency. |
182
+ | `pyarrow` | 24.0.0 | Apache-2.0 | | https://arrow.apache.org/ | Direct dependency. |
183
+ | `xarray` | 2026.4.0 | Apache-2.0 | | https://xarray.dev/ | Direct dependency. |
184
+ | `zarr` | 3.2.1 | MIT | | https://github.com/zarr-developers/zarr-python | Direct dependency. |
185
+ | `psutil` | 7.2.2 | BSD-3-Clause | | https://github.com/giampaolo/psutil | Direct dependency. |
186
+ | `fsspec` | 2026.6.0 | BSD-3-Clause | | https://github.com/fsspec/filesystem_spec | Direct dependency. |
187
+ | `s3fs` | 2026.6.0 | BSD-3-Clause | | http://github.com/fsspec/s3fs/ | Direct dependency. |
188
+ | `botocore` | 1.43.0 | Apache-2.0 | | https://github.com/boto/botocore | Direct dependency. |
189
+ | `netcdf4` | 1.7.4 | MIT | | https://github.com/Unidata/netcdf4-python | Direct dependency. |
190
+ | `h5netcdf` | 1.8.1 | BSD-3-Clause | | https://h5netcdf.org | Direct dependency. |
191
+ | `h5py` | 3.16.0 | BSD-3-Clause | | https://www.h5py.org/ | Direct dependency. |
192
+ | `dask` | 2026.6.0 | BSD-3-Clause | | https://github.com/dask/dask/ | Direct dependency. |
193
+ | `prometheus-client` | 0.25.0 | Apache-2.0 | | https://github.com/prometheus/client_python | Direct dependency. |
194
+ | `opentelemetry-sdk` | 1.43.0 | Apache-2.0 | | https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-sdk | Direct dependency. |
195
+ | `opentelemetry-exporter-otlp` | 1.43.0 | Apache-2.0 | | https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/opentelemetry-exporter-otlp | Direct dependency. |
196
+ | `obstore` | 0.11.0 | MIT | | https://developmentseed.org/obstore | Direct optional `obstore` extra dependency. |
197
+ | `tensogram` | 0.22.0 | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `tensogram` extra dependency. |
198
+ | `tensogram-xarray` | 0.22.0 | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `tensogram` extra dependency. |
199
+ | `tensogram-zarr` | 0.22.0 | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `tensogram` extra dependency. |
200
+ | `healpix-geo` | 0.1.2 | Apache-2.0 | | https://pypi.org/project/healpix-geo/ | Direct optional `healpix` extra dependency. |
201
+ | `virtualizarr` | 2.7.0 | Apache-2.0 | | https://github.com/zarr-developers/VirtualiZarr | Direct optional `virtualzarr` extra dependency. |
202
+
203
+ ### Direct Build, Edit, And Test Dependencies
204
+
205
+ The following dependencies are only required for building, editing,
206
+ documentation, or testing:
207
+
208
+ | dependency | version | sw type | license | copyright | home_url | comments |
209
+ | --- | --- | --- | --- | --- | --- | --- |
210
+ | `hatchling` | 1.30.1 | Development tools | MIT | | https://hatch.pypa.io/latest/ | Build backend dependency. |
211
+ | `tensogram` | 0.22.0 | Development tools | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `test` extra dependency. |
212
+ | `tensogram-xarray` | 0.22.0 | Development tools | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `test` extra dependency. |
213
+ | `tensogram-zarr` | 0.22.0 | Development tools | Apache-2.0 | | https://sites.ecmwf.int/docs/tensogram/main | Direct optional `test` extra dependency. |
214
+ | `obstore` | 0.11.0 | Development tools | MIT | | https://developmentseed.org/obstore | Direct optional `test` extra dependency. |
215
+ | `healpix-geo` | 0.1.2 | Development tools | Apache-2.0 | | https://pypi.org/project/healpix-geo/ | Direct optional `test` extra dependency. |
216
+ | `moto` | 5.2.2 | Development tools | Apache-2.0 | | https://github.com/getmoto/moto | Direct optional `test` extra dependency. |
217
+ | `pytest` | 9.1.1 | Development tools | MIT | | https://docs.pytest.org/en/latest/ | Direct `dev` dependency group entry. |
218
+ | `ruff` | 0.15.20 | Development tools | MIT | | https://docs.astral.sh/ruff | Direct `dev` dependency group entry. |
219
+ | `pytest-cov` | 7.1.0 | Development tools | MIT | | https://pytest-cov.readthedocs.io/en/latest/changelog.html | Direct `dev` dependency group entry. |
220
+ | `pytest-xdist` | 3.8.0 | Development tools | MIT | | https://github.com/pytest-dev/pytest-xdist | Direct `dev` dependency group entry. |
221
+ | `pytest-mock` | 3.15.1 | Development tools | MIT | | https://github.com/pytest-dev/pytest-mock/ | Direct `dev` dependency group entry. |
222
+ | `pytest-asyncio` | 1.4.0 | Development tools | Apache-2.0 | | https://github.com/pytest-dev/pytest-asyncio | Direct `dev` dependency group entry. |
223
+ | `pyright` | 1.1.411 | Development tools | MIT | | https://github.com/RobertCraigie/pyright-python | Direct `dev` dependency group entry. |
224
+ | `mkdocs` | 1.6.1 | Development tools | BSD-2-Clause | | https://github.com/mkdocs/mkdocs | Direct `docs` dependency group entry. |
225
+ | `mkdocs-material` | 9.7.6 | Development tools | MIT | | https://github.com/squidfunk/mkdocs-material | Direct `docs` dependency group entry. |
226
+ | `mkdocstrings` | 1.0.4 | Development tools | ISC | | https://mkdocstrings.github.io | Direct `docs` dependency group entry. |
227
+ | `mkdocs-mermaid2-plugin` | 1.2.3 | Development tools | MIT | | https://github.com/fralau/mkdocs-mermaid2-plugin | Direct `docs` dependency group entry. |
228
+ | `mkdocs-click` | 0.9.0 | Development tools | Apache-2.0 | | https://github.com/mkdocs/mkdocs-click | Direct `docs` dependency group entry. |
229
+ | `mkdocs-macros-plugin` | 1.5.0 | Development tools | MIT | | https://github.com/fralau/mkdocs_macros_plugin | Direct `docs` dependency group entry. |
230
+
231
+
232
+ ## Copyright and License
233
+
234
+ Copyright © EUMETSAT 2025-2026
235
+
236
+ The provided code and instructions are licensed under [Apache License, Version 2.0](./LICENSE).
237
+
238
+ Contact [EUMETSAT](http://www.eumetsat.int) for details on the usage and distribution terms.
239
+
240
+ ## Authors
241
+
242
+ See [AUTHORS.md](./AUTHORS.md).
@@ -0,0 +1,197 @@
1
+ firecube/__init__.py,sha256=9t7YgTkLLkw9ZwWh6Z7Gw-fIAe8K_-JZrn6lkiDPkP8,727
2
+ firecube/__main__.py,sha256=ofc5HR6wkdwPXSvGJzMTlwPPJ0yVm4NSv0mDpoTLrHY,682
3
+ firecube/_version.py,sha256=sPwiKzO9U-3l3AjOWJlm5T1oDBZTfQfU4JXdYXe_M3U,1486
4
+ firecube/cli/_audience.py,sha256=EYtFin7pnc9AjpNadp2FqB6xyTVydSleYXjjo1gtO-4,3632
5
+ firecube/cli/_command_schemas.py,sha256=YdvO1ig9aumIDd6N6V1KTilWwIWcTUbr_glUDOfarBQ,4472
6
+ firecube/cli/_ctx.py,sha256=W8l5yJ5FItRZg55HYIBn_dWIduOEUQ07P-nJxx0_oeU,2977
7
+ firecube/cli/_errors.py,sha256=UefBJQ-ZIfkrwMuAy9p3MUbgIMGH4qqDuY9vWJBoiwY,4157
8
+ firecube/cli/_formatter.py,sha256=_cud3F87Q-11qw0aA3vuavkiA28EaGOrWwr1IxnUsnI,6710
9
+ firecube/cli/_product.py,sha256=_emLS6fF-9e5xXL388cR70CRriN2bhMH65gaJMFNnWM,1654
10
+ firecube/cli/_rename_hints.py,sha256=sSwdQ2Q5jD6aoqsCsW_HJLGehNIOxst4IbwvT44A99k,4760
11
+ firecube/cli/_shared_options.py,sha256=70ODdtapMDOpvOpaXR7a28o4M_Q8ZMGOvW2Va95mouc,6657
12
+ firecube/cli/_slot_env.py,sha256=Jy2gNt2C7RoOAgAC0f0V3VeASnlX1mKHWANAuviOKwU,3479
13
+ firecube/cli/_slot_planning.py,sha256=IvqwSijVNU3JtcdBS3riPbOaCjCOZhqUtnutLk6PaNg,3655
14
+ firecube/cli/_typed_options.py,sha256=O3oqM3eembUzcpWu_9oKx5nJHygDX2VYvxZt7xXYgZ4,6249
15
+ firecube/cli/_uri_policy.py,sha256=yK6lQ59eJwacIDztm-DARoMvBhz24x9U1XxeOM-LkLQ,3931
16
+ firecube/cli/advise.py,sha256=0i3fQS4hgWJ9EcutzPpNr8V4lqQ6YJa0ZEuJy16GjWQ,10503
17
+ firecube/cli/archive.py,sha256=MPZBFiSejWN4mNftr23YypE-WUyvkaqbEy6ch29VnC4,31555
18
+ firecube/cli/catalog.py,sha256=FO5xN9-1QfI932AIcmf3VP_4T9SH322iYTJelNd8Vro,6795
19
+ firecube/cli/completion.py,sha256=_OoLlmJFatBJwhuZCv0UX9QsaJAokbrfFLOkN7HlB90,2348
20
+ firecube/cli/main.py,sha256=PQO3x_GRQ-1Y24XC_EIDBJhO4xVoza6GxJFYi4QVAzM,28155
21
+ firecube/cli/parquet.py,sha256=U3cI7RW0oQYq4bDNBAQLB420DnepOlnNQDSGeNDlsfc,9031
22
+ firecube/cli/zarr.py,sha256=_6g49WB7hkOfL7Iame6dqhw0PySYw64Bnef0b_hwW2o,37628
23
+ firecube/cli/chunks/__init__.py,sha256=aFLFWv0P3kTL4iI5ByzsjaM7C4NVK9PPH5ZdyyAOWSg,2151
24
+ firecube/cli/chunks/_claims.py,sha256=KKB3uLRZIZh1wfT1ABi1rruw645bLMY9cBkXYnQonJs,7776
25
+ firecube/cli/chunks/_common.py,sha256=kFo83onVhqM1I26NUz_RJ03aV0gTvMlHI3dATHoSrCw,3079
26
+ firecube/cli/chunks/_delete.py,sha256=jVhWkAqUJTELpFdvc3lyHCUCKxEr_PL1QGL0cRW90sQ,12988
27
+ firecube/cli/chunks/_list.py,sha256=V4P-XzYJKPr-_I02T-4Oy2E5s2vMmMZ57ZBCTJa8Fds,11119
28
+ firecube/cli/chunks/_manager.py,sha256=3i48waOGhQwCkP0dM5hKCF9tG2Hx2r1qhjXSLFzJhsI,6054
29
+ firecube/cli/chunks/_runs.py,sha256=RxlGh7ZN0vyk_urGj82H2X7COYTxfdgWdHwuzxbIbA8,9664
30
+ firecube/cli/chunks/_snapshots.py,sha256=5NC46pOXsgcA-ZTV0_Ll6uNN4jHSr_CPRBvusnR2HUU,4841
31
+ firecube/cli/plugins/__init__.py,sha256=HPFTXK-2OTkDyXVVVFiTN7sHBL8Mwpq8n2WMaVKdDss,952
32
+ firecube/cli/plugins/commands.py,sha256=MQTz8hJQXdBAnYZquru7MPEUo9qx04N-5-0faiNEayg,8623
33
+ firecube/cli/plugins/introspect.py,sha256=0X6kv3WyA0IN6uU7UWapSWDnxJ-Oyl_DiZ2Eqieu3mQ,9645
34
+ firecube/cli/plugins/mgmt.py,sha256=sHrla5bxvmubYD3_uBWvZsHePObngb6QEFRacLdMUqQ,6485
35
+ firecube/cli/plugins/registry.py,sha256=ZHMiIYjnEVq10Ujc4w_5oqagEOspbQt6xi7vcKEBvm4,4059
36
+ firecube/core/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
37
+ firecube/core/api.py,sha256=IUHQFhP8Qxc8SHFp11tR_Nqvbs5JeobGoF2RehpBVXQ,2604
38
+ firecube/core/config.py,sha256=4OLf6Aj36fpTW89ceMEXnsDhXiBX573r4Ndlod2l894,10844
39
+ firecube/core/credentials.py,sha256=6oYO9K03JUQ4IKpTn6UB9ejyqlBpNl1xzP3cT3xSuWo,1470
40
+ firecube/core/errors.py,sha256=HkbEKREFI7FvMGtVfZpV7wU2EJgg5vO9zqXY5TX0jl4,2616
41
+ firecube/core/intake.py,sha256=g6GOmHxFOGkJNlxtdCdfNqa04xF0uVsg-BM5qfBWMVg,17699
42
+ firecube/core/runtime.py,sha256=imSyJ8W9F8ZCVdzDz0CKhZBw7ycF2c2dqud9WTiQlfE,6800
43
+ firecube/core/slot_index.py,sha256=iar0ie7mpKkfrNvq45iwSDOQbxQNyfuMNkt47hZ3-Ys,7606
44
+ firecube/core/uris.py,sha256=G8E-RJPY0-Zuy9kNxy7YgBW45VJQCRwfKPvm7mfreDU,6426
45
+ firecube/core/workspaces.py,sha256=GJfNzZi6sW92serO76Zlf25fw2Tl-GnM6uTaRj9xEig,2239
46
+ firecube/core/cf/__init__.py,sha256=2EUrtqn40IVhdHSTfhvLvVl-f8D7oPkeDbAOmUNlWbI,890
47
+ firecube/core/cf/check_ids.py,sha256=r5MoTSNDbVoLoPIXTQmjWegeMIohpKEL6K0idkeOtEc,3854
48
+ firecube/core/cf/report.py,sha256=c6qI_7o_8gjG2SaePzAaNxee3Ybl_wy8srEckrzHdE4,1539
49
+ firecube/core/cf/validator.py,sha256=qlkTdrvxmQ7ZqE5B0_X-Au5XLtlV6p3HT_PhnCwgBe4,9808
50
+ firecube/core/controlplane/__init__.py,sha256=ehXdKH0VdC6buI9PUhVnEz_4TtyA_UU38umArB5khzo,1399
51
+ firecube/core/controlplane/_event_processor.py,sha256=tM2CPE8g04kfgYUbZ3XJdviY8nCjOnJjpL2IlwjZJ40,5546
52
+ firecube/core/controlplane/_helpers.py,sha256=R3mbWqV-zfDsZoftzH-IPsOw9Cqzh9LVgRlH7S295cc,4168
53
+ firecube/core/controlplane/_projection.py,sha256=wks9KWpgW73CXgipE7ZsqldDCf5fr9eJzpPb6ZHipNA,10662
54
+ firecube/core/controlplane/_snapshot.py,sha256=BUk_wGN-J7kFoulPZxpZe0fqtOJhMyQgMfg3oMWjXWg,9124
55
+ firecube/core/controlplane/_wal_reader.py,sha256=Wei_VaJCR-63ZFdQjBPuYMRvAMKvSBjznsNJYmBJpLU,15588
56
+ firecube/core/controlplane/_wal_writer.py,sha256=3BFmGNIdkx0po9TJrajvaDfyH3Ay5fMaV2Bxz5HPqWU,19614
57
+ firecube/core/controlplane/claims.py,sha256=xGawhgV8pN6yAda4beac-KGGb6XpdSuSRjeo2QaGOc4,11956
58
+ firecube/core/controlplane/deletion.py,sha256=J9IC9MN7GnLIVc7MH06hp2rgry-PJtSu6wI2j6fZ0EY,26885
59
+ firecube/core/controlplane/events.py,sha256=eWKFyjDX9XckHWpNHbkS8v9zWNPnCOD_PDOGcTPnJIA,8424
60
+ firecube/core/controlplane/manager.py,sha256=uqup8L0oK9coCvTpWefN7u4A7yeBX3NBG9dXXdqrk7A,38475
61
+ firecube/core/controlplane/metrics.py,sha256=vW_Wa-amDvVbw9T0UgS5xxXT_UPHuizPL6Xe2H9rTGI,3054
62
+ firecube/core/controlplane/repo.py,sha256=U3Hu_NDhqdqfiD2h3QRCF28CjBkB5mVGLJ96XXJFQio,30025
63
+ firecube/core/controlplane/repo_utils.py,sha256=gK8bv6cggIOlwa8etpM7QWoP9owdfUpUUU6zA9GWU5w,2448
64
+ firecube/core/controlplane/time_dim.py,sha256=0DjfcJSRPUNWCYPvPgnUi5bSXrhOt4Y460s-UJ_A_8c,4573
65
+ firecube/core/controlplane/types.py,sha256=-RI3fTmKqaSSVlwIc4FaZ_K4X_r1ww7XfuLyPvswITE,14469
66
+ firecube/core/duckdb/__init__.py,sha256=PpGHKmEVVc72JNMMqhxpd6JeMvzGRNDqzTFH-Gx5nX4,929
67
+ firecube/core/duckdb/bridge.py,sha256=kO5cTbyXNqA7nQKEepXt3caPxXqCmxorQwk4FFGIgzo,3016
68
+ firecube/core/duckdb/io.py,sha256=tPnGTEKYCtoZcLAQBvh1FHIK0Inz4u52xfgTnBlQoDU,1052
69
+ firecube/core/filesystem/__init__.py,sha256=sbOphYT0TRotY4pVNnRDsEDQDe-Wa-3WHS0ycKCtx3E,1713
70
+ firecube/core/filesystem/_obstore_compat.py,sha256=rRDQUR5k030pBZCGCZSd_0PCAw2qxajpoh0mYM_2dYA,1979
71
+ firecube/core/filesystem/fsspec_backend.py,sha256=AsckMfZbzRSO9u8E7rlVGjClgB8l5y_4NoSLVPmLJsA,12247
72
+ firecube/core/filesystem/instrumentation.py,sha256=FMDYoLuCXnbBOkMW5jzjdqPhnuRb36vn3WPp11judQ0,8533
73
+ firecube/core/filesystem/obstore_backend.py,sha256=v938z2mDOYWumoyRQ3J2x30GCbGsQuHM2hs1psjPENM,15048
74
+ firecube/core/filesystem/ops.py,sha256=T68BI9GyJbTsrYc-Jt9tlUHUJM0taN6kNC7QMJoQ5mI,13999
75
+ firecube/core/filesystem/protocol.py,sha256=p9aAqPtIe0qyE5VB-oWEh_iFF_vouTpd10vAurfCQiE,4272
76
+ firecube/core/filesystem/store_factory.py,sha256=2zRR0wVHmIAmFXXtENNJG2RQRYd7dDcS3hQY8gg5pQI,5175
77
+ firecube/core/formats/__init__.py,sha256=oV_F3Xp96Ijsj_5rBhawpjzzYUlFmmEqTHECMucuYhM,1471
78
+ firecube/core/formats/_iso.py,sha256=MhgQrXd85i7YfsGaazEvSa_6x8OY2GBtECptvAoD7as,2986
79
+ firecube/core/formats/discovery.py,sha256=iwvKKJjTdjkv1IPysZrEMHlppafVKx4IA1ouqj8bbM4,5811
80
+ firecube/core/formats/hdf5.py,sha256=BusXemCOyo0lmX7n3KC0yj48FGZzduslQephh02M0YA,4465
81
+ firecube/core/formats/netcdf.py,sha256=XYNF4ps5FHrX3eYTc-GyaRz-X1QiTpuAloJA48bbw_g,9123
82
+ firecube/core/formats/zip.py,sha256=jgj_D6IMWX0Jf5NmS0ZiheDS3f32ylA0Yi7kx_rbdC4,7297
83
+ firecube/core/observability/__init__.py,sha256=BJXyh1ASqVpcmLlE9CR1FWrJ78JoruhCMVq8sct3rPI,2237
84
+ firecube/core/observability/_state.py,sha256=1PRH6xJeNRel8kTBgVouPbMmCrxIpRzl0eTmvMvLrlM,776
85
+ firecube/core/observability/logging.py,sha256=zT0tNvX2gJeWUcjWUhLcXuVMI2z14XMttXABy4EAXXk,5468
86
+ firecube/core/observability/metrics.py,sha256=zJlnzpFzNDZaRvn8V3ByX3mXaIP9dgLWoHmcwTlFRsg,10434
87
+ firecube/core/observability/tracing.py,sha256=wI5rVNQjyIcv5zWTY4BoBO_ktY5vfpIBEhRq5vp8u9g,4452
88
+ firecube/core/observability/telemetry/__init__.py,sha256=T3nIxeyQoECug7xfddEfMun4HQrcov4uxRw09KmThGI,2566
89
+ firecube/core/observability/telemetry/pushgateway.py,sha256=RyQnkzyGbFWAQA9dcFgG_L-6UF2QS6XEX7BF7eno0Ek,11688
90
+ firecube/core/observability/telemetry/sinks.py,sha256=87IiO1gv7Tc_5ig1dNCEaVMVaUQ52quMjbqh5dzenSU,4201
91
+ firecube/core/product/__init__.py,sha256=KbKWAUn8hTZ34bMrN9i5rdezakhY95vN54GZeFgRSU8,1305
92
+ firecube/core/product/identity.py,sha256=PFFcf8if8owREjEaWB0wqraxWFmOcdZc0SdQpqU4vZ0,2543
93
+ firecube/core/product/resolver.py,sha256=5ErPrw2jeMxliAILOL3211fpbndaPgzFi4KhvU10lR0,3953
94
+ firecube/core/product/target.py,sha256=6exK87yG84khBhr2gPYuqaAZxfN0yC6MqfojqeSfuso,4289
95
+ firecube/core/storage/__init__.py,sha256=e8xyiEWqM_kEv1VIGvTzibuCV5teQu7ohZjJQbblPDM,1493
96
+ firecube/core/storage/binding.py,sha256=BXWzE7xOoO5x1axLqrKQFzPZcPHelEpCz6xZG0IOcqo,1272
97
+ firecube/core/storage/cache_key.py,sha256=zTbNXYba1kt7Rp6JpBLtpt8mBJmcRSsVlSv3aLLQJTY,1335
98
+ firecube/core/storage/completion.py,sha256=VY0ZdSgdpHEG81BzKTmMCkCL0my7jarYaPpDYYf3KUw,9628
99
+ firecube/core/storage/driver_config.py,sha256=KFvN1atd8e2CFt0WvVCgwk3W2ilf7xVEf0lHJ41LQNs,4286
100
+ firecube/core/storage/results.py,sha256=X8Ab-7tnqh-E2A4Qos7fhjmmvC6X4XAtWrTf5ouc1ZM,895
101
+ firecube/core/storage/session.py,sha256=9vq8TER0Zmz065PixOg7YJ3Ga3uWji9Q6pW1eL0u2Ys,16007
102
+ firecube/core/storage/transfer.py,sha256=vjA0pWjMBQhlrYWG69WDTUya5khAoZJOMhMfDnX6iKY,5556
103
+ firecube/core/storage/uri.py,sha256=PvFDvig_ChdYz8jpRpYiAS6IVkoP5o3LRjoqybigrgQ,6773
104
+ firecube/core/tensogram/__init__.py,sha256=cM2P43J8nOtSMeTgeT_HeSnM8udlxLQj3PyB3cxHM04,1045
105
+ firecube/core/tensogram/_compat.py,sha256=CLAOsaFBSdqBhDsSjDIXrMCgXch52hG38lYHG_EM-8I,1309
106
+ firecube/core/tensogram/controlplane_codec.py,sha256=x4UFuMQiJRImtWfrXQ9l3iusv8AoVOUdlZTqOqXCc3A,7591
107
+ firecube/core/tensogram/converter.py,sha256=k1xUdSZ4eqpb5-96mjC3no9YhNU4CvE1wcC9z4NAHOM,14612
108
+ firecube/core/tensogram/metadata.py,sha256=vNTCXOSchEA_ysmNArZltNhAsVH1smSRYNGkCD5WPOE,9267
109
+ firecube/core/tensogram/restore.py,sha256=f4jFAEkg6olAlN2Y1-zWaeIGJxG7DQYrT-kmqGh-oOI,10611
110
+ firecube/core/tensogram/schema.py,sha256=3rLWRRlBnvpxZK_M26GEy0AVNLDMSiyGrMmZ9vgzqY8,3155
111
+ firecube/core/zarr/__init__.py,sha256=f2gZ2YkhCPmwRk4JjwE3fOGvMS2e9n-DZZyupjzk5b8,2203
112
+ firecube/core/zarr/_reserved_attrs.py,sha256=cMCpUu9BCE4M-cofD5yUQQosPwg-G5K6Ct-R8S3tbAw,1529
113
+ firecube/core/zarr/_reserved_root_attrs.py,sha256=WGd7_weZRkOQH6vXgpBa0AAgPbOBwTjknd-UEMK--j4,2895
114
+ firecube/core/zarr/io.py,sha256=vXlcfhB3La8iKkeoe4xFQg9A9Kdphu5l6M5LIIvnnNY,3455
115
+ firecube/core/zarr/layers.py,sha256=ADvacytWaQU4h0NfrHq3xtCz5l9Ibf8jSop8r8rqbak,6328
116
+ firecube/core/zarr/multires.py,sha256=yvzLSE3ho5MvtENGJ4NcczBUr8NMWbVtcTGJfnjM-VE,6513
117
+ firecube/core/zarr/region_writer.py,sha256=hpZGIrd09ycSL4yWi_qnWuBYwWh-qkXDE4dyvBg8Bc0,29149
118
+ firecube/core/zarr/scrub.py,sha256=tVG_l_w9UZRnREJ96S0CrrGe1LuiYMzCX_oL3Uzd-p4,6863
119
+ firecube/core/zarr/state.py,sha256=iaL-0GqiUPMhbo8GTy4UzynWG9Bc3oWJwm55lPFZ5H0,8193
120
+ firecube/core/zarr/time_decode.py,sha256=RQy_xZtdFZ1Zac2YRqWU_TMJpsNcRGUX7PfxkEtF9Fg,2752
121
+ firecube/core/zarr/validation.py,sha256=Ql3thmmk4ih3WHv1liy--zpo4shhdUYmZdTEyiXN-iY,22779
122
+ firecube/ingestor/__init__.py,sha256=UMe-ZMgoWkSEfE7ywrR2cXuGSIH-OMwDbPRDmfbSuVA,803
123
+ firecube/ingestor/api.py,sha256=RPqhhe_3wHyvsAoeEVbGdTTx7QBuKmCYLpZjfd9bRks,6296
124
+ firecube/ingestor/errors.py,sha256=JycRkqfEyWpycraN6ijgRLQ2upEHM_seJSXWYrKuHsI,2353
125
+ firecube/ingestor/validation.py,sha256=Ky15C90unTzvEluLRLRuC4zXfuekSEGsJJ_a16DfQ-Y,2252
126
+ firecube/ingestor/config/__init__.py,sha256=xmpEyqFrwMShNiPFym-MaoZYIj5e3-olOpIdp75iGQc,751
127
+ firecube/ingestor/config/coercion.py,sha256=4P0v5gfv_2rUszuJSvLVycLiH01Uu9hc9LXUuzvBh-M,5504
128
+ firecube/ingestor/config/engine.py,sha256=FxbsatiwAaolOLt086PTcqChrX5JYqGwhEJy5Agw_mc,7188
129
+ firecube/ingestor/contracts/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
130
+ firecube/ingestor/contracts/interfaces.py,sha256=vk9YdcKRTKOkSVLM2xiPlqJf_fE5v94N9A3tFso5Q1M,7981
131
+ firecube/ingestor/devtools/scaffolding.py,sha256=RRzSmfF9GeNXX4XisCmrtXQtDtWIqitCiLyIxEksGPs,7183
132
+ firecube/ingestor/devtools/_templates/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
133
+ firecube/ingestor/devtools/_templates/ingestor_base.py.tpl,sha256=UaY_J5LgUTQfzQjzxkh7gQimFYm_3baaBix_tmObHDQ,2431
134
+ firecube/ingestor/devtools/_templates/ingestor_direct_zarr.py.tpl,sha256=LJjsB8DaFWyQGYBDuEpzPLiLng9-oE6G6l9t8t6rmvE,2342
135
+ firecube/ingestor/devtools/_templates/ingestor_parquet.py.tpl,sha256=ot4gTtOhDNHDhyxQQS7VFfvey_NGOuVluZlAqnkKRaM,2017
136
+ firecube/ingestor/devtools/_templates/ingestor_zarr.py.tpl,sha256=WpIYUJRME_otxfuYsZe3w4r4WOi9Ih2cJKsZTKMa7-I,1733
137
+ firecube/ingestor/devtools/_templates/readme.md.tpl,sha256=TONHQz2z15j0mJL1fMIj8xQQ-A0juTxQGhKz9OAUC3Y,1180
138
+ firecube/ingestor/extensions/_binning.py,sha256=zUPzDdXHAmyHGSXnJqmqZLLiZNVbxDI6kGLDr24D50o,5845
139
+ firecube/ingestor/extensions/duck.py,sha256=_Sk6r7QD2s0N3RLNvBXpjMXvU5wk3M6h2hUNkXHQt7M,6225
140
+ firecube/ingestor/extensions/grid.py,sha256=eaJyKNWk_7wVm0LudyRwT_bbQPiGvvglixLZ7xHVpcE,10413
141
+ firecube/ingestor/extensions/healpix.py,sha256=Dr9We6dBiFQqytScF_psW4H5MN9ra8UWzbFBJdtPfaE,11698
142
+ firecube/ingestor/registry/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
143
+ firecube/ingestor/registry/loader.py,sha256=Y2PAOXjh2nsl3nt5KCFUHvrp0Qt7KnMQ-blhnAzBvog,4476
144
+ firecube/ingestor/registry/metadata.py,sha256=T0hucRW7JlDV5eB1CV2n-0dStB2xlyulQNZhw_ihqjA,2872
145
+ firecube/ingestor/registry/version_compat.py,sha256=wMkJdUvj2TD_COQUzsL-hQjg4NmX3sHT788H7X7KZGI,3060
146
+ firecube/ingestor/runtime/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
147
+ firecube/ingestor/runtime/aggregation.py,sha256=L-be-1f23on5CmwoDtg9Msslv88bh_hfZsz4mcwMcV4,3892
148
+ firecube/ingestor/runtime/base.py,sha256=yqBcIEu3Z-pNhk7P6bSyHN8b6B2K4e5_YBHk7aWPKj4,36088
149
+ firecube/ingestor/runtime/base_hooks.py,sha256=cRBGmxDhHMUaOtepdey5zuSRDdxM67JaymGgxQ2q-Zw,3949
150
+ firecube/ingestor/runtime/batching.py,sha256=LxFo-_HnfgvL7jS9VdZspbB2FETg6JoduwjOm1lAP_I,5889
151
+ firecube/ingestor/runtime/configure.py,sha256=g0NKuBtVAxF99vMkq-TXOKhLH59sa_6Tb0bWZYwUKgQ,7512
152
+ firecube/ingestor/runtime/coverage.py,sha256=aEc1cpaKXW3lerwhTYCsLgkRAO4uKMGcR-JG46f5Zv4,5805
153
+ firecube/ingestor/runtime/engine.py,sha256=IjOASMYL6gp4Gub6Mjfp3Z6zZIzJX3D5DWLRHxbgnL4,30627
154
+ firecube/ingestor/runtime/parallel_evidence.py,sha256=1WUO5C8IRLnsXw3pX3FZxdPV9M2Dz2rw7UwOu2BJM-U,2347
155
+ firecube/ingestor/runtime/parallel_execution_state.py,sha256=9cro_nHhu_T4NhZI6_tGTUE1MD5D-QOej9jS5x082jA,1054
156
+ firecube/ingestor/runtime/parallel_gate.py,sha256=unBSr7Xnm9vSNvA9wD0Gwngw_3j8ylEDDDaQkogS6mQ,6532
157
+ firecube/ingestor/runtime/parallel_run_id.py,sha256=1Dr0zI3pXeHQyc4fQwKyddLGbj0XHEx_d54rg_ygUKw,1955
158
+ firecube/ingestor/runtime/preflight.py,sha256=sXS6tgIi-bi-ywKhKTLHFLqvbdwZwmEaDJ2RzbG367o,1388
159
+ firecube/ingestor/runtime/recording.py,sha256=pxT_999rZGcWRA05QVa4PZLr-_95nYuHL52PpEzguRQ,14502
160
+ firecube/ingestor/runtime/resume_guard.py,sha256=mpF2aGVTxAROMsLwEkdlvb_kNdurZLOOz4qKEpWK9P8,23689
161
+ firecube/ingestor/runtime/resume_types.py,sha256=7oWq98ywbou9E42mp9h9u3X0xrdoAj4PaPCaKTIKDws,2031
162
+ firecube/ingestor/runtime/telemetry.py,sha256=Jdb4NlNk8h_P6Bj7F-CV_eXtYzs0PTTYMeQNf5Um6zE,6580
163
+ firecube/ingestor/runtime/workspace.py,sha256=I0z3jAVHbmVIZzAKjmoTryCJuxTPlu1ILX3_NS2-4lU,7896
164
+ firecube/ingestor/runtime/tensogram/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
165
+ firecube/ingestor/runtime/tensogram/strategy.py,sha256=aDmk0djWxycGiPBdNwRL8dSSkvVwFuiq9MZLKrbkFc4,5932
166
+ firecube/ingestor/runtime/zarr/__init__.py,sha256=c9bqQMqNkIP949hjzcq2f9VDWJMP7GhExrrPc_J0rKI,1343
167
+ firecube/ingestor/runtime/zarr/append.py,sha256=boKlBlWkOB7PvpnpYWhfCD9HdAgRa9_otafzhhUEkjw,16720
168
+ firecube/ingestor/runtime/zarr/append_services.py,sha256=pHgmF311uCnstFayU1D0bmw0VvVFOigcJNYY-YwKxhQ,24995
169
+ firecube/ingestor/runtime/zarr/batch_runner.py,sha256=oTLLbMsCNlvVLuKTT-QuFvk0QYxbwr46_o4ywc-gyqQ,6314
170
+ firecube/ingestor/runtime/zarr/contracts.py,sha256=yMDbeWlHpzCN2PU4f_uQxWzkTzlzslb2eZORqbqj3yo,2032
171
+ firecube/ingestor/runtime/zarr/existing_cube_check.py,sha256=laasuFmnM9XWSjWtjtFs2nGTM0kHevoxs3wxq0NCZ4s,10038
172
+ firecube/ingestor/runtime/zarr/resume_cache.py,sha256=qOCpA4aLTZk1teJcU9mFiW8AeEiUCeKhSs4pNyvYX7g,2979
173
+ firecube/ingestor/runtime/zarr/staged_metadata.py,sha256=Hoc58gyzYKAlcvS18hIbL22_err_ZG7dRDqroMnMeH8,9687
174
+ firecube/ingestor/runtime/zarr/write.py,sha256=OqLnSdQLbqCS2oIHeHPCvDznKCUHjq0qDuXn_AAxtNY,7899
175
+ firecube/ingestor/runtime/zarr/write_context.py,sha256=4ee71HQFDDduHK_qY3MJgOA5Jl9xoVm0cZVvM2NZz6g,4873
176
+ firecube/ingestor/runtime/zarr/strategies/__init__.py,sha256=ip4eyfjF5IiQ_agTV16wCp8wgutf82fep-v1y8Ij1xc,630
177
+ firecube/ingestor/runtime/zarr/strategies/append.py,sha256=04aSf4JubyNR-0H0dUZBGozPR21S3UQykBnueTVZSSY,6996
178
+ firecube/ingestor/runtime/zarr/strategies/indexed_region.py,sha256=njI4q3C6cW3PhQnUDGvKeLdH4EVnyDlMgXrbELROH0U,19204
179
+ firecube/ingestor/templates/__init__.py,sha256=8amYfdlUTz4oE-QzXNR_cYpWp_L32YeDSernXyoWL50,765
180
+ firecube/ingestor/templates/config.py,sha256=D3DEhgLRLEPKIH_eR05kk1ALjoUVt7qiVsJH-4W6jwo,4180
181
+ firecube/ingestor/templates/direct_zarr.py,sha256=aZEQricW1nox0j_fIks599S4dtvncBzmDB56VuYRoCQ,35111
182
+ firecube/ingestor/templates/generic.py,sha256=to8rQBOD-BJ7szVSpeJgWVHwje-7V_fdFzlJ35G2w1A,17466
183
+ firecube/ingestor/templates/generic_tensogram.py,sha256=_vrrrmoL9ALRvq-45XqVYEAfI-XJ8qskj-DWa3h39_Y,5732
184
+ firecube/ingestor/types/__init__.py,sha256=tGp7CkcSP4OT5vF-r04-jjR-yxLD9e5fOWf8V9kt90s,735
185
+ firecube/ingestor/types/config.py,sha256=KUxb1thXcDdt-dV6iO80TTS4PLLnK7xug0BhmTQQh1Y,3282
186
+ firecube/ingestor/types/context.py,sha256=KUbYikjWVRHgCcAEoZ61l1b1O2Ayf-a7rrNT8Wc1iIA,13183
187
+ firecube/ingestor/types/manifest.py,sha256=5O2Q4LLyQvSv5gU5vVgweDoxo-hP5Q2nOkqeU1DUKPI,1634
188
+ firecube/ingestor/types/planned_range.py,sha256=oGtkc4VTYCiHmLjWemJWg0uoCvPaPFYLWGxBzyxODvA,5551
189
+ firecube/ingestor/types/result_metrics.py,sha256=9bXK7L9L1nyQtF8ZqtvAHQp4fDoAA00oKusM5MZZnao,13767
190
+ firecube/ingestor/utils/__init__.py,sha256=LJ2j8aVO3353g7rctHlVTLadg6FH2XSgj4cC5eioan0,578
191
+ firecube/ingestor/utils/duckdb_utils.py,sha256=klDB0DnfULF2vf-Di9eOdx_MInjltVdZn-h9vzdsynQ,8404
192
+ firecube-0.1.4.dist-info/METADATA,sha256=4d843rkJ4X3jhqxfcw-mLNWXvHZlmwlVZhEEH4r3CEc,11181
193
+ firecube-0.1.4.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
194
+ firecube-0.1.4.dist-info/entry_points.txt,sha256=URe-xD5nLCNXmtCiaOI1_YIE8WHGq582tt3lm2D33Ns,51
195
+ firecube-0.1.4.dist-info/licenses/AUTHORS.md,sha256=7csBDIYxj1MVq6HDKMpRyxZntgjivdnr6O3-Y9oXTSo,386
196
+ firecube-0.1.4.dist-info/licenses/LICENSE,sha256=Z5ouFQ3wRxkfPr-gnx7J2fYLKx3wVndIJZiiB8nE7q4,11343
197
+ firecube-0.1.4.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.31.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ firecube = firecube.cli.main:cli
@@ -0,0 +1,5 @@
1
+ # Authors
2
+
3
+ * [**Armagan Karatosun**](mailto:armagan.karatosun@eumetsat.int) - *Initial work and maintainer* - [EUMETSAT](http://www.eumetsat.int)
4
+ * [**Anna-Lena Erdmann**](mailto:anna-lena.erdmann@eumetsat.int) - *Contributor and maintainer* - [EUMETSAT](http://www.eumetsat.int)
5
+ * [**Carlos Horn**](mailto:carlos.horn@eumetsat.int) - *Contributor* - [EUMETSAT](http://www.eumetsat.int)