Skip to content

Commit 54da93e

Browse files
authored
Add release notes for 2.3.0 (#1096)
1 parent 0b66fe6 commit 54da93e

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

doc/releases.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,127 @@
11
# Releases
22

3+
## Version 2.3.0
4+
5+
Date: 2025-11-13
6+
7+
This minor release brings a number of new features, enhancements, bug fixes, and documentation improvements. Notably, it introduces the new Parameter attributes `default_factory` and `metadata`, and the `ParameterizedABC` class to declare Parameterized abstract base classes. All the docstrings have been improved thanks to a massive effort from @MarcSkovMadsen. Several deprecated APIs have now been removed, and the minimum supported Python version has been bumped to 3.10. Many thanks to our new contributors @Azaya89, @Coderambling, and @ypsah, as well as to @MarcSkovMadsen, @hoxbro, @maximlt, @philippjfr, and all others for their continued maintenance and development efforts.
8+
9+
Features:
10+
11+
- Add a `default_factory` attribute to the base Parameter ([#1092](https://github.com/holoviz/param/pull/1092))
12+
- Add a `metadata` attribute to the base Parameter ([#1094](https://github.com/holoviz/param/pull/1094))
13+
- Allow declaring Parameterized abstract base classes by inheriting from `ParameterizedABC` => This approach should be favored over `__abstract = True` ([#1031](https://github.com/holoviz/param/pull/1031))
14+
- Add `.rx.set()` method ([#957](https://github.com/holoviz/param/pull/957))
15+
16+
Enhancements:
17+
18+
- Add missing docstrings and enhance existing ones ([#992](https://github.com/holoviz/param/pull/992), [#994](https://github.com/holoviz/param/pull/994), [#997](https://github.com/holoviz/param/pull/997), [#998](https://github.com/holoviz/param/pull/998))
19+
- Better error when calling `len()` on a reactive expression ([#1033](https://github.com/holoviz/param/pull/1033))
20+
- Raise `AttributeError` when attempting to set the `value` attribute of a reactive expression ([#1022](https://github.com/holoviz/param/pull/1022))
21+
- Add an `is_instance` attribute to the `List` Parameter ([#1023](https://github.com/holoviz/param/pull/1023))
22+
- Allow `depends(..., on_init=True)` to be applied to async method ([#1067](https://github.com/holoviz/param/pull/1067))
23+
- Add `concrete` keyword to the `descendents` function => Prefer `concrete(<cls>, descendents=True)` over `concrete_descendents(<cls>)` ([#1027](https://github.com/holoviz/param/pull/1027))
24+
25+
Performance Enhancements:
26+
27+
- Improve import time by lazy importing "slow" modules ([#1037](https://github.com/holoviz/param/pull/1037))
28+
- Only update Parameter signatures when needed ([#1038](https://github.com/holoviz/param/pull/1038))
29+
30+
Bug Fixes:
31+
32+
- Fix calling `descendents` on an `object()` instance ([#1024](https://github.com/holoviz/param/pull/1024))
33+
- Ensure `edit_constant` resets class and instance level parameters ([#1015](https://github.com/holoviz/param/pull/1015))
34+
- Ensure `constant` attribute is inherited ([#1017](https://github.com/holoviz/param/pull/1017))
35+
- Ensure type checkers skip `ParameterizedFunction.__init__` ([#1039](https://github.com/holoviz/param/pull/1039))
36+
- Fix `.values()/get_value_generator()` dealing with Dynamic params and an updated default value ([#1058](https://github.com/holoviz/param/pull/1058))
37+
- Do not remove `nested_refs` when updating another ref ([#1061](https://github.com/holoviz/param/pull/1061))
38+
- Fix error message of `ReactiveESMMetaClass` ([#1064](https://github.com/holoviz/param/pull/1064))
39+
- Fix `reactive_ops.__call__` ([#1069](https://github.com/holoviz/param/pull/1069))
40+
- `unwatch` no longer logs a warning and idempotent behavior clarified ([#1018](https://github.com/holoviz/param/pull/1018))
41+
- Remove bad abstract declaration on `SelectorBase` ([#1086](https://github.com/holoviz/param/pull/1086))
42+
- Do not override refs when parameter is triggered ([#1089](https://github.com/holoviz/param/pull/1089))
43+
44+
Documentation:
45+
46+
- Add a new page that lists deprecated and removed APIs ([#1016](https://github.com/holoviz/param/pull/1016))
47+
- Add a version switcher ([#1079](https://github.com/holoviz/param/pull/1079))
48+
- Small refactor and fixes to the API reference ([#1082](https://github.com/holoviz/param/pull/1082))
49+
- README and landing page updates ([#1095](https://github.com/holoviz/param/pull/1095))
50+
- Various minor fixes and improvements ([#1006](https://github.com/holoviz/param/pull/1006), [#1034](https://github.com/holoviz/param/pull/1034), [#1036](https://github.com/holoviz/param/pull/1036), [#1049](https://github.com/holoviz/param/pull/1049), [#1052](https://github.com/holoviz/param/pull/1052), [#1054](https://github.com/holoviz/param/pull/1054))
51+
52+
Breaking changes:
53+
54+
- Direct removal of the undocumented and broken `print_all_param_defaults` function ([#1029](https://github.com/holoviz/param/pull/1029))
55+
- API removals that emitted a deprecation warning since 2.0.0, all included in the table below ([#1085](https://github.com/holoviz/param/pull/1085))
56+
57+
| Warning | Description |
58+
|-|-|
59+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | Parameter slots / `List._class`: use instead `item_type` |
60+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | Parameter slots / `Number.set_hook`: no replacement |
61+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.produce_value`: no replacement |
62+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.as_unicode`: no replacement |
63+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.is_ordered_dict`: no replacement |
64+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.hashable`: no replacement |
65+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.named_objs`: no replacement |
66+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.normalize_path`: no replacement |
67+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.__init__` module / `param.abbreviate_paths`: no replacement |
68+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.parameterized` module / `param.parameterized.all_equal`: no replacement |
69+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.parameterized` module / `param.parameterized.add_metaclass`: no replacement |
70+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.parameterized` module / `param.parameterized.batch_watch`: use instead `batch_call_watchers` |
71+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.parameterized` module / `param.parameterized.recursive_repr`: no replacement |
72+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0` | `param.parameterized` module / `param.parameterized.overridable_property`: no replacement |
73+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.set_default`: use instead `for k,v in p.param.objects().items(): print(f"{p.__class__.name}.{k}={repr(v.default)}` |
74+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param._add_parameter`: use instead `.param.add_parameter` |
75+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.params`: use instead `.param.values()` or `.param['param']` |
76+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.set_param`: use instead `.param.update` |
77+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.get_param_values`: use instead `.param.values().items()` (or `.param.values()` for the common case of `dict(....param.get_param_values())`) |
78+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.params_depended_on`: use instead `.param.method_dependencies` |
79+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.defaults`: use instead `{k:v.default for k,v in p.param.objects().items()}` |
80+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.print_param_defaults`: use instead `for k,v in p.param.objects().items(): print(f"{p.__class__.name}.{k}={repr(v.default)}")` |
81+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.print_param_values`: use instead `for k,v in p.param.objects().items(): print(f"{p.__class__.name}.{k}={repr(v.default)}")` |
82+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.message`: use instead `.param.log(param.MESSAGE, ...)` |
83+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.verbose`: use instead `.param.log(param.VERBOSE, ...)` |
84+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.0.0`, soft-deprecated since `1.12.0` | Parameterized `.param` namespace / `.param.debug`: use instead `.param.log(param.DEBUG, ...)` |
85+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.1.0`, `ParamPendingDeprecationWarning` since `2.0.0` | Instantiating most parameters with positional arguments beyond `default` is deprecated |
86+
| `ParamFutureWarning` since `2.2.0`, `ParamDeprecationWarning` since `2.1.0`, `ParamPendingDeprecationWarning` since `2.0.0` | For `Selector` parameters that accept `objects` as first positional argument, and `ClassSelector` parameters that accept `class_` as first positional argument, passing any argument by position is deprecated. |
87+
88+
Deprecations:
89+
90+
- Deprecate setting a parameter value before full instance initialization ([#1025](https://github.com/holoviz/param/pull/1025))
91+
- Deprecate the keyword `what` of `.param.watch_values()` ([#1073](https://github.com/holoviz/param/pull/1073))
92+
- Deprecate the generic Parameter attribute `pickle_default_value` ([#1019](https://github.com/holoviz/param/pull/1019))
93+
- Deprecate the module `version.py` ([#1002](https://github.com/holoviz/param/pull/1002))
94+
- Deprecate Selector's `compute_default_fn` slot and `compute_default()` method ([#1012](https://github.com/holoviz/param/pull/1012))
95+
96+
Compatibility:
97+
98+
- Drop gmpy support in favor of gmpy2 ([#1026](https://github.com/holoviz/param/pull/1026))
99+
- Ensure support for Python 3.14 ([#1077](https://github.com/holoviz/param/pull/1077))
100+
- Bump the minimum Python version to 3.10 ([#1084](https://github.com/holoviz/param/pull/1084))
101+
- Ensure support for PyPy 3.11 and stop testing PyPy 3.10 ([#1080](https://github.com/holoviz/param/pull/1080))
102+
103+
Internal:
104+
105+
- Introduce `_find_stack_level()` utility to emit warnings with the right stack level ([#1083](https://github.com/holoviz/param/pull/1083))
106+
107+
Infrastructure / Tests:
108+
109+
- Add sysmon for coverage ([#1009](https://github.com/holoviz/param/pull/1009))
110+
- Small updates to the build infrastructure ([#1008](https://github.com/holoviz/param/pull/1008))
111+
- Modify workflow to exclude forks ([#1020](https://github.com/holoviz/param/pull/1020))
112+
- Update pre-commit ([#1078](https://github.com/holoviz/param/pull/1078))
113+
- Make the generator tests more robust ([#1080](https://github.com/holoviz/param/pull/1080), [#1088](https://github.com/holoviz/param/pull/1088))
114+
115+
Governance:
116+
117+
- Add [@maximlt](https://github.com/maximlt) ([#1075](https://github.com/holoviz/param/pull/1075))
118+
119+
Contributor Experience:
120+
121+
- Enhance developer experience with the `setup-dev` command ([#1081](https://github.com/holoviz/param/pull/1081))
122+
123+
[*Full Changelog*](https://github.com/holoviz/param/compare/v2.2.1...v2.3.0)
124+
3125
## Version 2.2.1
4126

5127
Date: 2025-06-11

0 commit comments

Comments
 (0)