Skip to content

Commit ab00379

Browse files
release: svy 0.36.0 (#414)
1 parent 3c52f5a commit ab00379

9 files changed

Lines changed: 19 additions & 14 deletions

File tree

‎packages/svy/CHANGELOG.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Companion packages track their own changes: [`svy-io`](../svy-io/CHANGELOG.md) (
66

77
## [Unreleased]
88

9+
## [0.36.0] — 2026-10-28
10+
11+
Requires [`svy-rs`](../svy-rs/CHANGELOG.md) 0.20.0 and [`svy-io`](../svy-io/CHANGELOG.md) 0.8.0, which carry the kernel and reader/writer changes below.
12+
913
### Added
1014

1115
- **`Power().compare_means` and `compare_props` give the power of the two-group comparisons.** `n` is group 1's size (group 2 gets `alloc_ratio * n`) or the `(n1, n2)` pair `SampleSize().compare_*` returns; `deff`, `resp_rate` and `pop_size` take one value or a `(group 1, group 2)` pair; `var_mode`, `rho`, `overlap`, `delta` and `two_sides` mean what they mean in sizing, and full overlap reproduces a paired test (Stata `power pairedmeans`). Experimental, like the rest of `Power`.
@@ -1319,7 +1323,8 @@ Builds on [`svy-rs`](../svy-rs/CHANGELOG.md) 0.11.0 and [`svy-io`](../svy-io/CHA
13191323

13201324
First release tracked in this changelog. For the history prior to 0.18.2, see the [Git tags](https://github.com/samplics-org/svy/tags) and [GitHub Releases](https://github.com/samplics-org/svy/releases).
13211325

1322-
[Unreleased]: https://github.com/samplics-org/svy/compare/svy-v0.35.0...HEAD
1326+
[Unreleased]: https://github.com/samplics-org/svy/compare/svy-v0.36.0...HEAD
1327+
[0.36.0]: https://github.com/samplics-org/svy/releases/tag/svy-v0.36.0
13231328
[0.35.0]: https://github.com/samplics-org/svy/releases/tag/svy-v0.35.0
13241329
[0.34.0]: https://github.com/samplics-org/svy/releases/tag/svy-v0.34.0
13251330
[0.33.1]: https://github.com/samplics-org/svy/releases/tag/svy-v0.33.1

‎packages/svy/pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "svy"
3-
version = "0.35.0"
3+
version = "0.36.0"
44
description = "End-to-end surveys: design, sample, analyze, report."
55
readme = "README.md"
66
license = { file = "LICENSE" }

‎packages/svy/src/svy/__init__.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
# Ensure no “No handlers could be found” warnings in user apps
7272
logging.getLogger(__name__).addHandler(logging.NullHandler())
7373

74-
__version__ = "0.35.0"
74+
__version__ = "0.36.0"
7575

7676
__all__ = [
7777
# --- Modules ---
@@ -123,7 +123,7 @@
123123
"SvyWarning",
124124
]
125125

126-
# Names that left the top level in 2026.0: the error says where each one went.
126+
# Names that left the top level in 0.36.0: the error says where each one went.
127127
_MOVED: dict[str, str] = {
128128
**dict.fromkeys(io.__all__, "svy.io"),
129129
**dict.fromkeys(
@@ -267,5 +267,5 @@ def __getattr__(name: str):
267267
from svy.errors._api import UnknownNameError
268268

269269
if name in _MOVED:
270-
raise UnknownNameError.moved(label="svy", name=name, home=_MOVED[name], since="2026.0")
270+
raise UnknownNameError.moved(label="svy", name=name, home=_MOVED[name], since="0.36.0")
271271
raise UnknownNameError.unknown(owner="svy", label="svy", name=name, available=__all__)

‎packages/svy/src/svy/datasets/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def __getattr__(name: str):
155155
from svy.errors._api import UnknownNameError
156156

157157
raise UnknownNameError.renamed(
158-
label="svy.datasets", name=name, new=_MOVED[name], since="2026.0"
158+
label="svy.datasets", name=name, new=_MOVED[name], since="0.36.0"
159159
)
160160
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
161161

‎packages/svy/src/svy/errors/_api.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
# Names other software uses, or that are commonly guessed, mapped to svy's.
2929
_ALIASES: dict[str, dict[str, str]] = {
3030
"svy": {
31-
"SvyUserWarning": "svy.SvyWarning, its name since 2026.0",
31+
"SvyUserWarning": "svy.SvyWarning, its name since 0.36.0",
3232
"MethodError": "the error of the part of svy you called, in svy.errors (EstimationError, "
3333
"WeightingError, DataError, ...), or the builtin it also is (ValueError, TypeError)",
3434
"DimensionError": "the error of the part of svy you called, in svy.errors (DataError, "
@@ -43,9 +43,9 @@
4343
"read_excel": "polars.read_excel(...), then svy.Sample(...)",
4444
},
4545
"svy.errors": {
46-
"SvyUserWarning": "svy.errors.SvyWarning, its name since 2026.0",
47-
"WarnCode": "svy.errors.Code, which lists every error and warning code since 2026.0",
48-
# Split by area in 2026.0; the builtin kind (ValueError, ...) catches across areas.
46+
"SvyUserWarning": "svy.errors.SvyWarning, its name since 0.36.0",
47+
"WarnCode": "svy.errors.Code, which lists every error and warning code since 0.36.0",
48+
# Split by area in 0.36.0; the builtin kind (ValueError, ...) catches across areas.
4949
"MethodError": "the error of the part of svy you called (EstimationError, "
5050
"WeightingError, DataError, ...), or the builtin it also is (ValueError, TypeError)",
5151
"DimensionError": "the error of the part of svy you called (DataError, "

‎packages/svy/src/svy/errors/_label.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def serialization_error(
137137

138138
@dataclass(eq=False)
139139
class LabelAPIRemoved(LabelError, AttributeError):
140-
"""A label accessor removed in 2026.0; names its replacement.
140+
"""A label accessor removed in 0.36.0; names its replacement.
141141
142142
Also an ``AttributeError``, so ``hasattr`` on the old name is False.
143143
"""

‎packages/svy/tests/svy/datasets/test_labelled_data.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def test_removed_names_point_to_info(name, target):
223223
e = err.value
224224
assert isinstance(e, AttributeError)
225225
assert e.code == Code.NAME_MOVED
226-
assert e.detail == f"svy.datasets.{name} moved to {target} in 2026.0."
226+
assert e.detail == f"svy.datasets.{name} moved to {target} in 0.36.0."
227227
assert e.expected == target
228228
assert e.hint == f"Use {target}."
229229
assert name not in d.__all__

‎packages/svy/tests/svy/test_top_level.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def test_moved_name_says_where_it_went(name, home):
138138
getattr(svy, name)
139139
assert isinstance(err.value, AttributeError)
140140
assert err.value.code == Code.NAME_MOVED
141-
assert err.value.detail == f"svy.{name} moved to {home}.{name} in 2026.0."
141+
assert err.value.detail == f"svy.{name} moved to {home}.{name} in 0.36.0."
142142
assert err.value.expected == f"{home}.{name}"
143143
assert not hasattr(svy, name)
144144
assert name not in dir(svy)

‎uv.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)