From 758ddd7ad9b6b4ad40e4f12449ec2590662931f6 Mon Sep 17 00:00:00 2001 From: yijun_mbp15 Date: Sat, 28 Mar 2020 11:33:47 +0800 Subject: [PATCH] =?UTF-8?q?2020.3.28=20v1.2=20=E4=BB=A3=E7=A0=81=E3=80=81?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E3=80=81=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E3=80=81demo=20=E5=9F=BA=E6=9C=AC=E4=BF=AE=E6=94=B9=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/demo_common.py | 61 ------------------------------ demo/demo_system.py | 32 ++++++++++++++++ docs/change_log.rst | 10 +++++ docs/fish_object.rst | 6 +++ docs/index.rst | 89 +++++++++++++++++++++++++++++--------------- 5 files changed, 106 insertions(+), 92 deletions(-) create mode 100644 docs/fish_object.rst diff --git a/demo/demo_common.py b/demo/demo_common.py index 8b9dade..c6b614b 100644 --- a/demo/demo_common.py +++ b/demo/demo_common.py @@ -6,34 +6,6 @@ from fishbase.fish_file import get_abs_filename_with_sub_path -# 2018.2.12 common 中 config 文件处理相关,#11013 -def demo_common_config(): - print('--- conf_as_dict demo---') - # 定义配置文件名 - conf_filename = 'test_conf.ini' - # 读取配置文件 - ds = conf_as_dict(conf_filename) - - # 显示是否成功,所有 dict 的内容,dict 的 key 数量 - print('flag:', ds[0]) - print('dict:', ds[1]) - print('length:', ds[2]) - - d = ds[1] - - # 显示一个 section 下的所有内容 - print('section show_opt:', d['show_opt']) - # 显示一个 section 下面的 key 的 value 内容 - print('section show_opt, key short_opt:', d['show_opt']['short_opt']) - - # 读取一个复杂的section,先读出 key 中的 count 内容,再遍历每个 key 的 value - i = int(d['get_extra_rules']['erule_count']) - print('section get_extra_rules, key erule_count:', i) - for j in range(i): - print('section get_extra_rules, key erule_type:', d['get_extra_rules']['erule_'+str(j)]) - print('---') - - # 2018.5.10 def demo_common_md5(): print('--- md5 demo ---') @@ -52,22 +24,6 @@ def demo_json_contain(): print('---') -# 2018.5.19 -def demo_singleton(): - print('--- class singleton demo ---') - t1 = SingleTon() - t1.x = 2 - print('t1.x:', t1.x) - - t2 = SingleTon() - - t1.x += 1 - - print('t1.x:', t1.x) - print('t2.x:', t2.x) - print('---') - - # 2018.5.26 def demo_uuid(): print('--- uuid demo ---') @@ -107,19 +63,6 @@ def demo_dict(): if __name__ == '__main__': - # 定义需要序列化的对象 - class Foo(object): - a = 1 - b = [1, 2, 3] - c = {'a': 1, 'b': 2} - - def test(self): - print('hello') - - # 序列化对象 - result = serialize_instance(Foo) - print(result) - # 定义需要判断的列表 # 合法列表 test_legitimate_list = ['Hello World', 1] @@ -132,8 +75,6 @@ def test(self): result = if_any_elements_is_space(test_illegal_list) print(result) - demo_common_config() - demo_common_md5() demo_json_contain() @@ -141,8 +82,6 @@ def test(self): dic1 = {'key1': 'value1', 'key2': 'value2'} print(splice_url_params(dic1)) - demo_singleton() - demo_uuid() demo_dict() diff --git a/demo/demo_system.py b/demo/demo_system.py index 46732fe..e633a71 100644 --- a/demo/demo_system.py +++ b/demo/demo_system.py @@ -4,5 +4,37 @@ from fishbase.fish_system import * + +# 2018.2.12 common 中 config 文件处理相关,#11013 +def demo_common_config(): + print('--- conf_as_dict demo---') + # 定义配置文件名 + conf_filename = 'test_conf.ini' + # 读取配置文件 + ds = conf_as_dict(conf_filename) + + # 显示是否成功,所有 dict 的内容,dict 的 key 数量 + print('flag:', ds[0]) + print('dict:', ds[1]) + print('length:', ds[2]) + + d = ds[1] + + # 显示一个 section 下的所有内容 + print('section show_opt:', d['show_opt']) + # 显示一个 section 下面的 key 的 value 内容 + print('section show_opt, key short_opt:', d['show_opt']['short_opt']) + + # 读取一个复杂的section,先读出 key 中的 count 内容,再遍历每个 key 的 value + i = int(d['get_extra_rules']['erule_count']) + print('section get_extra_rules, key erule_count:', i) + for j in range(i): + print('section get_extra_rules, key erule_type:', d['get_extra_rules']['erule_'+str(j)]) + print('---') + + if __name__ == '__main__': print('current os:', get_platform()) + demo_common_config() + + diff --git a/docs/change_log.rst b/docs/change_log.rst index 4f71bc0..d5e5bd6 100644 --- a/docs/change_log.rst +++ b/docs/change_log.rst @@ -1,5 +1,15 @@ 更新记录 =========================== + +2020.3.28 v1.2 +--------------------------- +* #255 #266, 开始使用 github 的 Actions 进行 CI 集成; +* `#257 `_, conf_as_dict() 函数移动从 common 包移动到 system 包; +* `#259 `_, 增加 `fish_object `_ 函数包,面向对象增强函数; +* `#260 `_, common 包,删除 sorted_objs_by_attr() 函数和 get_group_list_data() 函数; +* `#261 `_, common 包,paging 函数名称修改为 :meth:`get_page_data()`; + + 2019.12.5 v1.1.16 --------------------------- * `#249 `_, add swagger module; diff --git a/docs/fish_object.rst b/docs/fish_object.rst new file mode 100644 index 0000000..5f1a7c8 --- /dev/null +++ b/docs/fish_object.rst @@ -0,0 +1,6 @@ +``fish_object`` 面向对象函数包 +==================================== + +.. automodule:: fish_object + :members: + :exclude-members: SafeFileHandler \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index b74ccb2..ab17221 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -18,15 +18,19 @@ fishbase 简介 ================= -fishbase 是由我们自主开发和整理的一套 Python 基础函数库。 +fishbase 是由我们自主开发和整理的一套 Python 基础函数库,将我们平时在开发 Python 项目时候的各类工具函数汇聚到一起,方便集中管理和使用。 + +fishbase 当前版本为 v1.2,支持 Python 3.5-3.8,绝大部分函数也能工作在 Python 2.7 下,但是我们不推荐使用 Python 2.7 。 自 2016/3 初次发布以来,我们坚持不断更新,先后发布了 20 余个版本。近一年来,我们逐步形成每月更新 1 到 2 个版本的频率,抽象出了很多通用的方法,主要分为以下模块: +----------------------------------------------------------------------------------+----------------------------------------+ -| 模块 | 功能函数 | +| 模块 | 功能函数 | +==================================================================================+========================================+ -| `fish_common `_ | 基本函数包 | +| `fish_common `_ | 基本功能函数包 | ++----------------------------------------------------------------------------------+----------------------------------------+ +| `fish_object `_ | 面向对象函数包 | +----------------------------------------------------------------------------------+----------------------------------------+ | `fish_crypt `_ | 加密数据函数包 | +----------------------------------------------------------------------------------+----------------------------------------+ @@ -46,7 +50,7 @@ fishbase 是由我们自主开发和整理的一套 Python 基础函数库。 +----------------------------------------------------------------------------------+----------------------------------------+ | `fish_system `_ | 系统增强函数包 | +----------------------------------------------------------------------------------+----------------------------------------+ -| `swagger `_ | 集成 swagger为flask应用生成接口文档信息| +| `swagger `_ | 集成swagger为flask应用生成接口文档信息 | +----------------------------------------------------------------------------------+----------------------------------------+ @@ -63,33 +67,6 @@ fishbase 能干什么? =================== -集成 swagger 为 flask 应用生成接口文档信息 ------------------------------------------------ - -.. code:: python - - >>> from fishbase.swagger import doc - >>> from fishbase.swagger.swagger import flask_swagger - >>> from flask import Flask - - >>> # 创建 Flask app - >>> app = Flask("Demo Server") - - >>> @app.route('/v1/query', methods=['GET']) - >>> @doc.summary("xx业务查询接口", group="xx业务") - >>> @doc.description("测试 Swagger 使用, 参数为 URL 参数 token, 且必传") - >>> @doc.consumes("token", required=True) - >>> def test_query(): - >>> pass - - >>> # 将 app 对象传递给 swagger 模块 - >>> flask_swagger(app) - - >>> if __name__ == "__main__": - >>> app.run("127.0.0.1", "8899", debug=False) - -访问: http://127.0.0.1:8899/swagger/ 即可查看接口信息,并在线调试。更多 swagger 使用技巧,可参考 https://fishbase.readthedocs.io/en/latest/swagger.html - 获取文件的绝对路径 ------------------------------ @@ -145,6 +122,34 @@ fishbase 能干什么? ['requirements.txt', 'README.md', 'setup.py'] +集成 swagger 为 flask 应用生成接口文档信息 +----------------------------------------------- + +.. code:: python + + >>> from fishbase.swagger import doc + >>> from fishbase.swagger.swagger import flask_swagger + >>> from flask import Flask + + >>> # 创建 Flask app + >>> app = Flask("Demo Server") + + >>> @app.route('/v1/query', methods=['GET']) + >>> @doc.summary("xx业务查询接口", group="xx业务") + >>> @doc.description("测试 Swagger 使用, 参数为 URL 参数 token, 且必传") + >>> @doc.consumes("token", required=True) + >>> def test_query(): + >>> pass + + >>> # 将 app 对象传递给 swagger 模块 + >>> flask_swagger(app) + + >>> if __name__ == "__main__": + >>> app.run("127.0.0.1", "8899", debug=False) + +访问: http://127.0.0.1:8899/swagger/ 即可查看接口信息,并在线调试。更多 swagger 使用技巧,可参考 https://fishbase.readthedocs.io/en/latest/swagger.html + + .. toctree:: :maxdepth: 1 @@ -160,6 +165,7 @@ API 函数列表 :maxdepth: 2 fish_common + fish_object fish_crypt fish_csv fish_data @@ -176,3 +182,24 @@ API 函数列表 ==== 如有好的建议,欢迎提 issue :https://github.com/chinapnr/fishbase/issues + +感谢 +==== + +非常感谢所有在 fishbase 函数包发展过程中做出共享的朋友们: + +Leo + +Zhang Muqing + +Hu Jun + +Jia Chunyin + +Yan Runsha + +Miao Tianshi + +Jin Xiongwei + +Yi Jun \ No newline at end of file