skillfed

plucky

Plucking (deep) keys/paths safely from python collections has never been easier.

plucky v0.4.3 79.7K downloads/30d#14,337 on PyPI15
Permissive license MIT DORMANT released

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 plucky

uv

uv add plucky

poetry

poetry add plucky

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 2.6Programming Language :: Python :: 2.7Programming Language :: Python :: 3Programming Language :: Python :: 3.3Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Topic :: Software Development :: Libraries :: Python Modules

Tags

nested dictionary accesssafe deep object getpluck nested valueschained attribute getterdict key path selectorsafe missing key handlingdeep data extraction
data-extractionnested-accesszero-dependency

More Python Modules packages