An advanced library for safe importing and scoped imports management.
Project description
SafeLib - Import Everything Safe
Safelib is an importer that supports fallback mechanism.
0.6.0 Changelog
- Fixed several issues
- Added safelib.valid instead importer.valid
- Added search_builtins feature
- Extended exception handling
Example Usage
Using Context Manager (sync/async)
import safelib
from safelib import Import
with Import('sqlalchemy', 'peewee', raises=False, search_builtins=True) as orm:
from safelib import declarative_base # use traditional import
Base = orm.declarative_base # use orm to access the declarative_base
# declarative_base can be found entity or safelib.NotFound
# because we set raises=False, it will not raise an exception if the entity is not found
# when we search for `int` with orm.int, it will search first in the builtins module
# and return the int type if found, or safelib.NotFound if not found.
# to validate whether an entity is valid, use:
if safelib.valid(orm.entity):
do_something_with(orm.entity)
Using Classical Imports
from safelib import _main, typing, _fallback, typing_extensions
from safelib import Protocol, _no_raise
#> Protocol is safelib.NotFound, typing.Protocol or typing_extensions.Protocol
from safelib import _no_raise # catch errors by defaulting missing entities
No-Raise Statement
Import _no_raise sentinel to catch exceptions in current state.
from safelib import _main, typing
from safelib import _no_raise, Protocool
# Protocool is safelib.NotFound, otherwise raises exception
import safelib
with safelib.Import(raises=False) as foo:
# use context manager of Import with raises=False
# or call safelib.catch() before context manager
pass
Reset Statement
Import _reset sentinel to reset current state of safelib.
from safelib import _main, httpx
# after get method returned, state will be restored to initial state
from safelib import get, _reset
from safelib import Import
async with Import('sqlalchemy', 'peewee') as importer:
SafeEntity = importer.SafeEntity
importer.reset_state()
For inquiries, feature request and bug reports, please contact me at contact@tomris.dev
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file safelib-0.6.1.tar.gz.
File metadata
- Download URL: safelib-0.6.1.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08bd3b8781a85cf91c5d7f486840398cec2836f7773f1f52d1fb80401bd5cc7a
|
|
| MD5 |
86ab47984c67d51c889a8081a0cc317c
|
|
| BLAKE2b-256 |
59d7433f939d4691b2a2501daa65339dede927e1caa1fc84c2d64ffdc11dbd76
|
File details
Details for the file safelib-0.6.1-py3-none-any.whl.
File metadata
- Download URL: safelib-0.6.1-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c6c3f1e3af5fa919ff90c73ae10746753a3851db534db4fffabe9ee2031feaa
|
|
| MD5 |
87deebfd3996b1c5d790761ba2ae56d5
|
|
| BLAKE2b-256 |
36cef5aab2332d927f8b300517ae186d31199f569768fb153f909e73042918df
|