param
Declarative parameters for robust Python classes and a rich API for reactive programming
What it is and what it does
Param is a zero-dependency library for building classes with rich, validated attributes and reactive programming capabilities. You define attributes as Parameter objects—Integer, String, Selector, Event, and many others—each with metadata like bounds, default values, documentation, and nullability constraints. Param enforces these constraints at runtime, raising errors when invalid values are assigned. The library also provides a reactive API: you can declare that methods should automatically run when specific attributes change, enabling data-driven workflows where UI updates, computations, or side effects trigger automatically.
Param serves as the foundation for HoloViz's Panel and HoloViews libraries, which rely on its combination of declarative attributes and reactive bindings to power interactive visualizations and responsive applications. It is conceptually similar to Pydantic or dataclasses but emphasizes class-level attribute configuration, parameter inheritance across subclasses, and automatic reactivity rather than just input validation.
Use it for:
- Build configuration classes with validated, documented parameters that can be introspected by tools to generate UIs or CLIs automatically.
- Create interactive applications where method calls or state updates trigger automatically when watched parameters change.
- Define hierarchies of classes where subclasses inherit and selectively override parameter metadata from parent classes.
- Implement data pipelines where reactive dependencies ensure downstream computations stay synchronized with upstream changes.
- Construct scientific or data-analysis workflows with rich parameter metadata for reproducibility and documentation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Param provides declarative class attributes with runtime validation and a reactive programming API for automatic updates when attribute values change.
Yes. Param is production-stable, actively maintained, has zero runtime dependencies, and solves a real problem: combining declarative attribute validation with reactive programming. Install it if you need runtime parameter validation with class-level configuration, or if you're building interactive systems where automatic synchronization matters. The BSD-3-Clause license poses no barrier.
Install
param on PyPI
pip
pip install paramuv
uv add parampoetry
poetry add paramInstalling param
Before you install
Installation is straightforward with zero runtime dependencies and a pure Python wheel. The package is actively maintained with recent releases and a stable codebase.
License in practice
BSD-3-Clause is a permissive license allowing commercial and private use with minimal restrictions, making it suitable for most projects.
Quickstart
import param
class MyClass(param.Parameterized):
value = param.Integer(default=5, bounds=(0, 10))
name = param.String(default='test')
obj = MyClass(value=7)
print(obj.param.values())
Requires Python 3.10 or later.
Verify before relying
- Whether reactive watchers scale well with hundreds or thousands of interdependent parameters.
- Performance characteristics when used in high-frequency update scenarios.
- Integration patterns with async/await code.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 66 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,798,370/month — #2,883 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: param-2.4.1-py3-none-any.whl
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
overridesProvides a @override decorator that validates…
permissive · top 1,000 on PyPI
redis-omRedis OM provides declarative object mapping…
permissive · top 15,000 on PyPI
argparse-dataclassBuilds command-line interfaces declaratively by…
permissive · top 5,000 on PyPI
parameterizedParameterized testing decorator that works with…
permissive · top 5,000 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
docsigLints Python function and method signatures to…
permissive · top 15,000 on PyPI
unittest-parametrizeAdds parametrization support to unittest…
permissive · top 15,000 on PyPI
injectProvides a lightweight dependency injection…
permissive · top 5,000 on PyPI
magic-filterProvides a filter mechanism based on dynamic…
permissive · top 5,000 on PyPI
uipath-runtimeProvides foundational runtime interfaces and…
unclear · top 5,000 on PyPI