Skip to main content

Various dev tools.

Project description

devpytools

Tools for development.

Installation

$ pip install devpytools

Usage

Cacher

Get and use default inmemory cacher

from devpytools import getCacher
c = getCacher()
@c.cache()
def a(b):
    ...

Create the cacher that saves a pickled data on disk and can be used between runs

from devpytools import Cacher
c = Cacher(name='dev', tmpDirPath='./tmp')

Get previously configured cacher in other file and use

from devpytools import getCacher
c = getCacher("dev")
@c.cache
def a(b):
    ...

Example

from devpytools import Cacher
from devpytools.cacher import extensions
IS_DEV = os.getenv("IS_DEV", "") == "true"

devCacher = Cacher(
    name="dev",
    tmpDirPath="./tmp",
    isEnable=IS_DEV,  # work only if run in dev environment
    isExpired=extensions.expireAfterHours(1),  # recache if cached data older than 1 hour
    isSavable=lambda result: bool(result),  # only cache positive function call results
)

@devCacher.cache
def a(b):
    ...

# works with the same params as devCacher but saves caches to ./tmp1 folder
@devCacher.cache(tmpDirPath="./tmp1")
def a1(b):
    ...

# currently disable cache for that func
@devCacher.cache(isEnable=False)
def a2(b):
    ...

# cache only those calls that return more than 0 elements
@devCacher.cache(isSavable=lambda result: result['count'] > 0)
def a3(b):
    ...

# use only a and b arguments to determine unique key of the function call
@devCacher.cache(uniqueKey=lambda args: args['a'] + args['b'])
def a4(a: str, b: str, c: str):
    ...
c = getCacher()
# to determine the uniqueness of a function call use only a and b arguments
@c.cache(uniqueKey=("a", "b"))
def a(a, b, c):
    ...

Other

  • replaceFunc
from devpytools import replaceFunc
IS_DEV = os.getenv("IS_DEV", "") == "true"

def devFunc():
    # predefined results for development
    ...
# replace only if IS_DEV is True
@replaceFunc(devFunc, isEnabled=IS_DEV)
def prodFunc():
    # time consuming function
    ...

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

devpytools-0.1.0.dev8.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

devpytools-0.1.0.dev8-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file devpytools-0.1.0.dev8.tar.gz.

File metadata

  • Download URL: devpytools-0.1.0.dev8.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for devpytools-0.1.0.dev8.tar.gz
Algorithm Hash digest
SHA256 4f5f61d80b8c7b94d0cce8a0f1cdb2ba85a1c45a529ff1bfe64521ec37e9e56f
MD5 4be1d67543cfb1aeee05f2032fad6372
BLAKE2b-256 20eb87992a7c7c559d4e4315341cce5311509868a709ed91aa868ff4c8ab9a24

See more details on using hashes here.

File details

Details for the file devpytools-0.1.0.dev8-py3-none-any.whl.

File metadata

File hashes

Hashes for devpytools-0.1.0.dev8-py3-none-any.whl
Algorithm Hash digest
SHA256 c31afd67722def7434c22d403f9731c2a16e22a7661a5d4581dbf4016d431592
MD5 985b7e81781b6a853b09ab99545433e5
BLAKE2b-256 8324b3a598719adbc21e04696c59805bb1572ba8d2785549cc09f4ad0902beaa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page