常用工具封装
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) # 直接打印
输出结果
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.3.5.tar.gz
(42.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lljz_tools-0.3.5.tar.gz.
File metadata
- Download URL: lljz_tools-0.3.5.tar.gz
- Upload date:
- Size: 42.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dc423ae158973a85682caf31ea1d3ad2b2f8e3d5a74df59e249646ed40ad679
|
|
| MD5 |
1f3ca1d9e5f35bd468b056e3f5589bdf
|
|
| BLAKE2b-256 |
0e8565908ace0ff9223b768b5daec09cc93f6d75d66e799f864f2d99ea4e3583
|
File details
Details for the file lljz_tools-0.3.5-py3-none-any.whl.
File metadata
- Download URL: lljz_tools-0.3.5-py3-none-any.whl
- Upload date:
- Size: 53.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
228af3c44d2d9717e9c1d6a9f1219fec8a7d63a14cc2b7dc8553148f9dfab7ed
|
|
| MD5 |
f744cf7429a9d03277ba5e012e35abf1
|
|
| BLAKE2b-256 |
8c204325c792e325b7f61e752461f34558a03c5b9810841bc36e00ecbf10282a
|