Skip to content

Conversation

@maximlt
Copy link
Member

@maximlt maximlt commented Oct 27, 2025

This PR removes the API that has been emitting a deprecation warning at the ParamFutureWarninglevel (so visible in a notebook, in a Panel app, etc.) since 2.2.0 (released in December 2024, ~10 months ago), and already deprecated either in 2.0.0 or even before.

Removed in Warning Description
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 Parameter slots / List._class: use instead item_type
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 Parameter slots / Number.set_hook: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.produce_value: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.as_unicode: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.is_ordered_dict: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.hashable: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.named_objs: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.normalize_path: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.__init__ module / param.abbreviate_paths: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.parameterized module / param.parameterized.all_equal: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.parameterized module / param.parameterized.add_metaclass: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.parameterized module / param.parameterized.batch_watch: use instead batch_call_watchers
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.parameterized module / param.parameterized.recursive_repr: no replacement
2.3.0 ParamFutureWarning since 2.2.0, ParamDeprecationWarning since 2.0.0 param.parameterized module / param.parameterized.overridable_property: no replacement
2.3.0 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)}
2.3.0 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
2.3.0 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']
2.3.0 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
2.3.0 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()))
2.3.0 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
2.3.0 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()}
2.3.0 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)}")
2.3.0 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)}")
2.3.0 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, ...)
2.3.0 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, ...)
2.3.0 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, ...)
2.3.0 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
2.3.0 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.

@codecov
Copy link

codecov bot commented Oct 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.16%. Comparing base (8a25d7a) to head (800a077).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1085      +/-   ##
==========================================
+ Coverage   88.06%   89.16%   +1.10%     
==========================================
  Files           9        9              
  Lines        4884     4679     -205     
==========================================
- Hits         4301     4172     -129     
+ Misses        583      507      -76     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@maximlt
Copy link
Member Author

maximlt commented Oct 27, 2025

This shouldn't be controversial, merging.

@maximlt maximlt merged commit a35358b into main Oct 27, 2025
15 checks passed
@maximlt maximlt deleted the api_removals branch October 27, 2025 13:22
@jbednar
Copy link
Member

jbednar commented Oct 27, 2025

Sounds good, thanks! Please monitor the CI for any of our downstream projects that might be affected by this change. Hopefully they've already been updated based on the warnings, but you never know!

@maximlt
Copy link
Member Author

maximlt commented Oct 28, 2025

Will do (I consider it unlikely, and hoxbot is pretty good at taking care of deprecation warnings in our test suites, but who knows).

@philippjfr
Copy link
Member

@maximlt A little confused by this PR, you removed the _deprecate_positional_args decorator, which warned about passing positional args, but seemingly did not actually remove the positional arguments. Is that an oversight?

@philippjfr
Copy link
Member

My bad, I had incorrectly recalled what the consensus decision was and had assumed we were removing default as the positional argument everywhere, which would have been my strong preference.

@maximlt
Copy link
Member Author

maximlt commented Nov 3, 2025

That's still possible if you want to argue for it, with another deprecation round! This one isn't lost though, it has helped us improve the signature of all parameters. Personally, I no longer get confused with passing default. One goal was to make default the only allowed positional argument for all parameters (which can't be done immediately for ClassSelector and a couple of others).

@philippjfr
Copy link
Member

I think the ship has sailed tbh. We're definitely in a better place now and I don't hate it, though personally I'd never use it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants