usdata 0.8.0__tar.gz → 0.10.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 (51) hide show
  1. usdata-0.10.0/PKG-INFO +130 -0
  2. usdata-0.10.0/README.md +102 -0
  3. usdata-0.10.0/pyproject.toml +193 -0
  4. usdata-0.10.0/pyproject.toml.orig +159 -0
  5. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/__init__.py +4 -1
  6. usdata-0.10.0/src/usdata/_radar.py +123 -0
  7. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/nexrad_sites.csv +211 -211
  8. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/registry.yaml +109 -12
  9. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/fetch.py +9 -1
  10. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/models.py +24 -2
  11. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/s3.py +15 -2
  12. usdata-0.10.0/src/usdata/providers/_http.py +27 -0
  13. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/coastwatch.py +4 -19
  14. usdata-0.10.0/src/usdata/providers/noaa/coops.py +141 -0
  15. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/ghcnd.py +4 -19
  16. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/goes.py +5 -22
  17. usdata-0.10.0/src/usdata/providers/noaa/gsoy.py +46 -0
  18. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/nexrad.py +5 -22
  19. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/storm_events.py +4 -21
  20. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/usgs/daily.py +4 -19
  21. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/readers.py +19 -3
  22. usdata-0.10.0/src/usdata/selection.py +71 -0
  23. usdata-0.8.0/PKG-INFO +0 -230
  24. usdata-0.8.0/README.md +0 -202
  25. usdata-0.8.0/pyproject.toml +0 -112
  26. usdata-0.8.0/pyproject.toml.orig +0 -86
  27. usdata-0.8.0/src/usdata/_radar.py +0 -73
  28. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_files.py +0 -0
  29. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_netcdf.py +0 -0
  30. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_progress.py +0 -0
  31. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cache.py +0 -0
  32. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/__init__.py +0 -0
  33. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/app.py +0 -0
  34. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/progress.py +0 -0
  35. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/places.csv +0 -0
  36. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/places.sources.json +0 -0
  37. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/manifest.py +0 -0
  38. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/__init__.py +0 -0
  39. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/erddap.py +0 -0
  40. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/http.py +0 -0
  41. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/provenance.py +0 -0
  42. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/__init__.py +0 -0
  43. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/base.py +0 -0
  44. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/__init__.py +0 -0
  45. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/gsom.py +0 -0
  46. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/sites.py +0 -0
  47. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/usgs/__init__.py +0 -0
  48. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/pull.py +0 -0
  49. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/py.typed +0 -0
  50. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/query.py +0 -0
  51. {usdata-0.8.0 → usdata-0.10.0}/src/usdata/registry.py +0 -0
usdata-0.10.0/PKG-INFO ADDED
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: usdata
3
+ Version: 0.10.0
4
+ Summary: Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data
5
+ Keywords: noaa,usgs,nasa,open-data,scientific-data,provenance
6
+ Author: Jake Van Slyke
7
+ Author-email: Jake Van Slyke <jakervanslyke@gmail.com>
8
+ License-Expression: Apache-2.0
9
+ Classifier: Development Status :: 2 - Pre-Alpha
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Scientific/Engineering
13
+ Requires-Dist: httpx>=0.28.1
14
+ Requires-Dist: pydantic>=2.7
15
+ Requires-Dist: pyyaml>=6.0
16
+ Requires-Dist: typer>=0.18
17
+ Requires-Dist: xarray>=2025.1 ; extra == 'netcdf'
18
+ Requires-Dist: h5netcdf[h5py]>=1.8.1 ; extra == 'netcdf'
19
+ Requires-Dist: pandas>=3.0 ; extra == 'pandas'
20
+ Requires-Dist: xradar>=0.12.0 ; extra == 'radar'
21
+ Requires-Python: >=3.11
22
+ Project-URL: Homepage, https://github.com/jakeryderv/usdata
23
+ Project-URL: Repository, https://github.com/jakeryderv/usdata
24
+ Provides-Extra: netcdf
25
+ Provides-Extra: pandas
26
+ Provides-Extra: radar
27
+ Description-Content-Type: text/markdown
28
+
29
+ # usdata
30
+
31
+ Discover U.S. scientific datasets, fetch their files, and keep a reproducible
32
+ record of where every input came from. Use the same Python SDK or CLI across
33
+ supported NOAA and USGS datasets.
34
+
35
+ **Pre-alpha.** These docs describe the current source checkout. Features marked
36
+ **Unreleased** require a source installation; consult the
37
+ [changelog](CHANGELOG.md) for published versions. Other providers are planned.
38
+
39
+ ## Start here
40
+
41
+ ```sh
42
+ pip install usdata
43
+ usdata search precipitation --location Oklahoma
44
+ usdata info noaa:ghcn-daily
45
+ ```
46
+
47
+ Search uses a curated registry. Fetching contacts the upstream service; readers
48
+ open the resulting local files. Provenance and manifests connect those steps.
49
+
50
+ - [Quick start and documentation](docs/index.md)
51
+ - [Fetch and analyze data](docs/guides/fetch-and-analyze.md)
52
+ - [Runnable examples with saved outputs](examples/README.md)
53
+ - [Readers](docs/reference/readers.md) and [reproducible manifests](docs/reference/manifests.md)
54
+
55
+ ## Source installation
56
+
57
+ For features marked **Unreleased**, install this checkout with
58
+ [uv](https://docs.astral.sh/uv/):
59
+
60
+ ```sh
61
+ git clone https://github.com/jakeryderv/usdata && cd usdata
62
+ uv sync --extra pandas
63
+ uv run usdata info noaa:coops-water-levels
64
+ ```
65
+
66
+ Run source examples from this checkout with `uv run usdata` (CLI) or
67
+ `uv run python` (Python). The pandas extra enables CSV reading; use `--extra radar`
68
+ or `--extra netcdf` for those formats. For contribution checks, continue with
69
+ [development setup](#development).
70
+
71
+ ## Providers
72
+
73
+ Browse the [dataset catalog](docs/generated/catalog/index.md) for current support,
74
+ release availability, and dataset details. [Provider access notes](docs/providers/README.md)
75
+ explain agency-specific services; the [roadmap](docs/roadmap.md) describes priorities.
76
+
77
+ ## Development
78
+
79
+ From a [source checkout](#source-installation), requires [uv](https://docs.astral.sh/uv/) and [just](https://just.systems/).
80
+
81
+ `just setup` uses the tested Python 3.14.7 pin in `.python-version`. Older Linux
82
+ uv Python 3.14 builds can crash during NumPy array operations; see
83
+ [the upstream fix](https://github.com/astral-sh/python-build-standalone/issues/991).
84
+
85
+ ```sh
86
+ just setup # install toolchain and dependencies
87
+ just hooks-install # optional: install fast staged-file checks
88
+ just test # all offline tests
89
+ just check # format, lint, typecheck, offline tests, generated docs, release notices
90
+ just check-pandas # install the CSV extra and run the same checks
91
+ just check-radar # install the radar extra and run the same checks
92
+ just check-netcdf # install the NetCDF4 extra and run the same checks
93
+ just notebooks # launch the optional Jupyter examples environment
94
+ just run-notebooks # execute notebooks live in fresh kernels and temporary caches
95
+ just docs-serve # build and preview the documentation locally, with reload
96
+ just check-docs # validate generated content and build the site strictly
97
+ just build # build wheel and sdist
98
+ just smoke # exercise core and pandas wheel installations outside the checkout
99
+ just changes # preview upcoming release notes
100
+ just cleanup 123 # from main: remove PR #123's merged branch and clean worktree
101
+ just run search radar
102
+ ```
103
+
104
+ Commit hooks fix and format staged Python files using the locked Ruff version,
105
+ and check configuration, merge conflicts, and GitHub Actions workflows. Full
106
+ validation remains `just check`; `just check-hooks` runs the non-mutating config
107
+ and workflow checks alone. Hooks do not rewrite notebooks or raw data fixtures.
108
+ The first hook run downloads its isolated tools and requires network access.
109
+
110
+ Offline tests mechanically block network connections. Tests that hit
111
+ live services run with `just test-live`; see [testing levels and organization](docs/testing.md). CI checks Python 3.11 and 3.14 on
112
+ Linux with core-only, pandas, radar, and NetCDF dependency profiles. Installed-wheel
113
+ checks cover all four profiles on Linux, macOS, and Windows. The full offline and
114
+ live-service suites run on Linux. `just setup` restores a core-only development
115
+ environment; the `check-pandas`, `check-radar`, and `check-netcdf` commands install
116
+ their respective extras.
117
+
118
+ Releases: `just release minor` prepares a release branch. Update release notices,
119
+ then `just release-pr` validates and opens a draft for review. Merging the reviewed
120
+ PR publishes to PyPI and creates the tag and GitHub release. See
121
+ [docs/versioning.md](docs/versioning.md).
122
+
123
+ See [provider access notes](docs/providers/README.md),
124
+ [docs/architecture.md](docs/architecture.md) for how the pieces fit,
125
+ [architecture decisions](docs/adr/README.md) for why, and [CONTRIBUTING.md](CONTRIBUTING.md) to add
126
+ a dataset.
127
+
128
+ ## License
129
+
130
+ [Apache-2.0](LICENSE).
@@ -0,0 +1,102 @@
1
+ # usdata
2
+
3
+ Discover U.S. scientific datasets, fetch their files, and keep a reproducible
4
+ record of where every input came from. Use the same Python SDK or CLI across
5
+ supported NOAA and USGS datasets.
6
+
7
+ **Pre-alpha.** These docs describe the current source checkout. Features marked
8
+ **Unreleased** require a source installation; consult the
9
+ [changelog](CHANGELOG.md) for published versions. Other providers are planned.
10
+
11
+ ## Start here
12
+
13
+ ```sh
14
+ pip install usdata
15
+ usdata search precipitation --location Oklahoma
16
+ usdata info noaa:ghcn-daily
17
+ ```
18
+
19
+ Search uses a curated registry. Fetching contacts the upstream service; readers
20
+ open the resulting local files. Provenance and manifests connect those steps.
21
+
22
+ - [Quick start and documentation](docs/index.md)
23
+ - [Fetch and analyze data](docs/guides/fetch-and-analyze.md)
24
+ - [Runnable examples with saved outputs](examples/README.md)
25
+ - [Readers](docs/reference/readers.md) and [reproducible manifests](docs/reference/manifests.md)
26
+
27
+ ## Source installation
28
+
29
+ For features marked **Unreleased**, install this checkout with
30
+ [uv](https://docs.astral.sh/uv/):
31
+
32
+ ```sh
33
+ git clone https://github.com/jakeryderv/usdata && cd usdata
34
+ uv sync --extra pandas
35
+ uv run usdata info noaa:coops-water-levels
36
+ ```
37
+
38
+ Run source examples from this checkout with `uv run usdata` (CLI) or
39
+ `uv run python` (Python). The pandas extra enables CSV reading; use `--extra radar`
40
+ or `--extra netcdf` for those formats. For contribution checks, continue with
41
+ [development setup](#development).
42
+
43
+ ## Providers
44
+
45
+ Browse the [dataset catalog](docs/generated/catalog/index.md) for current support,
46
+ release availability, and dataset details. [Provider access notes](docs/providers/README.md)
47
+ explain agency-specific services; the [roadmap](docs/roadmap.md) describes priorities.
48
+
49
+ ## Development
50
+
51
+ From a [source checkout](#source-installation), requires [uv](https://docs.astral.sh/uv/) and [just](https://just.systems/).
52
+
53
+ `just setup` uses the tested Python 3.14.7 pin in `.python-version`. Older Linux
54
+ uv Python 3.14 builds can crash during NumPy array operations; see
55
+ [the upstream fix](https://github.com/astral-sh/python-build-standalone/issues/991).
56
+
57
+ ```sh
58
+ just setup # install toolchain and dependencies
59
+ just hooks-install # optional: install fast staged-file checks
60
+ just test # all offline tests
61
+ just check # format, lint, typecheck, offline tests, generated docs, release notices
62
+ just check-pandas # install the CSV extra and run the same checks
63
+ just check-radar # install the radar extra and run the same checks
64
+ just check-netcdf # install the NetCDF4 extra and run the same checks
65
+ just notebooks # launch the optional Jupyter examples environment
66
+ just run-notebooks # execute notebooks live in fresh kernels and temporary caches
67
+ just docs-serve # build and preview the documentation locally, with reload
68
+ just check-docs # validate generated content and build the site strictly
69
+ just build # build wheel and sdist
70
+ just smoke # exercise core and pandas wheel installations outside the checkout
71
+ just changes # preview upcoming release notes
72
+ just cleanup 123 # from main: remove PR #123's merged branch and clean worktree
73
+ just run search radar
74
+ ```
75
+
76
+ Commit hooks fix and format staged Python files using the locked Ruff version,
77
+ and check configuration, merge conflicts, and GitHub Actions workflows. Full
78
+ validation remains `just check`; `just check-hooks` runs the non-mutating config
79
+ and workflow checks alone. Hooks do not rewrite notebooks or raw data fixtures.
80
+ The first hook run downloads its isolated tools and requires network access.
81
+
82
+ Offline tests mechanically block network connections. Tests that hit
83
+ live services run with `just test-live`; see [testing levels and organization](docs/testing.md). CI checks Python 3.11 and 3.14 on
84
+ Linux with core-only, pandas, radar, and NetCDF dependency profiles. Installed-wheel
85
+ checks cover all four profiles on Linux, macOS, and Windows. The full offline and
86
+ live-service suites run on Linux. `just setup` restores a core-only development
87
+ environment; the `check-pandas`, `check-radar`, and `check-netcdf` commands install
88
+ their respective extras.
89
+
90
+ Releases: `just release minor` prepares a release branch. Update release notices,
91
+ then `just release-pr` validates and opens a draft for review. Merging the reviewed
92
+ PR publishes to PyPI and creates the tag and GitHub release. See
93
+ [docs/versioning.md](docs/versioning.md).
94
+
95
+ See [provider access notes](docs/providers/README.md),
96
+ [docs/architecture.md](docs/architecture.md) for how the pieces fit,
97
+ [architecture decisions](docs/adr/README.md) for why, and [CONTRIBUTING.md](CONTRIBUTING.md) to add
98
+ a dataset.
99
+
100
+ ## License
101
+
102
+ [Apache-2.0](LICENSE).
@@ -0,0 +1,193 @@
1
+ [project]
2
+ name = "usdata"
3
+ version = "0.10.0"
4
+ description = "Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data"
5
+ readme = "README.md"
6
+ license = "Apache-2.0"
7
+ requires-python = ">=3.11"
8
+ keywords = [
9
+ "noaa",
10
+ "usgs",
11
+ "nasa",
12
+ "open-data",
13
+ "scientific-data",
14
+ "provenance",
15
+ ]
16
+ classifiers = [
17
+ "Development Status :: 2 - Pre-Alpha",
18
+ "Intended Audience :: Science/Research",
19
+ "Programming Language :: Python :: 3",
20
+ "Topic :: Scientific/Engineering",
21
+ ]
22
+ dependencies = [
23
+ "httpx>=0.28.1",
24
+ "pydantic>=2.7",
25
+ "pyyaml>=6.0",
26
+ "typer>=0.18",
27
+ ]
28
+
29
+ [[project.authors]]
30
+ name = "Jake Van Slyke"
31
+ email = "jakervanslyke@gmail.com"
32
+
33
+ [project.optional-dependencies]
34
+ pandas = ["pandas>=3.0"]
35
+ radar = ["xradar>=0.12.0"]
36
+ netcdf = [
37
+ "xarray>=2025.1",
38
+ "h5netcdf[h5py]>=1.8.1",
39
+ ]
40
+
41
+ [project.urls]
42
+ Homepage = "https://github.com/jakeryderv/usdata"
43
+ Repository = "https://github.com/jakeryderv/usdata"
44
+
45
+ [project.scripts]
46
+ usdata = "usdata.cli:app"
47
+
48
+ [dependency-groups]
49
+ dev = [
50
+ "pre-commit>=4.6.0",
51
+ "pyright>=1.1.380",
52
+ "pytest>=8.0",
53
+ "pytest-cov>=7.1.0",
54
+ "respx>=0.23.1",
55
+ "ruff>=0.6",
56
+ "towncrier>=26.9",
57
+ ]
58
+ docs = [
59
+ "tomli-w>=1.2.0",
60
+ "mkdocstrings-python>=2.0.8",
61
+ "nbconvert>=7.17.1",
62
+ "towncrier>=26.9",
63
+ "zensical>=0.0.60",
64
+ ]
65
+ examples = [
66
+ "ipykernel>=6.29",
67
+ "jupyterlab>=4.3",
68
+ "matplotlib>=3.9",
69
+ "nbclient>=0.10",
70
+ "pandas>=3.0",
71
+ ]
72
+
73
+ [build-system]
74
+ requires = ["uv_build>=0.12.5,<0.13.0"]
75
+ build-backend = "uv_build"
76
+
77
+ [tool.ruff]
78
+ line-length = 100
79
+ target-version = "py311"
80
+ src = [
81
+ "src",
82
+ "tests",
83
+ ]
84
+
85
+ [tool.ruff.lint]
86
+ select = [
87
+ "E",
88
+ "F",
89
+ "I",
90
+ "UP",
91
+ "B",
92
+ "SIM",
93
+ "RUF",
94
+ "D",
95
+ ]
96
+ ignore = [
97
+ "D105",
98
+ "D107",
99
+ ]
100
+
101
+ [tool.ruff.lint.pydocstyle]
102
+ convention = "google"
103
+
104
+ [tool.ruff.lint.per-file-ignores]
105
+ "tests/**" = ["D"]
106
+ "scripts/**" = ["D"]
107
+
108
+ [tool.pyright]
109
+ include = [
110
+ "src",
111
+ "tests",
112
+ ]
113
+ pythonVersion = "3.11"
114
+ typeCheckingMode = "standard"
115
+ venvPath = "."
116
+ venv = ".venv"
117
+
118
+ [tool.pytest.ini_options]
119
+ testpaths = ["tests"]
120
+ markers = [
121
+ "l0: pure in-memory logic",
122
+ "l1: in-process components with controlled transport",
123
+ "l2: local functional tests with filesystem or real decoders",
124
+ "l3: controlled service deployment (currently unused)",
125
+ "l4: production or upstream-live compatibility",
126
+ "live: hits upstream services; requires --run-live",
127
+ "integration: compatibility alias for live",
128
+ "pandas: optional CSV reader coverage",
129
+ "radar: optional radar reader coverage",
130
+ "netcdf: optional NetCDF reader coverage",
131
+ ]
132
+ addopts = "-ra --strict-markers"
133
+
134
+ [tool.towncrier]
135
+ directory = "changes"
136
+ filename = "CHANGELOG.md"
137
+ start_string = """
138
+ <!-- towncrier release notes start -->
139
+ """
140
+ underlines = [
141
+ "",
142
+ "",
143
+ "",
144
+ ]
145
+ title_format = "## [{version}](https://github.com/jakeryderv/usdata/releases/tag/v{version}) - {project_date}"
146
+ issue_format = "[#{issue}](https://github.com/jakeryderv/usdata/issues/{issue})"
147
+ template = "scripts/templates/changelog.md.jinja"
148
+ wrap = false
149
+
150
+ [[tool.towncrier.type]]
151
+ directory = "breaking"
152
+ name = "Breaking"
153
+ showcontent = true
154
+
155
+ [[tool.towncrier.type]]
156
+ directory = "security"
157
+ name = "Security"
158
+ showcontent = true
159
+
160
+ [[tool.towncrier.type]]
161
+ directory = "removed"
162
+ name = "Removed"
163
+ showcontent = true
164
+
165
+ [[tool.towncrier.type]]
166
+ directory = "added"
167
+ name = "Added"
168
+ showcontent = true
169
+
170
+ [[tool.towncrier.type]]
171
+ directory = "changed"
172
+ name = "Changed"
173
+ showcontent = true
174
+
175
+ [[tool.towncrier.type]]
176
+ directory = "fixed"
177
+ name = "Fixed"
178
+ showcontent = true
179
+
180
+ [[tool.towncrier.type]]
181
+ directory = "documentation"
182
+ name = "Documentation"
183
+ showcontent = true
184
+
185
+ [[tool.towncrier.type]]
186
+ directory = "development"
187
+ name = "Development"
188
+ showcontent = true
189
+
190
+ [[tool.towncrier.type]]
191
+ directory = "internal"
192
+ name = "Internal"
193
+ showcontent = true
@@ -0,0 +1,159 @@
1
+ [project]
2
+ name = "usdata"
3
+ version = "0.10.0"
4
+ description = "Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data"
5
+ readme = "README.md"
6
+ license = "Apache-2.0"
7
+ authors = [
8
+ { name = "Jake Van Slyke", email = "jakervanslyke@gmail.com" }
9
+ ]
10
+ requires-python = ">=3.11"
11
+ keywords = ["noaa", "usgs", "nasa", "open-data", "scientific-data", "provenance"]
12
+ classifiers = [
13
+ "Development Status :: 2 - Pre-Alpha",
14
+ "Intended Audience :: Science/Research",
15
+ "Programming Language :: Python :: 3",
16
+ "Topic :: Scientific/Engineering",
17
+ ]
18
+ dependencies = [
19
+ "httpx>=0.28.1",
20
+ "pydantic>=2.7",
21
+ "pyyaml>=6.0",
22
+ "typer>=0.18",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ pandas = ["pandas>=3.0"]
27
+ radar = ["xradar>=0.12.0"]
28
+ netcdf = ["xarray>=2025.1", "h5netcdf[h5py]>=1.8.1"]
29
+
30
+ [project.urls]
31
+ Homepage = "https://github.com/jakeryderv/usdata"
32
+ Repository = "https://github.com/jakeryderv/usdata"
33
+
34
+ [project.scripts]
35
+ usdata = "usdata.cli:app"
36
+
37
+ [dependency-groups]
38
+ dev = [
39
+ "pre-commit>=4.6.0",
40
+ "pyright>=1.1.380",
41
+ "pytest>=8.0",
42
+ "pytest-cov>=7.1.0",
43
+ "respx>=0.23.1",
44
+ "ruff>=0.6",
45
+ "towncrier>=26.9",
46
+ ]
47
+ docs = [
48
+ "tomli-w>=1.2.0",
49
+ "mkdocstrings-python>=2.0.8",
50
+ "nbconvert>=7.17.1",
51
+ "towncrier>=26.9",
52
+ "zensical>=0.0.60",
53
+ ]
54
+ examples = [
55
+ "ipykernel>=6.29",
56
+ "jupyterlab>=4.3",
57
+ "matplotlib>=3.9",
58
+ "nbclient>=0.10",
59
+ "pandas>=3.0",
60
+ ]
61
+
62
+ [build-system]
63
+ requires = ["uv_build>=0.12.5,<0.13.0"]
64
+ build-backend = "uv_build"
65
+
66
+ [tool.ruff]
67
+ line-length = 100
68
+ target-version = "py311"
69
+ src = ["src", "tests"]
70
+
71
+ [tool.ruff.lint]
72
+ select = ["E", "F", "I", "UP", "B", "SIM", "RUF", "D"]
73
+ # Docstrings are required on the public API only; magic methods and __init__ are exempt.
74
+ ignore = ["D105", "D107"]
75
+
76
+ [tool.ruff.lint.pydocstyle]
77
+ convention = "google"
78
+
79
+ [tool.ruff.lint.per-file-ignores]
80
+ "tests/**" = ["D"]
81
+ "scripts/**" = ["D"]
82
+
83
+ [tool.pyright]
84
+ include = ["src", "tests"]
85
+ pythonVersion = "3.11"
86
+ typeCheckingMode = "standard"
87
+ venvPath = "."
88
+ venv = ".venv"
89
+
90
+ [tool.pytest.ini_options]
91
+ testpaths = ["tests"]
92
+ markers = [
93
+ "l0: pure in-memory logic",
94
+ "l1: in-process components with controlled transport",
95
+ "l2: local functional tests with filesystem or real decoders",
96
+ "l3: controlled service deployment (currently unused)",
97
+ "l4: production or upstream-live compatibility",
98
+ "live: hits upstream services; requires --run-live",
99
+ "integration: compatibility alias for live",
100
+ "pandas: optional CSV reader coverage",
101
+ "radar: optional radar reader coverage",
102
+ "netcdf: optional NetCDF reader coverage",
103
+ ]
104
+ addopts = "-ra --strict-markers"
105
+
106
+ [tool.towncrier]
107
+ directory = "changes"
108
+ filename = "CHANGELOG.md"
109
+ start_string = "<!-- towncrier release notes start -->\n"
110
+ underlines = ["", "", ""]
111
+ title_format = "## [{version}](https://github.com/jakeryderv/usdata/releases/tag/v{version}) - {project_date}"
112
+ issue_format = "[#{issue}](https://github.com/jakeryderv/usdata/issues/{issue})"
113
+ template = "scripts/templates/changelog.md.jinja"
114
+ wrap = false
115
+
116
+ [[tool.towncrier.type]]
117
+ directory = "breaking"
118
+ name = "Breaking"
119
+ showcontent = true
120
+
121
+ [[tool.towncrier.type]]
122
+ directory = "security"
123
+ name = "Security"
124
+ showcontent = true
125
+
126
+ [[tool.towncrier.type]]
127
+ directory = "removed"
128
+ name = "Removed"
129
+ showcontent = true
130
+
131
+ [[tool.towncrier.type]]
132
+ directory = "added"
133
+ name = "Added"
134
+ showcontent = true
135
+
136
+ [[tool.towncrier.type]]
137
+ directory = "changed"
138
+ name = "Changed"
139
+ showcontent = true
140
+
141
+ [[tool.towncrier.type]]
142
+ directory = "fixed"
143
+ name = "Fixed"
144
+ showcontent = true
145
+
146
+ [[tool.towncrier.type]]
147
+ directory = "documentation"
148
+ name = "Documentation"
149
+ showcontent = true
150
+
151
+ [[tool.towncrier.type]]
152
+ directory = "development"
153
+ name = "Development"
154
+ showcontent = true
155
+
156
+ [[tool.towncrier.type]]
157
+ directory = "internal"
158
+ name = "Internal"
159
+ showcontent = true
@@ -10,10 +10,11 @@ try:
10
10
  except PackageNotFoundError: # running from a source tree without an install
11
11
  __version__ = "0.0.0"
12
12
 
13
- from usdata.models import Asset, BBox, Dataset, Provenance, Query, TimeRange
13
+ from usdata.models import Asset, BBox, Dataset, Provenance, Query, TemporalSelection, TimeRange
14
14
  from usdata.pull import pull, verify
15
15
  from usdata.query import build_query
16
16
  from usdata.registry import DatasetNotFound, Registry, SearchResult, default_registry
17
+ from usdata.selection import select_by_time
17
18
 
18
19
  __all__ = [
19
20
  "Asset",
@@ -24,6 +25,7 @@ __all__ = [
24
25
  "Query",
25
26
  "Registry",
26
27
  "SearchResult",
28
+ "TemporalSelection",
27
29
  "TimeRange",
28
30
  "__version__",
29
31
  "build_query",
@@ -31,6 +33,7 @@ __all__ = [
31
33
  "get",
32
34
  "pull",
33
35
  "search",
36
+ "select_by_time",
34
37
  "verify",
35
38
  ]
36
39