Skip to main content

consts-everywhere

Create const variables everywhere. This is not just a __setattr__ trick that only makes it possible to create const members. You can also create local and global consts.

Installation

pip install consts-everywhere

How To Use

We have a proxy class:

class Const(wrapped)

This class inherits a variant of ObjectProxy from wrapt. Along with all augmented assignment operators, this class also overloads the normal assignment operator (=) thanks to assign-overload. wrapped can be any object and the resulting instance of this class will act like wrapped in every way. If you use this class, you need to call consts_everywhere.patch_and_reload_module(). consts_everywhere monkeypatches assign_overload.patch_and_reload_module() to make it possible to define global Const objects. Since it is monkeypatched you can also access this function from assign_overload module. You can find documentation about this function in assign-overload. Usage example:

import consts_everywhere

def main():
    a = consts_everywhere.Const(10)
    print(a) # prints 10
    a = 20 # Error

if consts_everywhere.patch_and_reload_module():
    main()

One thing to note is if you assign a variable holding a Const instance to a new variable, new variable takes the value of the Const instance, not the value of its underlying object. However, most operators return the underlying object. Example:

import consts_everywhere

def main():
    a = consts_everywhere.Const(10)
    print(type(a+5)) # prints int
    b = a
    print(type(b)) # prints Const

if consts_everywhere.patch_and_reload_module():
    main()

If you want to access the underlying object, use the __wrapped__ attribute:

import consts_everywhere

def main():
    a = consts_everywhere.Const(10)
    b = a.__wrapped__
    print(type(b)) # prints int

if consts_everywhere.patch_and_reload_module():
    main()

Const is also compatible with typeguard. Function argument type enforcement example:

import typeguard
import consts_everywhere

@typeguard.typechecked
def test4(a: consts_everywhere.Const[int]):
    pass

def main():
    a = consts_everywhere.Const(10)
    b = consts_everywhere.Const("abc")
    test4(a) # Ok
    test4(b) # Error

if consts_everywhere.patch_and_reload_module():
    main()

Metadata

Release files for consts-everywhere 1.0.2

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

Source distribution (sdist)

Source distribution for consts-everywhere 1.0.2
File Size Uploaded
consts_everywhere-1.0.2.tar.gz 37.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for consts-everywhere 1.0.2
File Interpreter ABI Platform
consts_everywhere-1.0.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 80.5 kB

Release files / consts_everywhere-1.0.2.tar.gz

Download URL consts_everywhere-1.0.2.tar.gz
Size 37.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4589619b80de30888d536ee940acbeea51120c8ef271ffe5992be694b2da3e9c
BLAKE2b-256 checksum
How to use checksums
5320cd2ca911d8e18dd074980a5a6b5fc27e08583ae099242eef24a9a9a2840d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.0

Release files / consts_everywhere-1.0.2-py2.py3-none-any.whl

Download URL consts_everywhere-1.0.2-py2.py3-none-any.whl
Size 43.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
70b73e57cd2dd780718bf00714d22da07738176436f4b310a83aa3ac76ca4040
BLAKE2b-256 checksum
How to use checksums
2cedabff19f49a48d276ee4890190878ed6cdc7423e420e289dac10fe674c844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

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