Skip to main content

Provides Dex, a Python container for indexing objects of any type.

Project description

Index your Python objects for fast lookup by their attributes.

tests Actions Status Coverage - 100% license - MIT python - 3.7+

Install

pip install ducks

Usage

The main container in ducks is called Dex.

from ducks import Dex

# make some objects
objects = [
    {'x': 3, 'y': 'a'},
    {'x': 6, 'y': 'b'},
    {'x': 9, 'y': 'c'}
]

# Create a Dex containing the objects.
# Index on x and y.
dex = Dex(objects, ['x', 'y'])

# match objects
dex[{
    'x': {'>': 5, '<': 10},  # where 5 < x < 10
    'y': {'in': ['a', 'b']}  # and y is 'a' or 'b'
}]
# result: [{'x': 6, 'y': 'b'}]

This is a Dex of dicts, but the objects can be any type.

Dex supports ==, !=, in, not in, <, <=, >, >=.

The indexes can be dict keys, object attributes, or custom functions.

Is Dex fast?

Yes. Here’s how Dex compares to other object-finders on an example task.

https://raw.githubusercontent.com/manimino/ducks/main/docs/img/perf_bench.png

Benchmark source

The closest thing to a Dex is an in-memory SQLite. While SQLite is a fantastic database, it requires more overhead. As such, Dex is generally faster.

Docs

There’s more to ducks than making a Dex of dicts. Continue in the docs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ducks-0.5.1.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

ducks-0.5.1-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file ducks-0.5.1.tar.gz.

File metadata

  • Download URL: ducks-0.5.1.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.7 Linux/5.15.55-1-MANJARO

File hashes

Hashes for ducks-0.5.1.tar.gz
Algorithm Hash digest
SHA256 5e86c8ba950a88deacb6fa890460b082138d6bde1c4ba44fb78173d7ef9e71ca
MD5 7b629b83e9ec004290f99d496c9032f2
BLAKE2b-256 8aa57a917a32a139967a420f95a430eccdc7cf6d997a2d4f6bbc83fdbc52b658

See more details on using hashes here.

File details

Details for the file ducks-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: ducks-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.7 Linux/5.15.55-1-MANJARO

File hashes

Hashes for ducks-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a6b4ba4f720a4986ba4216e7b410a4ae840bc5114c1acad71650ac982921cc9d
MD5 b29b942c0e00d878559920317824b66c
BLAKE2b-256 7b39777ea7c092a12bf8527f8ff9dc80cd0d679dffdd9fe8f3e3ee1646a6b499

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page