Skip to main content

PynamoDB Polymorph

This package has utilities that are useful when using PynamoDB with a single-table (polymorphic) design and overloading Global Secondary Indexes.

Take for example a Publisher class that needs to use a compound key of their type prefix and their name. If you rely on callers doing the copy in code there is possibility for them to update the name without also updating the GSI sort key that contains the name. The CompoundTemplateAttribute uses string.Template templating to fill unicode or numeric attributes into a string template to build keys automatically.

class Publisher(Base, discriminator="Publisher"):
    name = UnicodeAttribute()
    description = UnicodeAttribute(default="")
    gsi1_pk = CopiedDiscriminatorAttribute(source="cls")

    _slug = "PUBLISHER"
    gsi1_sk = JoinedUnicodeAttribute(attrs=["_slug", 'name'], sep='#')

    # Alternative way to specify gsi1_sk using a `string.Template`.
    # This is best for cases that aren't simply joining attrs with a character
    # gsi1_sk = CompoundTemplateAttribute(
    #     template="PUBLISHER#$name",
    #     attrs=["name"],
    # )

The template above will take any value in name and fill it in to the template, so name="Random Book Publishing House" will become a gsi1_sk="PUBLISHER#Random Book Publishing House".

Release files for pynamodb-polymorph 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pynamodb-polymorph 0.4.0
File Size Uploaded
pynamodb-polymorph-0.4.0.tar.gz 5.8 kB Details

Release files / pynamodb-polymorph-0.4.0.tar.gz

Download URL pynamodb-polymorph-0.4.0.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
42942750e68e31cf2a2dc138f980f3ebea012f6be80c68184aa253b6ce5d3ca1
BLAKE2b-256 checksum
How to use checksums
41cece09295de70b085c1b2ee0b5f58687181e954654256edf686855d4b498fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

Release history Release notifications | RSS feed

This release

0.4.0 This release

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page