diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-17 05:01:24 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-17 05:01:24 +0000 |
commit | bb675aefefb4ad5cf71ca7b8adf535e91af1e10f (patch) | |
tree | 2f4a9791a9a8e01c951648208bee234bcfe68b1f | |
parent | 51822a845408b6e539f64ee16c1644ebdab59efe (diff) |
automatic import of python-hutils
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-hutils.spec | 522 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 524 insertions, 0 deletions
@@ -0,0 +1 @@ +/hutils-1.0.18.tar.gz diff --git a/python-hutils.spec b/python-hutils.spec new file mode 100644 index 0000000..36e8fe2 --- /dev/null +++ b/python-hutils.spec @@ -0,0 +1,522 @@ +%global _empty_manifest_terminate_build 0 +Name: python-hutils +Version: 1.0.18 +Release: 1 +Summary: a charming python web util-library +License: MIT License +URL: https://github.com/zaihui/hutils/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5c/97/cdd3eda6527089690d4d640840411c81624584162166f4fd4a2c96e5e2d4/hutils-1.0.18.tar.gz +BuildArch: noarch + + +%description +# HUtils, a charming python web util-library. + +[](https://github.com/zaihui/hutils) +[](https://pypi.python.org/pypi/hutils) +[](https://pypi.python.org/pypi/hutils) + +本项目为我司 [@zaihui](https://github.com/zaihui) 在后端开发中, +积攒的比较好用的各类基类函数。 +除了基础的类型变换, +还有 django 相关的一系列功能。 + +让我们简单看一段用上了 hutils 以后的效果: + +```python +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 + +```shell script +pip install hutils +``` + + +## Document + +```python +# 在本节文档用法中, +# 我们会从具体的使用场景来介绍 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 说明一下](https://github.com/zaihui/hutils/issues/new)。 + +本项目的代码需要符合以下标准: + +- **必须:** 单元测试必须要通过 + - 依赖第三方库时(比如 `django`), 不能因为缺少依赖而导致整个 `import hutils` 都挂了。 +- **必须:** 基础语法风格检查必须要通过 +- **推荐:** 每个函数都要有对应的单元测试 + + +## License + +[MIT License](/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! +``` + + + + +%package -n python3-hutils +Summary: a charming python web util-library +Provides: python-hutils +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-hutils +# HUtils, a charming python web util-library. + +[](https://github.com/zaihui/hutils) +[](https://pypi.python.org/pypi/hutils) +[](https://pypi.python.org/pypi/hutils) + +本项目为我司 [@zaihui](https://github.com/zaihui) 在后端开发中, +积攒的比较好用的各类基类函数。 +除了基础的类型变换, +还有 django 相关的一系列功能。 + +让我们简单看一段用上了 hutils 以后的效果: + +```python +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 + +```shell script +pip install hutils +``` + + +## Document + +```python +# 在本节文档用法中, +# 我们会从具体的使用场景来介绍 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 说明一下](https://github.com/zaihui/hutils/issues/new)。 + +本项目的代码需要符合以下标准: + +- **必须:** 单元测试必须要通过 + - 依赖第三方库时(比如 `django`), 不能因为缺少依赖而导致整个 `import hutils` 都挂了。 +- **必须:** 基础语法风格检查必须要通过 +- **推荐:** 每个函数都要有对应的单元测试 + + +## License + +[MIT License](/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! +``` + + + + +%package help +Summary: Development documents and examples for hutils +Provides: python3-hutils-doc +%description help +# HUtils, a charming python web util-library. + +[](https://github.com/zaihui/hutils) +[](https://pypi.python.org/pypi/hutils) +[](https://pypi.python.org/pypi/hutils) + +本项目为我司 [@zaihui](https://github.com/zaihui) 在后端开发中, +积攒的比较好用的各类基类函数。 +除了基础的类型变换, +还有 django 相关的一系列功能。 + +让我们简单看一段用上了 hutils 以后的效果: + +```python +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 + +```shell script +pip install hutils +``` + + +## Document + +```python +# 在本节文档用法中, +# 我们会从具体的使用场景来介绍 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 说明一下](https://github.com/zaihui/hutils/issues/new)。 + +本项目的代码需要符合以下标准: + +- **必须:** 单元测试必须要通过 + - 依赖第三方库时(比如 `django`), 不能因为缺少依赖而导致整个 `import hutils` 都挂了。 +- **必须:** 基础语法风格检查必须要通过 +- **推荐:** 每个函数都要有对应的单元测试 + + +## License + +[MIT License](/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! +``` + + + + +%prep +%autosetup -n hutils-1.0.18 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-hutils -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.18-1 +- Package Spec generated @@ -0,0 +1 @@ +3a8a430145ace9a589fd9e718c5d67e7 hutils-1.0.18.tar.gz |