A simple package for rapidly developing system sejings.
Project description
Sejings
Sejings is meant to be a quick and simple tool to rapidly integrate project sejings. This was inspired by a desire to work with a solution similar to MatPlotLib's rcParams and to improve on the developer experience and developing speed by avoiding None checks.
This is the development experience I'm trying to avoid:
def add(*nums, cache=None, cache_path=None):
if cache is None:
cache = sejings['cache']
if cache_path is None:
cache_path = sejings['cache.path']
result = sum(nums)
if cache: # True
save_to_cache(result, cache_path) #'/some/dir/path'
return result
Obviously dictionaries would be computationally the fastest way to accomplish sejings. This project is meant to be friendly to developers consuming packages and to encourage rapid development over absolute runtime speed. We're using Python after all, right?
Usage
Import sejings and create the sejings you need:
from sejings import sejings
sejings.cache = True
sejings.cache.path = '/some/dir/path'
To evaluate sejings passed into a function as an argument use the @extract_sejings decorator. This will evaluate all sejings in the function definition and in the arguments being passed into the function:
from sejings import extract_sejings
@extract_sejings
def add(*nums, cache=sejings.cache, cache_path=sejings.cache.path):
result = sum(nums)
if cache: # True
save_to_cache(result, cache_path) #'/some/dir/path'
return result
A branch is also evaluated when an endpoint is called.
assert sejings.cache()
assert sejings.cache.path() == '/some/dir/path'
def add(*nums, cache=sejings.cache, cache_path=sejings.cache.path):
result = sum(nums)
if cache(): # True
save_to_cache(result, cache_path()) #'/some/dir/path'
return result
In some cases defining arguments as a Sejings object may be desired. This is accomplished by adding the argument name to the @extract_sejings arguments.
@extract_sejings('cache')
def add(*nums, cache=sejings.cache):
result = sum(nums)
if cache(): # True
save_to_cache(result, cache.path()) #'/some/dir/path'
return result
@TODO
- I'm exploring options right now to allow methods to be called directly on self._val but am weighing the pros and cons. The SejingsNumber class published is something I'm exploring and should not be depended on as it may change.
- Context manager
- Copy functionality
- Iteration
- getitem, setitem
- IO to file. Look into integration with configparser.
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
File details
Details for the file sejings-0.0.3.tar.gz
.
File metadata
- Download URL: sejings-0.0.3.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac72d8dcb77ee390b8bb0a7f776bc60b6c983c12fb3f554baaf861bd4e684e28 |
|
MD5 | b1e0971769106f2332648479ba9fdef5 |
|
BLAKE2b-256 | ed206a238100ecc5d3c6143202948b0057c3df3376a5d97cfd8f4f3957d9d3ac |