Skip to main content

intermodule

This library makes it possible to share global variables across modules.

Installation

pip install intermodule

Api Reference

class intermodule.SharedGlobal

Instances of this class manage a global variable and keep it synchronized across modules. You should never instantiate this class directly. Instead, use set_global and get_global functions. 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. Underlying global variable can be any object and the resulting instance of this class will act like that object in every way. If you use this class, you need to call intermodule.patch_and_reload_module(). You can also access this function from assign_overload module. You can find documentation about this function in assign-overload.

SharedGlobal.set_global(name, value)

Creates a new SharedGlobal instance with the given name and value but doesn't return it. Instead, assigns it to the calling module. Lastly, assigns it to every module which has a global variable whose name is name and whose value is a SharedGlobal instance.

SharedGlobal.get_global(name)

Search through every module for a already defined global variable named name. If found, check if it is a SharedGlobal instance. If it is, assign its value to the calling module. The value won't be returned. If no module defines a variable named name or if its value is not a SharedGlobal instance, raise an error.

Example

# module1.py
import intermodule

intermodule.SharedGlobal.set_global("x", 10)

def main():
    global x
    import module2
    module2.func1()
    print(x) # prints 20
    x = 30
    module2.func2()

if intermodule.patch_and_reload_module():
    main()
# module2.py
import intermodule

intermodule.SharedGlobal.get_global("x")

def func1():
    global x
    x = 20

def func2():
    print(x) # prints 30

if intermodule.patch_and_reload_module():
    pass

Metadata

Release files for intermodule 1.0.0.post1

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

Source distribution (sdist)

Source distribution for intermodule 1.0.0.post1
File Size Uploaded
intermodule-1.0.0.post1.tar.gz 2.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for intermodule 1.0.0.post1
File Interpreter ABI Platform
intermodule-1.0.0.post1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 5.4 kB

Release files / intermodule-1.0.0.post1.tar.gz

Download URL intermodule-1.0.0.post1.tar.gz
Size 2.4 kB
Tags Source
SHA-256 checksum
How to use checksums
37d27fad6b059677cc00e452009f453d8f02dda466e146566e858d4749ee5ffe
BLAKE2b-256 checksum
How to use checksums
6a4b2cdbfcff3e0760adc2dfc64ebde8329fa8dc2bf4821178e5cd58a961c274
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.0

Release files / intermodule-1.0.0.post1-py2.py3-none-any.whl

Download URL intermodule-1.0.0.post1-py2.py3-none-any.whl
Size 3.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b1beadeb2f5d57f522683020f1badc9e4d85ed1f5e7973fda6096bbce3efda4f
BLAKE2b-256 checksum
How to use checksums
4ad7e22a53857cdab4621420545d03185a59ff1dc01aabeecd88d030a844e924
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.0.post1 This release

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