Common Python utilities: cache, captcha, date, eval, http, string, thread
Project description
mini-common-utils
A collection of common Python utility modules: cache, captcha, date, safe expression evaluation, HTTP requests, string helpers, and threading helpers.
Package Info
| Item | Value |
|---|---|
| PyPI / distribution name | mini-common-utils |
| Import name | mini_common_utils |
| Version | 0.2.0 |
| Python | >=3.8 |
| License | MIT |
| Homepage | https://gitee.com/py-common-utils |
Runtime dependencies: loguru>=0.7.0, requests>=2.28.0, Pillow>=9.0.0.
Install
From PyPI (recommended):
pip install mini-common-utils
From source (editable, for development):
pip install -e .
From a built distribution:
pip install dist/mini_common_utils-0.2.0-py3-none-any.whl
Requires Python 3.8+.
Quick Start
from mini_common_utils.cache.Cache import LocalCache
from mini_common_utils.captcha.captcha_util import generate_captcha_image
from mini_common_utils.date.date_utils import current_date_time_str
from mini_common_utils.string.string_utils import is_empty_common, contains_chinese
# In-memory cache with TTL
LocalCache.set_data("user:1", {"name": "alice"}, expire=60)
# Math captcha image
answer, img_bytes = generate_captcha_image()
# Current time in UTC+8
print(current_date_time_str()) # '2024-05-20 18:30:00'
# String helpers
is_empty_common(" ") # True
contains_chinese("你好") # True
Architecture
graph TD
Root["mini-common-utils (dist)<br/>import: mini_common_utils"]
Root --> Cache["mini_common_utils.cache"]
Root --> Captcha["mini_common_utils.captcha"]
Root --> Date["mini_common_utils.date"]
Root --> Eval["mini_common_utils.eval"]
Root --> Http["mini_common_utils.http"]
Root --> String["mini_common_utils.string"]
Root --> Thread["mini_common_utils.thread"]
Cache --> CacheMod["Cache.py<br/>LocalCache"]
Captcha --> CaptchaMod["captcha_util.py<br/>generate_captcha_image"]
Date --> DateMod["date_utils.py<br/>current_date_time_str, current_date_str"]
Eval --> EvalMod["eval_utils.py<br/>safe_eval_expr"]
Http --> HttpReqMod["http_request_utils.py<br/>http_post_json"]
Http --> HttpParamMod["http_param_utils.py<br/>build_timeout_param"]
String --> StringMod["string_utils.py<br/>is_empty_common, contains_chinese"]
Thread --> ThreadMod["thread_utils.py<br/>run_function_in_thread"]
Directory layout:
mini-common-utils/
├── src/
│ └── mini_common_utils/ # import package
│ ├── __init__.py
│ ├── cache/
│ │ ├── __init__.py
│ │ └── Cache.py # LocalCache
│ ├── captcha/
│ │ ├── __init__.py
│ │ └── captcha_util.py # generate_captcha_image
│ ├── date/
│ │ ├── __init__.py
│ │ └── date_utils.py # current_date_*
│ ├── eval/
│ │ ├── __init__.py
│ │ └── eval_utils.py # safe_eval_expr
│ ├── http/
│ │ ├── __init__.py
│ │ ├── http_request_utils.py # http_post_json
│ │ └── http_param_utils.py # build_timeout_param
│ ├── string/
│ │ ├── __init__.py
│ │ └── string_utils.py # is_empty_common, contains_chinese
│ └── thread/
│ ├── __init__.py
│ └── thread_utils.py # run_function_in_thread
├── test/
├── pyproject.toml # name = "mini-common-utils"
├── README.md
├── CHANGELOG.md
└── LICENSE
Modules
mini_common_utils.cache — Local in-memory cache
from mini_common_utils.cache.Cache import LocalCache
LocalCache.set_data("user:1", {"name": "alice"}, expire=60)
user = LocalCache.get_data("user:1")
mini_common_utils.captcha — Math captcha image
from mini_common_utils.captcha.captcha_util import generate_captcha_image
answer, img_bytes = generate_captcha_image()
# answer is e.g. "12" — frontend shows img_bytes, then verifies user input
mini_common_utils.date — Date/time helpers (UTC+8)
from mini_common_utils.date.date_utils import current_date_time_str, current_date_str
print(current_date_time_str()) # '2024-05-20 18:30:00'
print(current_date_str()) # '2024-05-20'
mini_common_utils.eval — Safe arithmetic evaluator
from mini_common_utils.eval.eval_utils import safe_eval_expr
safe_eval_expr("60*60*7") # 25200
mini_common_utils.http — HTTP helpers
from mini_common_utils.http.http_request_utils import http_post_json
from mini_common_utils.http.http_param_utils import build_timeout_param
connect_t, read_t = build_timeout_param(data_count=500)
resp = http_post_json("https://api.example.com/echo", {"a": 1}, timeout_param=(connect_t, read_t))
mini_common_utils.string — String helpers
from mini_common_utils.string.string_utils import is_empty_common, contains_chinese
is_empty_common(" ") # True
is_empty_common([]) # True
is_empty_common("hello") # False
contains_chinese("你好") # True
mini_common_utils.thread — Threading helpers
from mini_common_utils.thread.thread_utils import run_function_in_thread
t = run_function_in_thread(my_func, (arg1, arg2))
t.join()
Build a distribution
pip install -e ".[dev]"
python -m build
# 产物在 dist/
twine check dist/*
twine upload dist/*
License
MIT
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
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 mini_common_utils-0.2.0.tar.gz.
File metadata
- Download URL: mini_common_utils-0.2.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96e1af2778d59b6ab8298bf5fd3bb49340048b749140ee649e5171cb8739ae69
|
|
| MD5 |
1a7f287fe0c6ba82f8309160964815cf
|
|
| BLAKE2b-256 |
a3e87ddebe11a4f334ba1a159d7d6e11ff2ab3f6aa9aa2f5293234d0cd630458
|
File details
Details for the file mini_common_utils-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mini_common_utils-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ec8308d1ae248535604be3c1aaf2d5855074d76c67756777972eccc3add0287
|
|
| MD5 |
41660a5abb8384b51aadc34466e155a6
|
|
| BLAKE2b-256 |
6cc8edd3575e15a5ddc334f78267a3373057ef79a1eb26d0bef10d2b9783893a
|