Skip to main content

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

Release files for safelib 0.6.1

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

Source distribution (sdist)

Source distribution for safelib 0.6.1
File Size Uploaded
safelib-0.6.1.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for safelib 0.6.1
File Interpreter ABI Platform
safelib-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 9.9 kB

Release files / safelib-0.6.1.tar.gz

Download URL safelib-0.6.1.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
08bd3b8781a85cf91c5d7f486840398cec2836f7773f1f52d1fb80401bd5cc7a
BLAKE2b-256 checksum
How to use checksums
59d7433f939d4691b2a2501daa65339dede927e1caa1fc84c2d64ffdc11dbd76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.7

Release files / safelib-0.6.1-py3-none-any.whl

Download URL safelib-0.6.1-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c6c3f1e3af5fa919ff90c73ae10746753a3851db534db4fffabe9ee2031feaa
BLAKE2b-256 checksum
How to use checksums
36cef5aab2332d927f8b300517ae186d31199f569768fb153f909e73042918df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.7

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.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