PyCDFt 0.1.0__tar.gz → 0.3.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 (50) hide show
  1. pycdft-0.3.0/.github/workflows/release.yml +28 -0
  2. {pycdft-0.1.0 → pycdft-0.3.0}/CHANGELOG.md +14 -1
  3. {pycdft-0.1.0 → pycdft-0.3.0}/PKG-INFO +6 -4
  4. {pycdft-0.1.0 → pycdft-0.3.0}/PyCDFt.egg-info/PKG-INFO +6 -4
  5. {pycdft-0.1.0 → pycdft-0.3.0}/PyCDFt.egg-info/SOURCES.txt +1 -3
  6. {pycdft-0.1.0 → pycdft-0.3.0}/README.md +5 -3
  7. {pycdft-0.1.0 → pycdft-0.3.0}/docs/guide.html +5 -4
  8. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/__init__.py +1 -1
  9. pycdft-0.1.0/examples/figures/example_grid.png +0 -0
  10. pycdft-0.1.0/examples/figures/example_r_gaussian.png +0 -0
  11. pycdft-0.1.0/examples/figures/example_skewed.png +0 -0
  12. {pycdft-0.1.0 → pycdft-0.3.0}/.github/workflows/ci.yml +0 -0
  13. {pycdft-0.1.0 → pycdft-0.3.0}/CONTRIBUTING.md +0 -0
  14. {pycdft-0.1.0 → pycdft-0.3.0}/LICENSE +0 -0
  15. {pycdft-0.1.0 → pycdft-0.3.0}/MANIFEST.in +0 -0
  16. {pycdft-0.1.0 → pycdft-0.3.0}/Makefile +0 -0
  17. {pycdft-0.1.0 → pycdft-0.3.0}/PyCDFt.egg-info/dependency_links.txt +0 -0
  18. {pycdft-0.1.0 → pycdft-0.3.0}/PyCDFt.egg-info/requires.txt +0 -0
  19. {pycdft-0.1.0 → pycdft-0.3.0}/PyCDFt.egg-info/top_level.txt +0 -0
  20. {pycdft-0.1.0 → pycdft-0.3.0}/benchmarks/benchmark_gpu.py +0 -0
  21. {pycdft-0.1.0 → pycdft-0.3.0}/benchmarks/run_hybrid_benchmark.sh +0 -0
  22. {pycdft-0.1.0 → pycdft-0.3.0}/docs/design.md +0 -0
  23. {pycdft-0.1.0 → pycdft-0.3.0}/docs/gpu.md +0 -0
  24. {pycdft-0.1.0 → pycdft-0.3.0}/examples/example_grid.py +0 -0
  25. {pycdft-0.1.0 → pycdft-0.3.0}/examples/example_ibicus_compare.py +0 -0
  26. {pycdft-0.1.0 → pycdft-0.3.0}/examples/example_r_gaussian.py +0 -0
  27. {pycdft-0.1.0 → pycdft-0.3.0}/examples/example_skewed.py +0 -0
  28. {pycdft-0.1.0 → pycdft-0.3.0}/examples/gpu_example.py +0 -0
  29. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/api.py +0 -0
  30. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/core.py +0 -0
  31. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/gpu/__init__.py +0 -0
  32. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/gpu/_torch.py +0 -0
  33. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/gpu/api.py +0 -0
  34. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/gpu/devices.py +0 -0
  35. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/gpu/kernels.py +0 -0
  36. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/math.py +0 -0
  37. {pycdft-0.1.0 → pycdft-0.3.0}/pycdft/py.typed +0 -0
  38. {pycdft-0.1.0 → pycdft-0.3.0}/pyproject.toml +0 -0
  39. {pycdft-0.1.0 → pycdft-0.3.0}/setup.cfg +0 -0
  40. {pycdft-0.1.0 → pycdft-0.3.0}/tests/naive_cdft.py +0 -0
  41. {pycdft-0.1.0 → pycdft-0.3.0}/tests/r_cdft_reference.py +0 -0
  42. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_api.py +0 -0
  43. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_core.py +0 -0
  44. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_equivalence.py +0 -0
  45. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_gpu.py +0 -0
  46. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_ibicus.py +0 -0
  47. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_math.py +0 -0
  48. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_nan.py +0 -0
  49. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_r_cdft.py +0 -0
  50. {pycdft-0.1.0 → pycdft-0.3.0}/tests/test_tails.py +0 -0
@@ -0,0 +1,28 @@
1
+ name: release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ publish:
12
+ runs-on: ubuntu-latest
13
+ environment: pypi
14
+ permissions:
15
+ id-token: write # OIDC token for trusted publishing
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.11"
21
+ - name: Build
22
+ run: |
23
+ pip install -q build
24
+ python -m build
25
+ - name: Publish to PyPI
26
+ uses: pypa/gh-action-pypi-publish@release/v1
27
+ with:
28
+ verify-metadata: true
@@ -4,7 +4,20 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and versioning follows
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
- ## [Unreleased]
7
+ ## [0.3.0] - 2026-10-13
8
+
9
+ ### Added
10
+
11
+ - PyPI publishing via GitHub Actions trusted publishing (OIDC):
12
+ `.github/workflows/release.yml` builds the sdist and wheel and uploads on
13
+ tag push (`v*`), with no API tokens or stored secrets.
14
+
15
+ ### Documentation
16
+
17
+ - README: PyPI install instructions (`pip install pycdft`, with the
18
+ `[gpu]` extra for the optional torch backend).
19
+
20
+ ## [0.2.0] - 2026-10-12
8
21
 
9
22
  ### Documentation
10
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyCDFt
3
- Version: 0.1.0
3
+ Version: 0.3.0
4
4
  Summary: CDF-t statistical downscaling / bias correction, vectorized over grid cells (pure numpy)
5
5
  Author: PyCDFt contributors
6
6
  License-Expression: Apache-2.0
@@ -69,9 +69,11 @@ ds = model.fit_transform(obs, cm_hist, cm_future) # (1000,) downscaled series
69
69
  ## Installation
70
70
 
71
71
  ```bash
72
- pip install . # from this repository (numpy only)
73
- # or editable for development
74
- pip install -e .[test]
72
+ pip install pycdft # from PyPI (numpy only)
73
+ pip install "pycdft[gpu]" # + optional torch GPU backend
74
+ # or from this repository:
75
+ pip install . # core only
76
+ pip install -e ".[test]" # editable, with the test tools
75
77
  ```
76
78
 
77
79
  Requires Python ≥ 3.9 and `numpy>=1.20`. The core has **no other
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyCDFt
3
- Version: 0.1.0
3
+ Version: 0.3.0
4
4
  Summary: CDF-t statistical downscaling / bias correction, vectorized over grid cells (pure numpy)
5
5
  Author: PyCDFt contributors
6
6
  License-Expression: Apache-2.0
@@ -69,9 +69,11 @@ ds = model.fit_transform(obs, cm_hist, cm_future) # (1000,) downscaled series
69
69
  ## Installation
70
70
 
71
71
  ```bash
72
- pip install . # from this repository (numpy only)
73
- # or editable for development
74
- pip install -e .[test]
72
+ pip install pycdft # from PyPI (numpy only)
73
+ pip install "pycdft[gpu]" # + optional torch GPU backend
74
+ # or from this repository:
75
+ pip install . # core only
76
+ pip install -e ".[test]" # editable, with the test tools
75
77
  ```
76
78
 
77
79
  Requires Python ≥ 3.9 and `numpy>=1.20`. The core has **no other
@@ -6,6 +6,7 @@ Makefile
6
6
  README.md
7
7
  pyproject.toml
8
8
  .github/workflows/ci.yml
9
+ .github/workflows/release.yml
9
10
  PyCDFt.egg-info/PKG-INFO
10
11
  PyCDFt.egg-info/SOURCES.txt
11
12
  PyCDFt.egg-info/dependency_links.txt
@@ -21,9 +22,6 @@ examples/example_ibicus_compare.py
21
22
  examples/example_r_gaussian.py
22
23
  examples/example_skewed.py
23
24
  examples/gpu_example.py
24
- examples/figures/example_grid.png
25
- examples/figures/example_r_gaussian.png
26
- examples/figures/example_skewed.png
27
25
  pycdft/__init__.py
28
26
  pycdft/api.py
29
27
  pycdft/core.py
@@ -29,9 +29,11 @@ ds = model.fit_transform(obs, cm_hist, cm_future) # (1000,) downscaled series
29
29
  ## Installation
30
30
 
31
31
  ```bash
32
- pip install . # from this repository (numpy only)
33
- # or editable for development
34
- pip install -e .[test]
32
+ pip install pycdft # from PyPI (numpy only)
33
+ pip install "pycdft[gpu]" # + optional torch GPU backend
34
+ # or from this repository:
35
+ pip install . # core only
36
+ pip install -e ".[test]" # editable, with the test tools
35
37
  ```
36
38
 
37
39
  Requires Python ≥ 3.9 and `numpy>=1.20`. The core has **no other
@@ -175,10 +175,11 @@
175
175
  <!-- 3 ============================================================ -->
176
176
  <section id="install">
177
177
  <h2>3. Installation</h2>
178
- <p>You need Python 3.9 or newer. Install from the repository:</p>
179
- <pre><code>pip install . # core only (numpy)
180
- pip install -e ".[test]" # development install with the test tools</code></pre>
181
- <p>(The quotes keep shells such as zsh from interpreting the brackets.) The core has <strong>no dependencies beyond numpy</strong>. Optional extras:</p>
178
+ <p>You need Python 3.9 or newer. The core is <strong>numpy only</strong>:</p>
179
+ <pre><code>pip install pycdft # from PyPI
180
+ pip install "pycdft[gpu]" # + optional torch GPU backend
181
+ pip install -e ".[test]" # development install (from the repository)</code></pre>
182
+ <p>(The quotes keep shells such as zsh from interpreting the brackets.) Optional extras:</p>
182
183
  <table>
183
184
  <tr><th>Extra</th><th>What it adds</th></tr>
184
185
  <tr><td><code>[gpu]</code></td><td>torch, for the GPU backend (<code>pycdft.gpu</code>). For a specific build (ROCm, CPU-only) install that torch first — see §8.</td></tr>
@@ -27,7 +27,7 @@ except Exception: # pragma: no cover - torch-less install
27
27
  gpu = None # type: ignore[assignment]
28
28
  GPU_AVAILABLE = False
29
29
 
30
- __version__ = "0.1.0"
30
+ __version__ = "0.3.0"
31
31
 
32
32
  __all__ = [
33
33
  "CDFt",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes