fitsolver-client 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fitsolver-client
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Minimal ctypes client for the FitSolver C ABI (fitsolver_lib)
5
5
  Author: Fantastic Division
6
6
  Project-URL: Homepage, https://github.com/FantasticDivision/Solver
@@ -32,7 +32,7 @@ pip install fitsolver-client
32
32
 
33
33
  ```
34
34
  # requirements.txt / pyproject.toml
35
- fitsolver-client==0.1.0
35
+ fitsolver-client>=0.2.0
36
36
  ```
37
37
 
38
38
  One wheel is published per OS (Linux `manylinux_2_28`, macOS x86_64 +
@@ -82,6 +82,56 @@ python -m wheel tags --python-tag py3 --abi-tag none \
82
82
  --platform-tag win_amd64 --remove python/fitsolver_client/dist/*.whl
83
83
  ```
84
84
 
85
+ ## Releasing a new version to PyPI
86
+
87
+ PyPI versions are immutable, so a release is always a deliberate version
88
+ bump + tag. Publishing is automated (`.github/workflows/wheels.yml`) and
89
+ uses **Trusted Publishing** (OIDC) -- no API token. Do it whenever the
90
+ native `fitsolver_lib` behaviour changes (the wheels vendor the compiled
91
+ library) or the client code itself changes.
92
+
93
+ 1. **Bump the version.** Edit `version` in
94
+ `python/fitsolver_client/pyproject.toml` (semver: patch for a
95
+ bug-fix-only lib rebuild, minor for new/changed packing behaviour,
96
+ major for a breaking request/response change). Note the same version
97
+ in this README's install snippet.
98
+
99
+ 2. **Commit it on `main`.**
100
+
101
+ ```bash
102
+ git add python/fitsolver_client/pyproject.toml python/fitsolver_client/README.md
103
+ git commit -m "fitsolver-client: release vX.Y.Z"
104
+ git push origin main
105
+ ```
106
+
107
+ The push runs the wheels workflow in build-and-smoke-test-only mode
108
+ (no upload) -- check it is green before tagging.
109
+
110
+ 3. **Tag and push the tag -- this is what publishes to PyPI.**
111
+
112
+ ```bash
113
+ git tag vX.Y.Z # tag name must match the pyproject version, with a leading v
114
+ git push origin vX.Y.Z
115
+ ```
116
+
117
+ The tag push triggers the full matrix: per-OS wheels (Linux
118
+ `manylinux_2_28`, macOS `universal2`, Windows x64) + an sdist, each
119
+ smoke-tested in a clean venv, then `publish-pypi` uploads them.
120
+
121
+ 4. **Verify.** `pip install fitsolver-client==X.Y.Z` in a fresh venv;
122
+ check https://pypi.org/project/fitsolver-client/ shows the new files.
123
+
124
+ 5. **Bump consumers.** Update `fitsolver-client>=X.Y.Z` in
125
+ `fantastic-portal/backend/pyproject.toml` (and anywhere else it is
126
+ pinned).
127
+
128
+ ### First-time setup (already done for this project)
129
+
130
+ On PyPI: *Account -> Publishing -> add a pending publisher* -- project
131
+ `fitsolver-client`, owner `FantasticDivision`, repo `Solver`, workflow
132
+ `wheels.yml`, environment `pypi`. Create a matching `pypi` environment
133
+ under the GitHub repo's *Settings -> Environments*. No secrets are stored.
134
+
85
135
  ## Usage
86
136
 
87
137
  ```python
@@ -17,7 +17,7 @@ pip install fitsolver-client
17
17
 
18
18
  ```
19
19
  # requirements.txt / pyproject.toml
20
- fitsolver-client==0.1.0
20
+ fitsolver-client>=0.2.0
21
21
  ```
22
22
 
23
23
  One wheel is published per OS (Linux `manylinux_2_28`, macOS x86_64 +
@@ -67,6 +67,56 @@ python -m wheel tags --python-tag py3 --abi-tag none \
67
67
  --platform-tag win_amd64 --remove python/fitsolver_client/dist/*.whl
68
68
  ```
69
69
 
70
+ ## Releasing a new version to PyPI
71
+
72
+ PyPI versions are immutable, so a release is always a deliberate version
73
+ bump + tag. Publishing is automated (`.github/workflows/wheels.yml`) and
74
+ uses **Trusted Publishing** (OIDC) -- no API token. Do it whenever the
75
+ native `fitsolver_lib` behaviour changes (the wheels vendor the compiled
76
+ library) or the client code itself changes.
77
+
78
+ 1. **Bump the version.** Edit `version` in
79
+ `python/fitsolver_client/pyproject.toml` (semver: patch for a
80
+ bug-fix-only lib rebuild, minor for new/changed packing behaviour,
81
+ major for a breaking request/response change). Note the same version
82
+ in this README's install snippet.
83
+
84
+ 2. **Commit it on `main`.**
85
+
86
+ ```bash
87
+ git add python/fitsolver_client/pyproject.toml python/fitsolver_client/README.md
88
+ git commit -m "fitsolver-client: release vX.Y.Z"
89
+ git push origin main
90
+ ```
91
+
92
+ The push runs the wheels workflow in build-and-smoke-test-only mode
93
+ (no upload) -- check it is green before tagging.
94
+
95
+ 3. **Tag and push the tag -- this is what publishes to PyPI.**
96
+
97
+ ```bash
98
+ git tag vX.Y.Z # tag name must match the pyproject version, with a leading v
99
+ git push origin vX.Y.Z
100
+ ```
101
+
102
+ The tag push triggers the full matrix: per-OS wheels (Linux
103
+ `manylinux_2_28`, macOS `universal2`, Windows x64) + an sdist, each
104
+ smoke-tested in a clean venv, then `publish-pypi` uploads them.
105
+
106
+ 4. **Verify.** `pip install fitsolver-client==X.Y.Z` in a fresh venv;
107
+ check https://pypi.org/project/fitsolver-client/ shows the new files.
108
+
109
+ 5. **Bump consumers.** Update `fitsolver-client>=X.Y.Z` in
110
+ `fantastic-portal/backend/pyproject.toml` (and anywhere else it is
111
+ pinned).
112
+
113
+ ### First-time setup (already done for this project)
114
+
115
+ On PyPI: *Account -> Publishing -> add a pending publisher* -- project
116
+ `fitsolver-client`, owner `FantasticDivision`, repo `Solver`, workflow
117
+ `wheels.yml`, environment `pypi`. Create a matching `pypi` environment
118
+ under the GitHub repo's *Settings -> Environments*. No secrets are stored.
119
+
70
120
  ## Usage
71
121
 
72
122
  ```python
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fitsolver-client
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Minimal ctypes client for the FitSolver C ABI (fitsolver_lib)
5
5
  Author: Fantastic Division
6
6
  Project-URL: Homepage, https://github.com/FantasticDivision/Solver
@@ -32,7 +32,7 @@ pip install fitsolver-client
32
32
 
33
33
  ```
34
34
  # requirements.txt / pyproject.toml
35
- fitsolver-client==0.1.0
35
+ fitsolver-client>=0.2.0
36
36
  ```
37
37
 
38
38
  One wheel is published per OS (Linux `manylinux_2_28`, macOS x86_64 +
@@ -82,6 +82,56 @@ python -m wheel tags --python-tag py3 --abi-tag none \
82
82
  --platform-tag win_amd64 --remove python/fitsolver_client/dist/*.whl
83
83
  ```
84
84
 
85
+ ## Releasing a new version to PyPI
86
+
87
+ PyPI versions are immutable, so a release is always a deliberate version
88
+ bump + tag. Publishing is automated (`.github/workflows/wheels.yml`) and
89
+ uses **Trusted Publishing** (OIDC) -- no API token. Do it whenever the
90
+ native `fitsolver_lib` behaviour changes (the wheels vendor the compiled
91
+ library) or the client code itself changes.
92
+
93
+ 1. **Bump the version.** Edit `version` in
94
+ `python/fitsolver_client/pyproject.toml` (semver: patch for a
95
+ bug-fix-only lib rebuild, minor for new/changed packing behaviour,
96
+ major for a breaking request/response change). Note the same version
97
+ in this README's install snippet.
98
+
99
+ 2. **Commit it on `main`.**
100
+
101
+ ```bash
102
+ git add python/fitsolver_client/pyproject.toml python/fitsolver_client/README.md
103
+ git commit -m "fitsolver-client: release vX.Y.Z"
104
+ git push origin main
105
+ ```
106
+
107
+ The push runs the wheels workflow in build-and-smoke-test-only mode
108
+ (no upload) -- check it is green before tagging.
109
+
110
+ 3. **Tag and push the tag -- this is what publishes to PyPI.**
111
+
112
+ ```bash
113
+ git tag vX.Y.Z # tag name must match the pyproject version, with a leading v
114
+ git push origin vX.Y.Z
115
+ ```
116
+
117
+ The tag push triggers the full matrix: per-OS wheels (Linux
118
+ `manylinux_2_28`, macOS `universal2`, Windows x64) + an sdist, each
119
+ smoke-tested in a clean venv, then `publish-pypi` uploads them.
120
+
121
+ 4. **Verify.** `pip install fitsolver-client==X.Y.Z` in a fresh venv;
122
+ check https://pypi.org/project/fitsolver-client/ shows the new files.
123
+
124
+ 5. **Bump consumers.** Update `fitsolver-client>=X.Y.Z` in
125
+ `fantastic-portal/backend/pyproject.toml` (and anywhere else it is
126
+ pinned).
127
+
128
+ ### First-time setup (already done for this project)
129
+
130
+ On PyPI: *Account -> Publishing -> add a pending publisher* -- project
131
+ `fitsolver-client`, owner `FantasticDivision`, repo `Solver`, workflow
132
+ `wheels.yml`, environment `pypi`. Create a matching `pypi` environment
133
+ under the GitHub repo's *Settings -> Environments*. No secrets are stored.
134
+
85
135
  ## Usage
86
136
 
87
137
  ```python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fitsolver-client"
3
- version = "0.1.0"
3
+ version = "0.2.0"
4
4
  description = "Minimal ctypes client for the FitSolver C ABI (fitsolver_lib)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"