Skip to main content

Helper decorator to lock default mutable values

Project description

lock-defaults

PyPI License Copy and Paste

This decorator is small and only relies on the standard library, so can just be copied into a project.

Python has a weird behaviour around default values for functions. If you use an empty list as a default argument, things added to the list during the function can hang around for next time the function is called. A common pattern of dealing with this is the following:

def func(foo = None):
    if foo is None:
        foo = []

But this looks rubbish! And gets worse when you add typing:

def func(foo: list | None = None):
    if foo is None:
        foo = []

You don't need that workaround for any other of default value. Why does the list parameter have to pretend it can be None, when that's not the intention at all?

The lockmutabledefaults decorator fixes this by introducing what should be the default approach, and default values that are lists, dictionaries or sets are isolated in each re-run.

@lockmutabledefaults
def func(foo: list = []):
    pass

Install

You can install from pip: python -m pip install lock-defaults

Or you can copy the function directly into your projects.

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

lock-defaults-0.1.4.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

lock_defaults-0.1.4-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file lock-defaults-0.1.4.tar.gz.

File metadata

  • Download URL: lock-defaults-0.1.4.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Linux/5.13.0-1025-azure

File hashes

Hashes for lock-defaults-0.1.4.tar.gz
Algorithm Hash digest
SHA256 49b0e29bcd7d752e119429983255a45edde5b71b70addca95f7f3a1f71635f3a
MD5 07bce0bc87dbb9ca66911bc9c9ab18f6
BLAKE2b-256 160b94c5f103d2f109e1b4d070166d4241cec49aedd3c036d37fce864e9b47ee

See more details on using hashes here.

File details

Details for the file lock_defaults-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: lock_defaults-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Linux/5.13.0-1025-azure

File hashes

Hashes for lock_defaults-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3d8977663c66bce355e8e6db000d9ce4cd79bf1b903d5a92848c5b1406005e27
MD5 f545d1d96c06a8f49a07ed50b91e8f06
BLAKE2b-256 db0fe616bae690569a24983593ab5cd3c0582946abf663c2f57d543d1c8b8bf5

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