常用工具封装
Project description
简介
包含了一些常用方法的封装,安装方法
pip install lljz_tools
内含
- 控制台表格
- 常用装饰器
- 彩色日志
- 内置print猴子补丁
- 属性字典
更多功能正在开发中...
控制台表格
目前已有的控制台表格大部分都不支持中文,本表格能完美支持中文(PS:请使用等宽字符,否则效果不完美)
from my_tools.console_table import ConsoleTable
# 数据必须满足list[dict]格式
table = ConsoleTable([{"name": "Tom", "age": 13}])
table.show()
# print(table) # 直接打印
输出结果
2024-02-03 14:37:05.303 - ConsoleTable - "D:\Users\workspace\python_project\my_tools\my_tools\console_table.py:84" - INFO - show :
name | b
=======================
Tom | 2
Lucy | 4
常用装饰器
import logging
from my_tools.decorators import catch_exception, time_cache, debug, timer
# catch_exception用于自动捕获异常,并支持传入指定logger来记录日志, 支持自动重试
@catch_exception
def f():
raise ValueError
logger = logging.getLogger()
@catch_exception(logger) # 如果不指定logger,将会自动采用默认logger记录异常堆栈
def f1():
raise ValueError
@catch_exception(retry=3, interval=0.5) # 如果失败,重试3次,每次重试间隔0.5s
def f1():
raise ValueError
@time_cache(3) # 缓存结果,最多缓存3秒
def f1(n):
for _ in range(n):
pass
@debug # 在控制台中将函数运行日志、运行结果、运行耗时等数据自动用logger输出
def f1():
pass
@timer # 自动统计函数运行耗时
def f1():
pass
彩色日志
from my_tools.log_manager import LogManager
# 自动打印彩色日志,自动添加文件handler,日志文件自动按天分割
logger = LogManager("your logger name").get_logger()
logger.info("info")
logger.debug("debug")
logger.error("info")
print猴子补丁
添加猴子补丁之后,print自动变更为日志格式,且会显示print代码所在的行数
from my_tools.track_print import patch_print
patch_print() # 给print添加猴子补丁
属性字典
属性字典支持用.
的格式访问数据
from my_tools.attribute_dict import AttributeDict, IgnoreCaseAttributeDict
# IgnoreCaseAttributeDict支持忽略大小写来访问数据
class Book(AttributeDict):
name: str
author: str
price: float = 0.1
book = Book(name='python', author='guido', price=0.1)
assert isinstance(book, dict)
print(book.name)
# AttributeDict 支持3个额外参数
# total: 默认为False,是否全部字段必填,为True时上面定义的三个参数在初始化时都必须指定
# variable: 默认为True,是否允许增加字段,为False时无法给字典增加额外的属性字段
# check_type:默认为False,是否检查类型,为True则初始化时检查参数是否满足类型要求
class User(AttributeDict, total=True, variable=False, check_type=True):
name: str
age: int
books: list[Book]
__show__ = ('name', 'book') # __show__参数决定在print时展示的字段,默认为全部字段
User(name='Tom', age=1, books=[]) # OK
User(name='Tom', age='a', books=[]) # TypeError, 'a' is not int
User(name='Tom', books=[]) # TypeError, missing age
user = User(name='Tom', age=1, books=[dict(name='python', author='guido', price=0.1)]) # OK
print(user) # User(name='Tom', books=[Book(name='python', author='guido', price=0.1)])
print(user.name) # Tom
user.sex = 'male' # TypeError, can not add item
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lljz_tools-0.2.11.tar.gz
(15.8 kB
view hashes)
Built Distribution
Close
Hashes for lljz_tools-0.2.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 302c8df6e190c9948ac5aea82e8265bea4df9973b53acc8a3d68be5c0c50391c |
|
MD5 | 105c278dc89cd136caa3d4575d27be5a |
|
BLAKE2b-256 | 8b9598ffbeb24780c1cb48faa1bd23c128154e89ce7ba2c74edde14294ab08bf |