Utils for data python project
Project description
pytils
Utils for data python projects. Simple, straightforward, but time saving.
- pickledays - decorator of class. Save the object state to the filesystem after it's initialization for some defined time. Load object after another call.
- singleton - decorator of class. Share object to all calls. There will be only one instance.
- logger - log the info messages to file, stream and discord.
- log - decorator of function. Log the function call into the logger.
- configurator - additional method for Dynaconf, which create variable in settings file.
- pandas_table - additional method for pandas, which save the DataFrame to specific sheet. Differs from standard df.to_excel by saving other sheets.
Installation
From the PiPy:
pip install pytils-functions
Directly from github:
pip install git+https://github.com/Whisperes/pytils.git
How to log
Straight logs
Log to the handlers:
- discord webhook,
- streamhandler
- timerotation file.
For each handler you can set your own log level in the settings.toml file in your project (see Dynaconf package)
from pytils.logger import logger
logger.debug("this is a debugging message")
logger.success("this is a success message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.notice("this is a notice message")
logger.error("this is an error message")
logger.critical("this is a critical message")
logger.log(89, "this is a number message")
How to decorate functions for logs
from pytils.logger import log
@log()
def my_function(a=[1,3], b=2, c=3):
//do something
answer = my_function([11, 'beta'], 2, c=3)
It will be loged like this:
2022-09-02 18:13:25 my-pc |[3812] DEBUG Processing my_function: ([11, 'beta'], 2), {'c': 3}
2022-09-02 18:13:25 my-pc |[3812] SUCCESS my_function: ([11, 'beta'], 2), {'c': 3}
Add log level
Additional levels added to logging module:
-
SUCCESS (15)
-
NOTICE (25)
from pytils.logger import addLoggingLevel
addLoggingLevel('MY_LOG_LEVEL', 45)
Cashe
Cashe object to the disk
from pytils.pickler import pickledays
@pickledays(period=2)
class A:
def __init__(self, var):
self.var = var
a = A(2)
Object A will be saved for 2 days. New call A(2) will take the state of object from pickle file. Req: object have to be immutable.
No duplicates
from pytils.singleton import Singleton_args
@Singleton_args
class A:
def __init__(self, var):
self.var = var
a = A(2)
Just singleton this. Your object with sspecific set of args will be be the only one through the whole code.
Retry errors
@retry(retries=5, delay=1)
def example_function():
import random
if random.random() < 0.8:
raise ValueError("Random error")
else:
return('True')
example_function()
Decorate function with failing possibility. Delay in seconds.
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
File details
Details for the file pytils-functions-0.1.7.tar.gz
.
File metadata
- Download URL: pytils-functions-0.1.7.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bb022b8951a9d757325804216365ea0dd3b73474316fabe549a66e384f5c83e |
|
MD5 | c91b31efa19bd26e722f814382ac5586 |
|
BLAKE2b-256 | fc120280adcdc93c40de18c66cc94c55c1517cb1b19986bcf2f04322ad1f7299 |
File details
Details for the file pytils_functions-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: pytils_functions-0.1.7-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4555c12249bc28e84a30df35e7dd41ba4b63b385e6c2e68dbf5ed8e6153a070 |
|
MD5 | f7ad625c694e8573032e1099a754c93f |
|
BLAKE2b-256 | 130e1c5e3478eee572c88653809c61156cf84580a7460a57a079b414c9b6d2c5 |