Skip to main content

HUtils, a charming python web util-library.

Build Package Versions

本项目为我司 @zaihui 在后端开发中, 积攒的比较好用的各类基类函数。 除了基础的类型变换, 还有 django 相关的一系列功能。

让我们简单看一段用上了 hutils 以后的效果:

import hutils

# 使用前
def create_user(data):
    try:
        uid, age, phone, created_at = data["uid"], data["age"], data["phone"], data["created_at"]
        # 此处做一系列类型验证,或者用个 marshmallow 之类的库来验证 :)
        return User(uid=uid, age=age, phone=phone, created_at=created_at)
    except Exception as ex:
        logger.exception(ex)

# 使用后
@hutils.mutes(log=True)
def create_user(data):
    uid, age, phone, created_at = hutils.get_data(data, "uid", "age", "phone", "created_at")
    created_at = created_at or hutils.yesterday()
    if not all([hutils.is_uuid(uid), hutils.is_int(age), hutils.is_phone(phone)]):
        return None
    return User(uid=uid, age=age, phone=phone, created_at=created_at)

详细的文档可以参见下方。 总而言之,hutils 库的目标就是:

Let coding in python be a pleasure!

Installation

pip install hutils

Document

# 在本节文档用法中,
# 我们会从具体的使用场景来介绍 hutils 里的基类函数库。
# 详尽的参数可以读源码,
# 我们尽最大努力保持着源码的可读性。

# 使用了尽可能短的包名,
# 就是为了直接 `import hutils` 的,
# 切记不要 `from hutils import *`
import hutils

# 有时你想把一些 bytes/str 的变量统一转成 str
x = b'bytes' or 'string'
print(hutils.bytes_to_str(x))

# 在计算金额时,你需要做两位小数的算数
# 而在返给前段时,又要去掉最末的 0
interest = hutils.quantize(98.0 * 0.05)
print(f'利息为¥{hutils.normalize(interest)}元')

# 你可能需要给前端返回两个字典的合集,
# 并转换成 json
print(hutils.format_json(hutils.merge_dicts(
    {'a': 1, 'b': 2},
    {'a': 1, 'c': []},
)))

# 有时从前端的数据中,你要取值
request_data = {'key1': 'value', 'key2': 'value2', 'key3': 'value3'}
print(hutils.get_data(request, 'key1', 'key2', 'key3'))

# 前端会传性别进来,
# 对应后端要有常量的验证
class Genders(hutils.TupleEnum):
    MALE = 0, '男性'
    FEMALE = 1, '女性'
    UNKNOWN = 2, '未知'
print(Genders.chinese_choices())
with hutils.catches(raises=HTTP400Error):
    gender = Genders(request_data['gender'])

# 以及各种无副作用的短函数
start, end = hutils.yesterday(), hutils.tomorrow()
start_morning, end_evening = hutils.datetime_combine(start, end)
print(f'有效期起始日为昨日凌晨({hutils.datetime_to_str(start_morning)})')

关于更多的文档, 请直接在源码里查看吧 :)

Contribution

假如你想增加新的基类函数, 请先提交一个 issue 说明一下。

本项目的代码需要符合以下标准:

  • 必须: 单元测试必须要通过
    • 依赖第三方库时(比如 django), 不能因为缺少依赖而导致整个 import hutils 都挂了。
  • 必须: 基础语法风格检查必须要通过
  • 推荐: 每个函数都要有对应的单元测试

License

MIT License

Others

欢迎各位大佬提 PR/Issue 把你们觉得 好用的/写得不够完善的/缺少单元测试 的功能也提交进来~

最后献上一首 The Zen of Python:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Metadata

Release files for hutils 1.0.21

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hutils 1.0.21
File Size Uploaded
hutils-1.0.21.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hutils 1.0.21
File Interpreter ABI Platform
hutils-1.0.21-py3-none-any.whl Python 3 none any Details

Total release size: 43.5 kB

Release files / hutils-1.0.21.tar.gz

Download URL hutils-1.0.21.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
329704adbc8fe2544837ebd6697df485e6742f3c154cb9805257ddcf25db75a6
BLAKE2b-256 checksum
How to use checksums
3aec183769cfba13eec199861570af606217dad8689d258933d73ba26225bf42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / hutils-1.0.21-py3-none-any.whl

Download URL hutils-1.0.21-py3-none-any.whl
Size 22.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a8af65a99f5cf5593b79760133b62ebfb7a69bda1d6fddc2792023a44d07b6f
BLAKE2b-256 checksum
How to use checksums
8cbe05854d3e8bd32c3c32669f7541edfe5c24d7497099d0f62c42a3a4fdeb8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release history Release notifications | RSS feed

This release

1.0.21 This release

2 release files

1.0.20

2 release files

1.0.19

2 release files

1.0.18

2 release files

1.0.17

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page