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.
- usdata-0.10.0/PKG-INFO +130 -0
- usdata-0.10.0/README.md +102 -0
- usdata-0.10.0/pyproject.toml +193 -0
- usdata-0.10.0/pyproject.toml.orig +159 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/__init__.py +4 -1
- usdata-0.10.0/src/usdata/_radar.py +123 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/nexrad_sites.csv +211 -211
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/registry.yaml +109 -12
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/fetch.py +9 -1
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/models.py +24 -2
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/s3.py +15 -2
- usdata-0.10.0/src/usdata/providers/_http.py +27 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/coastwatch.py +4 -19
- usdata-0.10.0/src/usdata/providers/noaa/coops.py +141 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/ghcnd.py +4 -19
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/goes.py +5 -22
- usdata-0.10.0/src/usdata/providers/noaa/gsoy.py +46 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/nexrad.py +5 -22
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/storm_events.py +4 -21
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/usgs/daily.py +4 -19
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/readers.py +19 -3
- usdata-0.10.0/src/usdata/selection.py +71 -0
- usdata-0.8.0/PKG-INFO +0 -230
- usdata-0.8.0/README.md +0 -202
- usdata-0.8.0/pyproject.toml +0 -112
- usdata-0.8.0/pyproject.toml.orig +0 -86
- usdata-0.8.0/src/usdata/_radar.py +0 -73
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_files.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_netcdf.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/_progress.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cache.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/__init__.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/app.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/cli/progress.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/places.csv +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/data/places.sources.json +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/manifest.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/__init__.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/erddap.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/protocols/http.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/provenance.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/__init__.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/base.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/__init__.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/gsom.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/noaa/sites.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/providers/usgs/__init__.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/pull.py +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/py.typed +0 -0
- {usdata-0.8.0 → usdata-0.10.0}/src/usdata/query.py +0 -0
- {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).
|
usdata-0.10.0/README.md
ADDED
|
@@ -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
|
|