plucky
Plucking (deep) keys/paths safely from python collections has never been easier.
What it is and what it does
Plucky is a lightweight utility for extracting values from nested Python data structures—dictionaries, lists, and objects—without raising exceptions when keys or indices are missing. It offers three main interfaces: `pluckable()` wraps an object and lets you chain attribute and item access with a fluent API; `pluck()` accepts a string selector with Python-like syntax (e.g., `'users[2:5].name["first"]'`); and `plucks()` uses a simpler dot-notation syntax (e.g., `'users.2.name.first'`) for the most common cases. It also includes a `merge()` function for recursively combining nested structures.
The package has no runtime dependencies and installs as a pure Python wheel. It is dormant—the last release was in September 2018, though the repository received a commit in December 2024. The codebase is stable and the API is mature, making it suitable for projects that need straightforward nested access without active maintenance.
Use it for:
- Extract nested fields from JSON API responses or parsed configuration files without checking for missing keys at each level
- Safely access deeply nested user or entity data in web applications without defensive None checks
- Merge configuration dictionaries recursively, combining defaults with user-provided overrides
- Pluck multiple values from a list of objects (e.g., all first names from a user list) in a single expression
- Handle heterogeneous nested structures where some branches may be missing or have different shapes
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Plucky provides concise, safe access to deeply nested values in Python objects using chained attribute/item getters, string selectors, or a simplified dot-notation syntax that gracefully handles missing keys.
Yes, if you need safe nested data access in a stable, zero-dependency package and can accept that it receives no active maintenance. The dormant status is not a blocker for read-only use cases, but avoid it if you require ongoing bug fixes or compatibility updates for cutting-edge Python versions. For projects already on Python 3.6 or earlier, or for simple nested-access patterns, it remains a solid choice.
Install
plucky on PyPI
pip
pip install pluckyuv
uv add pluckypoetry
poetry add pluckyInstalling plucky
Before you install
Zero runtime dependencies and a pure-Python wheel make installation frictionless. The package is dormant (last release September 2018, last commit December 2024), so expect no active maintenance or bug fixes, though the codebase appears stable.
License in practice
MIT license is permissive and imposes no restrictions on use, modification, or distribution in commercial or private projects.
Quickstart
pip install plucky
from plucky import plucks, pluckable
obj = {'users': [{'name': {'first': 'John'}}, {'name': {'last': 'Bono'}}]}
plucks(obj, 'users.name.first')
# -> ['John']
pluckable(obj).users.name.first.value
Verify before relying
- Whether the package works reliably with modern Python versions (classifiers list Python 3.6 as the latest tested version)
- Performance characteristics when working with very large nested structures
- Compatibility with recent versions of Python 3.10+ given the age of the last release
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 2,900 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 79,724/month — #14,337 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: plucky-0.4.3-py2.py3-none-any.whl
Keywords: pluck, itemgetter, safe, nested, get
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
hydratersMerges nested Python dictionaries efficiently…
unclear · top 15,000 on PyPI
dotmapDotMap is a dict subclass that lets you access…
permissive · top 5,000 on PyPI
sqlitedictProvides a dict-like interface to SQLite…
permissive · top 5,000 on PyPI
maybe-elseWraps values in a `Maybe` class to handle None…
permissive · top 15,000 on PyPI
dm-treeProvides utilities for working with nested data…
permissive · top 5,000 on PyPI
multi_key_dictA dictionary that maps multiple keys to the…
permissive · top 5,000 on PyPI
tensordictTensorDict is a batched, nested dictionary…
permissive · top 5,000 on PyPI
deepmergeMerges nested Python data structures (dicts,…
permissive · top 5,000 on PyPI
dpathdpath lets you access, search, and modify…
permissive · top 5,000 on PyPI
pyquerypyquery lets you query and manipulate XML and…
permissive · top 5,000 on PyPI