Automatically manage __all__ variable in Python packages.
Project description
Automatically manage the __all__ variable in Python modules.
Overview
auto_all can be used for controlling what is made available for import from a Python module.
Advantages:
Easily populate the __all__ variable in modules.
Easily exclude imported objects
Clearly differentiate between internal and external facing objects.
Use simple, intuitive code.
Never worry about forgetting to add new objects to __all__.
Help Python IDE’s differentiate between internal and external facing objects.
Installation
pip install auto-all
Usage
First, import the auto_all functions into your module.
from auto_all import start_all, end_all
If your module has external dependencies then these can be imported and the imported objects can be hidden. In this example we will import pathlib.Path and show that it doesn’t appear on the __all__ list. We’re not actually going to use this import, it’s just for illustration.
from pathlib import Path
Now we can define some internal functions that we want to keep private. We can also do this using underscore prefixes, but auto_all gives us a little more granular control.
def a_private_function():
print("This is a private function.")
Now we are ready to start defining public functions, so we use start_all(). We need to pass it the globals dict so that it can see what’s already defined.
start_all(globals())
Now we can define our public functions.
def a_public_function():
print("This is a public function.")
Finally we use end_all() to finish defining public functions and create the __all__ variable.
end_all(globals())
When we look at the __all__ variable we can see only the public facing objects are listed.
>>> print(__all__)
['a_public_function']
Putting this all together, your module should look something like this:
from auto_all import start_all, end_all
from pathlib import Path
def a_private_function():
print("This is a private function.")
start_all(globals())
def a_public_function():
print("This is a public function.")
end_all(globals())
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
Built Distribution
File details
Details for the file auto-all-1.2.0.tar.gz
.
File metadata
- Download URL: auto-all-1.2.0.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8f653e9399b964fcf1a13e6c770127b01db5163042920e742c92f8045ef45ea |
|
MD5 | 2f775bb7f2787bee82bf400edde916ae |
|
BLAKE2b-256 | 4f79d06b243aba06c200b42b2f050a1c63d2c88e31ee8cdabb2ba4c1da0cd064 |
File details
Details for the file auto_all-1.2.0-py2.py3-none-any.whl
.
File metadata
- Download URL: auto_all-1.2.0-py2.py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04ff5f5451c3203aada6b94a771974db9ad417ac7537c565eed7286ddbd26ec4 |
|
MD5 | 8a02d2750e5a7fe0d9ee7af798f4dbc2 |
|
BLAKE2b-256 | b5e96fa4f713c10d4879e8e5cc324b3459bd85210b158847b4c4f1e50c09a7d8 |