mwgencode


Namemwgencode JSON
Version 1.3.10 PyPI version JSON
download
home_pagehttps://bitbucket.org/maxwin-inc/gencode/src/
Summary根据starUML文档产生flask专案的代码
upload_time2024-02-26 09:15:47
maintainer
docs_urlNone
authorcxhjet
requires_python
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            `rst file editor <http://rst.ninjs.org>`_



mwgencode



maxwin 团队产生工程代码的工具,uml 建模工具为starUML,工程代码包括: swagger,controller,

modules,tests code,seeds code,dockerfile,babel.cfg,uwsgi file等





maxwin 开发框架使用的 lib



1. 工具 `mwutils <https://bitbucket.org/maxwin-inc/mwutils/src>`_

2. 认证检查 `mwauth <https://bitbucket.org/maxwin-inc/auth/src>`_

3. 确定权限 `mwpermission <https://bitbucket.org/maxwin-inc/mwpermission/src>`_

4. 通用服务SDK `mwsdk <https://bitbucket.org/maxwin-inc/mwsdk/src>`_

5. aiohttp多语言 `mw-aiohttp-babel <https://bitbucket.org/maxwin-inc/mw-aiohttp-babel/src>`_

6. aiohttp认证检查和确权 `mw-aiohttp-security <https://bitbucket.org/maxwin-inc/mw-aiohttp-security/src>`_

7. aiohttpsession `mw-aiohttp-session <https://bitbucket.org/maxwin-inc/mw-aiohttp-session/src>`_

8. 认证服务 需要kong和consul,支持jwt 和session 认证

9. 确权服务 需要kong和consul





.. _gencode:



生成工程代码的方法





1. 创建工程目录,如:order_system

2. cd order_system

3. 进入cmd,在cmd 输入 ::



    gencode init -c



提示如下 ::



        gen code success!



则表示创建专案成功



4. 在pycharm中打开 order_system

5. 用 `staruml2 <http://staruml.io/download>`_ 打开(暂时不支持starUML v3) ./docs/oder_system.mdj,修改model( `建模帮助手册 <https://docs.qq.com/doc/DQkZSaUtvWXpMU1lh>`_)

6. 在python中执行 gen_code_run.py,则可产生完整的flask专案文件





工程文件架构说明



> 目录app,为项目



- api 目录编写 swagger control 代码

- __init__.py 创建 flask app

- models.py 物件模型代码,企业物件的规则在此添加

- models_base.py 企业物件代码,由工具自动产生,无需手工维护

- unitls 增加一些工具代码



> docs 保存uml module 文件,mdj 文件为starUML v2的文件



> migrations 数据迁移文件,工具自动产生,不需要手工维护



> swagger 为swagger file 目录,工具自动产生,不需要手工维护



> tests 单元测试代码,每次增加api时,均会产生测试模板文件



> seeds 为初始化数据的代码,可视需求增减



> root 目录下的文件说明:



- config.py flask 的config 文件,包括 TestingConfig(单元测试用的config),DevelopmentConfig(开发模式下用的config),ProductionConfig(生产模式下用的config)



- docker 相关文件,docker-compose-dev.yaml(docker compose 样本,生产环境下改名成 docker-compose.yaml即可),docker-compose.yaml(本地测试文件,不会上传git),Dockerfile



- gen_code_run.py 由工具初始化专案时产生,用于产生完整的专案代码 或 每次更新module后,重新生成专案代码



- run.py 开发环境下的run 单元, 包含 consul 和 kong 的注册



- uwsgi_run.py 生产环境下的run 单元,包含 consul 和 kong 的注册,在docker 中执行



- seed_run.py 产生系统默认数据,比如权限资料



- migrate_run.sh变更模型后,执行该文件 升级资料库,仅限开发环境



- run-dev.sh 为run.sh的模板文件



- run.sh 直接开启docker



:备注:



    1. 其中 要产生 tests 和seeds 目录,需要把test和seed 两个参数设为True,如:gen_code(include_test=True,include_seeds=True)

    2. 具体见 **readme.md**





数据迁移





  支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料



1. install or upgrade ::



    pip install --upgrade Flask-Migrate



2. 指定Flask app



-    linux 下 ::



        export FLASK_APP=migrate_run.py



-    windows 下 ::



        set FLASK_APP=migrate_run.py



3. 初始化 ::



    flask db init



4. 产生迁移语句 ::



    flask db migrate



5. 执行升级资料库 ::



    flask db upgrade



* 可直接执行migrate_run.bat or migrate_run.sh 升级资料库



单元测试



 继承tests下的test_base.py的 BasicTestCase

 定义test 开头的单元方法,编写测试代码即可



> 代码样例



.. code-block:: python



    from .test_base import BasicTestCase

    from app.models import *

    from app import db

    class Testexp(BasicTestCase):

        # 测试model

        def test_data1(self):

            cet = Cacl_exp_type()

            cet.code = 'cet001'

            cet.description = 'cet_des001'

            db.session.add(cet)

            db.session.commit()

            cet = Cacl_exp_type.query.first()

            self.assertEqual(cet.code,'cet001')



    # 测试方法

    def test_health(self):

        response = self.client.get(self.url_for('health'))

        self.assertTrue(response.status_code, 200)





> 执行单元测试 ::



    cd tests

    python run.py



升级旧专案的方法





> 如果不是由本工具产生的专案,可 参照生成代码的方法( gencode_)



> 如果是该工具产生旧代码,可先备份代码,删除工具之前产生的代码(保留gen_code_run.py和app 目录下的除__init__.py的代码)并重现运行gen_code_run.py产生框架





Changes



1.3.10(2024-02-26)

- drone.yml 支持tag



1.3.7(2023-02-21)

- 升级代码,支持k8s



1.3.6(2023-02-15)

- 产生k8s.yml模板文档



1.3.0(2021-12-20)

- 升级 sqlalchmy,redis等的版本



1.2.26(2021-04-22)

- 支持redis 哨兵模式



1.2.6(2020-09-07)

- 增加 .drone.yml 模板

1.2.6(2020-08-04)

- 修改project 文件代码



1.2.4(2020-05-20)

- 修改project 文件代码



1.2.3(2020-05-20)

- 修改dockerfile template



1.2.0(2020-02-17)

- 增加GenSwagger 类,创建swagger



1.1.0(2020-02-14)

- 支持startUML3 ,swagger2.0



1.0.0(2020-01-01)

- 只支持startUML2.8.1,swagger2.0



0.6.44(2019-12-18)

- 类别没有ID时,统一用integer 做id



0.6.40(2019-12-18)

- json中的日期时间增加本地时区



0.6.37(2019-12-18)

- 增加 new_id 代码



0.6.35(2019-12-04)

- 增加 file_utils单元



0.6.34(2019-12-04)

- 修正 put api 错误时触发500的错误



0.6.32(2019-11-27)

- 有自定义多对多的关联类需要在models中产生后端类



0.6.31(2019-11-25)

- 数据模型支持 lazy



0.6.30(2019-11-12)

- 修改url 参数支持大小写



0.6.29(2019-10-22)

- 修改 text/html对应错误



Changes

0.6.28(2019-09-26)

- 修改 setup.tmp



0.6.26(2019-09-20)

- 支持swagger 中定义 text/html



0.6.24(2019-08-23)

- 支持cython





0.6.23(2019-06-25)

- 升级mwsdk和mwutils的版本





0.6.22(2018-11-27)

- 解决table包含触发器时,key为自动新增栏位不能新增的问题



0.6.13(2018-11-27)

- 支持产生写kafka 代码



0.6.12(2018-11-27)



- 修正 描述中 包含" 导致swagger错误的问题



0.6.10(2018-11-07)

- 升级mwutils,mw-aiohttp-security 开发包



0.6.6(2018-11-06)



- 升级mw-aiohttp-session,mw-aiohttp-security 开发包



0.6.4(2018-10-31)

- 升级mwsdk 开发包



0.6.2(2018-10-31)

- 解决非unicode中文环境下不能安装的问题



0.6.1(2018-10-30)

- 修正安装包错误



0.6.0(2018-10-30)

- 增加readme




            

Raw data

            {
    "_id": null,
    "home_page": "https://bitbucket.org/maxwin-inc/gencode/src/",
    "name": "mwgencode",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "cxhjet",
    "author_email": "cxhjet@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/1f/21/1298d721b6b97e6e87a39b1aee4c70edc4609a12c85cbfd763151fbddac5/mwgencode-1.3.10.tar.gz",
    "platform": null,
    "description": "`rst file editor <http://rst.ninjs.org>`_\r\r\n\r\r\nmwgencode\r\r\n\r\r\nmaxwin \u56e2\u961f\u4ea7\u751f\u5de5\u7a0b\u4ee3\u7801\u7684\u5de5\u5177\uff0cuml \u5efa\u6a21\u5de5\u5177\u4e3astarUML\uff0c\u5de5\u7a0b\u4ee3\u7801\u5305\u62ec\uff1a swagger\uff0ccontroller\uff0c\r\r\nmodules\uff0ctests code\uff0cseeds code\uff0cdockerfile\uff0cbabel.cfg,uwsgi file\u7b49\r\r\n\r\r\n\r\r\nmaxwin \u5f00\u53d1\u6846\u67b6\u4f7f\u7528\u7684 lib\r\r\n\r\r\n1. \u5de5\u5177 `mwutils <https://bitbucket.org/maxwin-inc/mwutils/src>`_\r\r\n2. \u8ba4\u8bc1\u68c0\u67e5 `mwauth <https://bitbucket.org/maxwin-inc/auth/src>`_\r\r\n3. \u786e\u5b9a\u6743\u9650 `mwpermission <https://bitbucket.org/maxwin-inc/mwpermission/src>`_\r\r\n4. \u901a\u7528\u670d\u52a1SDK `mwsdk <https://bitbucket.org/maxwin-inc/mwsdk/src>`_\r\r\n5. aiohttp\u591a\u8bed\u8a00 `mw-aiohttp-babel <https://bitbucket.org/maxwin-inc/mw-aiohttp-babel/src>`_\r\r\n6. aiohttp\u8ba4\u8bc1\u68c0\u67e5\u548c\u786e\u6743 `mw-aiohttp-security <https://bitbucket.org/maxwin-inc/mw-aiohttp-security/src>`_\r\r\n7. aiohttpsession `mw-aiohttp-session <https://bitbucket.org/maxwin-inc/mw-aiohttp-session/src>`_\r\r\n8. \u8ba4\u8bc1\u670d\u52a1 \u9700\u8981kong\u548cconsul\uff0c\u652f\u6301jwt \u548csession \u8ba4\u8bc1\r\r\n9. \u786e\u6743\u670d\u52a1 \u9700\u8981kong\u548cconsul\r\r\n\r\r\n\r\r\n.. _gencode:\r\r\n\r\r\n\u751f\u6210\u5de5\u7a0b\u4ee3\u7801\u7684\u65b9\u6cd5\r\r\n\r\r\n\r\r\n1. \u521b\u5efa\u5de5\u7a0b\u76ee\u5f55\uff0c\u5982\uff1aorder_system\r\r\n2. cd order_system\r\r\n3. \u8fdb\u5165cmd,\u5728cmd \u8f93\u5165 ::\r\r\n\r\r\n    gencode init -c\r\r\n\r\r\n\u63d0\u793a\u5982\u4e0b ::\r\r\n\r\r\n        gen code success!\r\r\n\r\r\n\u5219\u8868\u793a\u521b\u5efa\u4e13\u6848\u6210\u529f\r\r\n\r\r\n4. \u5728pycharm\u4e2d\u6253\u5f00 order_system\r\r\n5. \u7528 `staruml2 <http://staruml.io/download>`_ \u6253\u5f00(\u6682\u65f6\u4e0d\u652f\u6301starUML v3) ./docs/oder_system.mdj\uff0c\u4fee\u6539model\uff08 `\u5efa\u6a21\u5e2e\u52a9\u624b\u518c <https://docs.qq.com/doc/DQkZSaUtvWXpMU1lh>`_\uff09\r\r\n6. \u5728python\u4e2d\u6267\u884c gen_code_run.py\uff0c\u5219\u53ef\u4ea7\u751f\u5b8c\u6574\u7684flask\u4e13\u6848\u6587\u4ef6\r\r\n\r\r\n\r\r\n\u5de5\u7a0b\u6587\u4ef6\u67b6\u6784\u8bf4\u660e\r\r\n\r\r\n> \u76ee\u5f55app\uff0c\u4e3a\u9879\u76ee\r\r\n\r\r\n- api \u76ee\u5f55\u7f16\u5199 swagger control \u4ee3\u7801\r\r\n- __init__.py \u521b\u5efa flask app\r\r\n- models.py \u7269\u4ef6\u6a21\u578b\u4ee3\u7801\uff0c\u4f01\u4e1a\u7269\u4ef6\u7684\u89c4\u5219\u5728\u6b64\u6dfb\u52a0\r\r\n- models_base.py \u4f01\u4e1a\u7269\u4ef6\u4ee3\u7801\uff0c\u7531\u5de5\u5177\u81ea\u52a8\u4ea7\u751f\uff0c\u65e0\u9700\u624b\u5de5\u7ef4\u62a4\r\r\n- unitls \u589e\u52a0\u4e00\u4e9b\u5de5\u5177\u4ee3\u7801\r\r\n\r\r\n> docs \u4fdd\u5b58uml module \u6587\u4ef6\uff0cmdj \u6587\u4ef6\u4e3astarUML v2\u7684\u6587\u4ef6\r\r\n\r\r\n> migrations \u6570\u636e\u8fc1\u79fb\u6587\u4ef6\uff0c\u5de5\u5177\u81ea\u52a8\u4ea7\u751f\uff0c\u4e0d\u9700\u8981\u624b\u5de5\u7ef4\u62a4\r\r\n\r\r\n> swagger \u4e3aswagger file \u76ee\u5f55\uff0c\u5de5\u5177\u81ea\u52a8\u4ea7\u751f\uff0c\u4e0d\u9700\u8981\u624b\u5de5\u7ef4\u62a4\r\r\n\r\r\n> tests \u5355\u5143\u6d4b\u8bd5\u4ee3\u7801\uff0c\u6bcf\u6b21\u589e\u52a0api\u65f6\uff0c\u5747\u4f1a\u4ea7\u751f\u6d4b\u8bd5\u6a21\u677f\u6587\u4ef6\r\r\n\r\r\n> seeds \u4e3a\u521d\u59cb\u5316\u6570\u636e\u7684\u4ee3\u7801\uff0c\u53ef\u89c6\u9700\u6c42\u589e\u51cf\r\r\n\r\r\n> root \u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u8bf4\u660e\uff1a\r\r\n\r\r\n- config.py flask \u7684config \u6587\u4ef6\uff0c\u5305\u62ec TestingConfig\uff08\u5355\u5143\u6d4b\u8bd5\u7528\u7684config\uff09\uff0cDevelopmentConfig\uff08\u5f00\u53d1\u6a21\u5f0f\u4e0b\u7528\u7684config\uff09\uff0cProductionConfig\uff08\u751f\u4ea7\u6a21\u5f0f\u4e0b\u7528\u7684config\uff09\r\r\n\r\r\n- docker \u76f8\u5173\u6587\u4ef6\uff0cdocker-compose-dev.yaml(docker compose \u6837\u672c\uff0c\u751f\u4ea7\u73af\u5883\u4e0b\u6539\u540d\u6210 docker-compose.yaml\u5373\u53ef)\uff0cdocker-compose.yaml\uff08\u672c\u5730\u6d4b\u8bd5\u6587\u4ef6\uff0c\u4e0d\u4f1a\u4e0a\u4f20git\uff09\uff0cDockerfile\r\r\n\r\r\n- gen_code_run.py \u7531\u5de5\u5177\u521d\u59cb\u5316\u4e13\u6848\u65f6\u4ea7\u751f\uff0c\u7528\u4e8e\u4ea7\u751f\u5b8c\u6574\u7684\u4e13\u6848\u4ee3\u7801 \u6216 \u6bcf\u6b21\u66f4\u65b0module\u540e\uff0c\u91cd\u65b0\u751f\u6210\u4e13\u6848\u4ee3\u7801\r\r\n\r\r\n- run.py \u5f00\u53d1\u73af\u5883\u4e0b\u7684run \u5355\u5143\uff0c \u5305\u542b consul \u548c kong \u7684\u6ce8\u518c\r\r\n\r\r\n- uwsgi_run.py \u751f\u4ea7\u73af\u5883\u4e0b\u7684run \u5355\u5143\uff0c\u5305\u542b consul \u548c kong \u7684\u6ce8\u518c\uff0c\u5728docker \u4e2d\u6267\u884c\r\r\n\r\r\n- seed_run.py \u4ea7\u751f\u7cfb\u7edf\u9ed8\u8ba4\u6570\u636e\uff0c\u6bd4\u5982\u6743\u9650\u8d44\u6599\r\r\n\r\r\n- migrate_run.sh\u53d8\u66f4\u6a21\u578b\u540e\uff0c\u6267\u884c\u8be5\u6587\u4ef6 \u5347\u7ea7\u8d44\u6599\u5e93\uff0c\u4ec5\u9650\u5f00\u53d1\u73af\u5883\r\r\n\r\r\n- run-dev.sh \u4e3arun.sh\u7684\u6a21\u677f\u6587\u4ef6\r\r\n\r\r\n- run.sh \u76f4\u63a5\u5f00\u542fdocker\r\r\n\r\r\n:\u5907\u6ce8:\r\r\n\r\r\n    1. \u5176\u4e2d \u8981\u4ea7\u751f tests \u548cseeds \u76ee\u5f55\uff0c\u9700\u8981\u628atest\u548cseed \u4e24\u4e2a\u53c2\u6570\u8bbe\u4e3aTrue\uff0c\u5982\uff1agen_code(include_test=True,include_seeds=True)\r\r\n    2. \u5177\u4f53\u89c1 **readme.md**\r\r\n\r\r\n\r\r\n\u6570\u636e\u8fc1\u79fb\r\r\n\r\r\n\r\r\n  \u652f\u6301\u5bf9\u5f00\u53d1\u73af\u5883\u4e0b\u7684sqlite\u8d44\u6599\u7684\u6570\u636e\u8fc1\u79fb\uff0c\u4e0d\u5efa\u8bae\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u6267\u884c\uff0c\u907f\u514d\u4eba\u5de5\u5931\u8bef\uff0c\u5bfc\u81f4\u635f\u574f\u8d44\u6599\r\r\n\r\r\n1. install or upgrade ::\r\r\n\r\r\n    pip install --upgrade Flask-Migrate\r\r\n\r\r\n2. \u6307\u5b9aFlask app\r\r\n\r\r\n-    linux \u4e0b ::\r\r\n\r\r\n        export FLASK_APP=migrate_run.py\r\r\n\r\r\n-    windows \u4e0b ::\r\r\n\r\r\n        set FLASK_APP=migrate_run.py\r\r\n\r\r\n3. \u521d\u59cb\u5316 ::\r\r\n\r\r\n    flask db init\r\r\n\r\r\n4. \u4ea7\u751f\u8fc1\u79fb\u8bed\u53e5 ::\r\r\n\r\r\n    flask db migrate\r\r\n\r\r\n5. \u6267\u884c\u5347\u7ea7\u8d44\u6599\u5e93 ::\r\r\n\r\r\n    flask db upgrade\r\r\n\r\r\n* \u53ef\u76f4\u63a5\u6267\u884cmigrate_run.bat or migrate_run.sh \u5347\u7ea7\u8d44\u6599\u5e93\r\r\n\r\r\n\u5355\u5143\u6d4b\u8bd5\r\r\n\r\r\n \u7ee7\u627ftests\u4e0b\u7684test_base.py\u7684 BasicTestCase\r\r\n \u5b9a\u4e49test \u5f00\u5934\u7684\u5355\u5143\u65b9\u6cd5\uff0c\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801\u5373\u53ef\r\r\n\r\r\n> \u4ee3\u7801\u6837\u4f8b\r\r\n\r\r\n.. code-block:: python\r\r\n\r\r\n    from .test_base import BasicTestCase\r\r\n    from app.models import *\r\r\n    from app import db\r\r\n    class Testexp(BasicTestCase):\r\r\n        # \u6d4b\u8bd5model\r\r\n        def test_data1(self):\r\r\n            cet = Cacl_exp_type()\r\r\n            cet.code = 'cet001'\r\r\n            cet.description = 'cet_des001'\r\r\n            db.session.add(cet)\r\r\n            db.session.commit()\r\r\n            cet = Cacl_exp_type.query.first()\r\r\n            self.assertEqual(cet.code,'cet001')\r\r\n\r\r\n    # \u6d4b\u8bd5\u65b9\u6cd5\r\r\n    def test_health(self):\r\r\n        response = self.client.get(self.url_for('health'))\r\r\n        self.assertTrue(response.status_code, 200)\r\r\n\r\r\n\r\r\n> \u6267\u884c\u5355\u5143\u6d4b\u8bd5 ::\r\r\n\r\r\n    cd tests\r\r\n    python run.py\r\r\n\r\r\n\u5347\u7ea7\u65e7\u4e13\u6848\u7684\u65b9\u6cd5\r\r\n\r\r\n\r\r\n> \u5982\u679c\u4e0d\u662f\u7531\u672c\u5de5\u5177\u4ea7\u751f\u7684\u4e13\u6848\uff0c\u53ef \u53c2\u7167\u751f\u6210\u4ee3\u7801\u7684\u65b9\u6cd5\uff08 gencode_\uff09\r\r\n\r\r\n> \u5982\u679c\u662f\u8be5\u5de5\u5177\u4ea7\u751f\u65e7\u4ee3\u7801\uff0c\u53ef\u5148\u5907\u4efd\u4ee3\u7801\uff0c\u5220\u9664\u5de5\u5177\u4e4b\u524d\u4ea7\u751f\u7684\u4ee3\u7801\uff08\u4fdd\u7559gen_code_run.py\u548capp \u76ee\u5f55\u4e0b\u7684\u9664__init__.py\u7684\u4ee3\u7801\uff09\u5e76\u91cd\u73b0\u8fd0\u884cgen_code_run.py\u4ea7\u751f\u6846\u67b6\r\r\n\r\r\n\r\n\r\nChanges\r\r\n\r\r\n1.3.10(2024-02-26)\r\r\n- drone.yml \u652f\u6301tag\r\r\n\r\r\n1.3.7(2023-02-21)\r\r\n- \u5347\u7ea7\u4ee3\u7801,\u652f\u6301k8s\r\r\n\r\r\n1.3.6(2023-02-15)\r\r\n- \u4ea7\u751fk8s.yml\u6a21\u677f\u6587\u6863\r\r\n\r\r\n1.3.0(2021-12-20)\r\r\n- \u5347\u7ea7 sqlalchmy\uff0credis\u7b49\u7684\u7248\u672c\r\r\n\r\r\n1.2.26(2021-04-22)\r\r\n- \u652f\u6301redis \u54e8\u5175\u6a21\u5f0f\r\r\n\r\r\n1.2.6(2020-09-07)\r\r\n- \u589e\u52a0 .drone.yml \u6a21\u677f\r\r\n1.2.6(2020-08-04)\r\r\n- \u4fee\u6539project \u6587\u4ef6\u4ee3\u7801\r\r\n\r\r\n1.2.4(2020-05-20)\r\r\n- \u4fee\u6539project \u6587\u4ef6\u4ee3\u7801\r\r\n\r\r\n1.2.3(2020-05-20)\r\r\n- \u4fee\u6539dockerfile template\r\r\n\r\r\n1.2.0(2020-02-17)\r\r\n- \u589e\u52a0GenSwagger \u7c7b\uff0c\u521b\u5efaswagger\r\r\n\r\r\n1.1.0(2020-02-14)\r\r\n- \u652f\u6301startUML3 ,swagger2.0\r\r\n\r\r\n1.0.0(2020-01-01)\r\r\n- \u53ea\u652f\u6301startUML2.8.1,swagger2.0\r\r\n\r\r\n0.6.44(2019-12-18)\r\r\n- \u7c7b\u522b\u6ca1\u6709ID\u65f6\uff0c\u7edf\u4e00\u7528integer \u505aid\r\r\n\r\r\n0.6.40(2019-12-18)\r\r\n- json\u4e2d\u7684\u65e5\u671f\u65f6\u95f4\u589e\u52a0\u672c\u5730\u65f6\u533a\r\r\n\r\r\n0.6.37(2019-12-18)\r\r\n- \u589e\u52a0 new_id \u4ee3\u7801\r\r\n\r\r\n0.6.35(2019-12-04)\r\r\n- \u589e\u52a0 file_utils\u5355\u5143\r\r\n\r\r\n0.6.34(2019-12-04)\r\r\n- \u4fee\u6b63 put api \u9519\u8bef\u65f6\u89e6\u53d1500\u7684\u9519\u8bef\r\r\n\r\r\n0.6.32(2019-11-27)\r\r\n- \u6709\u81ea\u5b9a\u4e49\u591a\u5bf9\u591a\u7684\u5173\u8054\u7c7b\u9700\u8981\u5728models\u4e2d\u4ea7\u751f\u540e\u7aef\u7c7b\r\r\n\r\r\n0.6.31(2019-11-25)\r\r\n- \u6570\u636e\u6a21\u578b\u652f\u6301 lazy\r\r\n\r\r\n0.6.30(2019-11-12)\r\r\n- \u4fee\u6539url \u53c2\u6570\u652f\u6301\u5927\u5c0f\u5199\r\r\n\r\r\n0.6.29(2019-10-22)\r\r\n- \u4fee\u6539 text/html\u5bf9\u5e94\u9519\u8bef\r\r\n\r\r\nChanges\r\r\n0.6.28(2019-09-26)\r\r\n- \u4fee\u6539 setup.tmp\r\r\n\r\r\n0.6.26(2019-09-20)\r\r\n- \u652f\u6301swagger \u4e2d\u5b9a\u4e49 text/html\r\r\n\r\r\n0.6.24(2019-08-23)\r\r\n- \u652f\u6301cython\r\r\n\r\r\n\r\r\n0.6.23(2019-06-25)\r\r\n- \u5347\u7ea7mwsdk\u548cmwutils\u7684\u7248\u672c\r\r\n\r\r\n\r\r\n0.6.22(2018-11-27)\r\r\n- \u89e3\u51b3table\u5305\u542b\u89e6\u53d1\u5668\u65f6\uff0ckey\u4e3a\u81ea\u52a8\u65b0\u589e\u680f\u4f4d\u4e0d\u80fd\u65b0\u589e\u7684\u95ee\u9898\r\r\n\r\r\n0.6.13(2018-11-27)\r\r\n- \u652f\u6301\u4ea7\u751f\u5199kafka \u4ee3\u7801\r\r\n\r\r\n0.6.12(2018-11-27)\r\r\n\r\r\n- \u4fee\u6b63 \u63cf\u8ff0\u4e2d \u5305\u542b\" \u5bfc\u81f4swagger\u9519\u8bef\u7684\u95ee\u9898\r\r\n\r\r\n0.6.10(2018-11-07)\r\r\n- \u5347\u7ea7mwutils,mw-aiohttp-security \u5f00\u53d1\u5305\r\r\n\r\r\n0.6.6(2018-11-06)\r\r\n\r\r\n- \u5347\u7ea7mw-aiohttp-session,mw-aiohttp-security \u5f00\u53d1\u5305\r\r\n\r\r\n0.6.4(2018-10-31)\r\r\n- \u5347\u7ea7mwsdk \u5f00\u53d1\u5305\r\r\n\r\r\n0.6.2(2018-10-31)\r\r\n- \u89e3\u51b3\u975eunicode\u4e2d\u6587\u73af\u5883\u4e0b\u4e0d\u80fd\u5b89\u88c5\u7684\u95ee\u9898\r\r\n\r\r\n0.6.1(2018-10-30)\r\r\n- \u4fee\u6b63\u5b89\u88c5\u5305\u9519\u8bef\r\r\n\r\r\n0.6.0(2018-10-30)\r\r\n- \u589e\u52a0readme\r\r\n\r\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "\u6839\u636estarUML\u6587\u6863\u4ea7\u751fflask\u4e13\u6848\u7684\u4ee3\u7801",
    "version": "1.3.10",
    "project_urls": {
        "Homepage": "https://bitbucket.org/maxwin-inc/gencode/src/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f211298d721b6b97e6e87a39b1aee4c70edc4609a12c85cbfd763151fbddac5",
                "md5": "e1955257422f7469ce48f45d364d477f",
                "sha256": "105af27df9457bd1dafdae5ab55ce3bf3c13406de6d919895bf9e2340530def2"
            },
            "downloads": -1,
            "filename": "mwgencode-1.3.10.tar.gz",
            "has_sig": false,
            "md5_digest": "e1955257422f7469ce48f45d364d477f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 96493,
            "upload_time": "2024-02-26T09:15:47",
            "upload_time_iso_8601": "2024-02-26T09:15:47.837162Z",
            "url": "https://files.pythonhosted.org/packages/1f/21/1298d721b6b97e6e87a39b1aee4c70edc4609a12c85cbfd763151fbddac5/mwgencode-1.3.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-26 09:15:47",
    "github": false,
    "gitlab": false,
    "bitbucket": true,
    "codeberg": false,
    "bitbucket_user": "maxwin-inc",
    "bitbucket_project": "gencode",
    "lcname": "mwgencode"
}
        
Elapsed time: 0.46059s