{"categories":[{"label":"Software Development","url":"https://skillfed.io/packages/category/software-development/5"}],"enrichment":{"capability":"Plum implements multiple dispatch in Python, allowing you to define multiple implementations of a function that are selected at runtime based on the types of positional arguments.","skillfed_tags":["type-dispatch","polymorphism","scientific-computing"],"use_cases":["Implement backend-agnostic libraries that handle multiple array types with specialized code paths for each","Build scientific computing libraries where operations differ based on numeric types (integers, reals, complex numbers)","Create extensible data processing pipelines where different data types trigger different processing strategies","Design machine learning frameworks that need to dispatch to optimized implementations based on input types","Develop coordinate or geometry systems where operations vary by coordinate system or dimension type"],"what_it_does":"Plum brings type annotations to life by implementing multiple dispatch\u2014a pattern where a single function name can have multiple implementations, each handling different argument types. When you call the function, Plum examines the types of the positional arguments and selects the most specific matching implementation. This is inspired by Julia's dispatch model and differs from Python's built-in single dispatch by supporting multiple arguments and type hierarchies.\n\nThe package is powered by beartype and depends on rich and typing-extensions. It works with type hierarchies (e.g., Number, Real, Rational) and automatically selects the best-matching implementation when arguments span multiple types. A key constraint: dispatch decisions are based only on positional arguments, not keyword arguments, so arguments without defaults must always be passed positionally.","worth_installing":"Yes. Plum is actively maintained, has no security vulnerabilities, uses a permissive MIT license, and installs with low friction. It is appropriate for projects that need clean, type-driven polymorphism\u2014particularly scientific computing, machine learning, and backend-agnostic libraries. The Python 3.10 or higher requirement is a hard constraint; if you need older Python support, this is not an option."},"id":"plum-dispatch","links":{"html":"https://skillfed.io/packages/plum-dispatch","md":"https://skillfed.io/packages/plum-dispatch.md","pypi":"https://pypi.org/project/plum-dispatch/"},"maintenance":{"status":"active"},"meta":{"latest_release":"2026-04-28","license_spdx":null,"license_treatment":"permissive","name":"plum-dispatch","python_support":"supports_current","summary":"Multiple dispatch in Python"},"popularity":{"monthly_downloads":1815888,"position":3523,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"2.9.0"}
