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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
safelib-0.6.1.tar.gz
(4.7 kB
view details)
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
|