mwgencode 1.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gencode/__init__.py +140 -0
- gencode/dd_models.py +256 -0
- gencode/ext.py +19 -0
- gencode/gen_code.py +343 -0
- gencode/gencode/__init__.py +0 -0
- gencode/gencode/export_class2swgclass.py +206 -0
- gencode/gencode/gen_bo_models_code.py +719 -0
- gencode/gencode/gen_state_code.py +171 -0
- gencode/gencode/gen_swagger_code.py +94 -0
- gencode/gencode/gen_tests_code.py +113 -0
- gencode/gencode/sample/__init__.py +2 -0
- gencode/gencode/sample/babel.cfg +3 -0
- gencode/gencode/sample/config-sample.ini +9 -0
- gencode/gencode/sample/config.ini +14 -0
- gencode/gencode/sample/create_new_table_run.pys +19 -0
- gencode/gencode/sample/dockerignore.dock +57 -0
- gencode/gencode/sample/file_utils.pys +396 -0
- gencode/gencode/sample/gencode.xmi +33 -0
- gencode/gencode/sample/gitignore.git +14 -0
- gencode/gencode/sample/migrate_run.bat +5 -0
- gencode/gencode/sample/migrate_run.pys +9 -0
- gencode/gencode/sample/requirements.txt +17 -0
- gencode/gencode/sample/run.sh +27 -0
- gencode/gencode/sample/seeds/__init__.py +0 -0
- gencode/gencode/sample/seeds/models_rm.pys +187 -0
- gencode/gencode/sample/seeds/seed_dev_data.pys +21 -0
- gencode/gencode/sample/seeds/seed_init.pys +17 -0
- gencode/gencode/sample/seeds/seed_rm.pys +39 -0
- gencode/gencode/sample/seeds/seed_run.pys +13 -0
- gencode/gencode/sample/seeds/seed_utils.pys +23 -0
- gencode/gencode/sample/test__init__.pys +6 -0
- gencode/gencode/sample/test_run.pys +4 -0
- gencode/gencode/sample/utils.pys +92 -0
- gencode/gencode/template/Dockerfile.tmp +55 -0
- gencode/gencode/template/README.md +91 -0
- gencode/gencode/template/__init__.py +0 -0
- gencode/gencode/template/__init__.pys +99 -0
- gencode/gencode/template/config.pys +134 -0
- gencode/gencode/template/default.conf +21 -0
- gencode/gencode/template/docker-compose-dev.yaml +52 -0
- gencode/gencode/template/docker-compose.yaml +55 -0
- gencode/gencode/template/drone.tmp +45 -0
- gencode/gencode/template/flask_models.pys +107 -0
- gencode/gencode/template/flask_models_base.pys +159 -0
- gencode/gencode/template/gen_code_flask.yaml +21 -0
- gencode/gencode/template/gen_code_run.pys +28 -0
- gencode/gencode/template/k8s-tmp.yml +141 -0
- gencode/gencode/template/run.pys +52 -0
- gencode/gencode/template/sample.mdj +1193 -0
- gencode/gencode/template/setup.tmp +48 -0
- gencode/gencode/template/supervisord.conf +21 -0
- gencode/gencode/template/swagger_file.yaml +195 -0
- gencode/gencode/template/swg_class.tmp +41 -0
- gencode/gencode/template/swg_ctrl_code.pys +130 -0
- gencode/gencode/template/swg_package_mng.tmp +4423 -0
- gencode/gencode/template/test_test_base.tmp +34 -0
- gencode/gencode/template/tests/__init__.py +0 -0
- gencode/gencode/template/tests/__init__.pys +5 -0
- gencode/gencode/template/tests/init_test_data.pys +80 -0
- gencode/gencode/template/tests/run.pys +4 -0
- gencode/gencode/template/tests/test_base.pys +87 -0
- gencode/gencode/template/tests/test_classmng.pys +58 -0
- gencode/gencode/template/uwsgi.ini +20 -0
- gencode/gencode/template/uwsgi_run.pys +44 -0
- gencode/importmdj/__init__.py +0 -0
- gencode/importmdj/import_dd_classes.py +369 -0
- gencode/importmdj/import_swagger2_class.py +371 -0
- gencode/importmdj/import_uml_models.py +466 -0
- gencode/importxmi/__init__.py +1 -0
- gencode/importxmi/import_classes.py +342 -0
- gencode/importxmi/import_sequences.py +291 -0
- gencode/importxmi/import_states.py +150 -0
- gencode/importxmi/import_swagger.py +151 -0
- gencode/swg2_class_models.py +179 -0
- gencode/uml_class_models.py +295 -0
- gencode/upgrade.py +113 -0
- gencode/utils.py +225 -0
- manage.py +194 -0
- mwgencode-1.4.1.dist-info/METADATA +325 -0
- mwgencode-1.4.1.dist-info/RECORD +84 -0
- mwgencode-1.4.1.dist-info/WHEEL +5 -0
- mwgencode-1.4.1.dist-info/entry_points.txt +2 -0
- mwgencode-1.4.1.dist-info/licenses/LICENSE.txt +19 -0
- mwgencode-1.4.1.dist-info/top_level.txt +2 -0
manage.py
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
from typing import TextIO
|
|
2
|
+
import logging
|
|
3
|
+
from gencode.gen_code import GenCode,GenProject_Sample,GenProject_Flask,GenProject_Aiohttp,GenSwagger
|
|
4
|
+
from gencode.importmdj.import_swagger2_class import ImportSwagger
|
|
5
|
+
import argparse
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
from gencode.gencode.export_class2swgclass import ExportClass2SWGClass
|
|
9
|
+
import yaml
|
|
10
|
+
import gencode.upgrade as upgrade
|
|
11
|
+
class Gen_Code():
|
|
12
|
+
def __init__(self,args):
|
|
13
|
+
# project 类型,flask,aiohttp
|
|
14
|
+
# self.type = type
|
|
15
|
+
# self.umlfile = os.path.abspath(umlfile)
|
|
16
|
+
# self.rootpath = os.path.abspath(rootpath)
|
|
17
|
+
self.args = args
|
|
18
|
+
self.prj_conf = None
|
|
19
|
+
|
|
20
|
+
def _get_config(self) -> dict:
|
|
21
|
+
def load_config():
|
|
22
|
+
cnfgfile = os.path.join(os.path.abspath(self.args.root_path), 'gen_code.yaml')
|
|
23
|
+
if not os.path.exists(cnfgfile):
|
|
24
|
+
raise Exception('gen_code.yaml文件不存在,请先执行 gencode init 初始化项目!')
|
|
25
|
+
yml = open(cnfgfile)
|
|
26
|
+
try:
|
|
27
|
+
self.prj_conf = yaml.full_load(yml)
|
|
28
|
+
except Exception as e:
|
|
29
|
+
raise Exception('载入 gen_code.yaml 出错,error:%s' % e)
|
|
30
|
+
return self.prj_conf
|
|
31
|
+
if self.prj_conf is None:
|
|
32
|
+
self.prj_conf = load_config()
|
|
33
|
+
return self.prj_conf
|
|
34
|
+
|
|
35
|
+
def _get_apptype(self):
|
|
36
|
+
try:
|
|
37
|
+
return self._get_config().get('project', {}).get('type', 'flask')
|
|
38
|
+
except Exception as e:
|
|
39
|
+
raise Exception('gen_code.yaml 文件内容出错,%s' % e)
|
|
40
|
+
|
|
41
|
+
def _get_rootpath(self):
|
|
42
|
+
try:
|
|
43
|
+
# cmd有指定rootpath 时,以指定的rootpath
|
|
44
|
+
return self.args.root_path if self.args.root_path!='.' else self._get_config().get('project',{}).get('rootpath','.')
|
|
45
|
+
except Exception as e:
|
|
46
|
+
raise Exception('gen_code.yaml 文件内容出错,%s'%e)
|
|
47
|
+
|
|
48
|
+
def _get_umlfile(self):
|
|
49
|
+
try:
|
|
50
|
+
return os.path.join(self._get_rootpath(),
|
|
51
|
+
self._get_config()['project']['doc_dir'],
|
|
52
|
+
self._get_config()['project']['models']['main']['file'])
|
|
53
|
+
except Exception as e:
|
|
54
|
+
raise Exception('gen_code.yaml 文件内容出错,%s'%e)
|
|
55
|
+
|
|
56
|
+
def init_project(self):
|
|
57
|
+
'''
|
|
58
|
+
产生一个包含 sample.mdj文件和gen_code_run.py单元的专案
|
|
59
|
+
:return:
|
|
60
|
+
'''
|
|
61
|
+
gp = GenProject_Sample(r'%s' % self.args.umlfile,
|
|
62
|
+
r'%s' % self.args.project_name)
|
|
63
|
+
gp.gen_code(self.args.python_code)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def gen_export(self):
|
|
67
|
+
umlfile = self._get_umlfile()
|
|
68
|
+
swg = GenSwagger(umlfile)
|
|
69
|
+
swg.export_one_swgclass(self.args.umlclass,umlfile)
|
|
70
|
+
|
|
71
|
+
def gen_add(self):
|
|
72
|
+
umlfile = self._get_umlfile()
|
|
73
|
+
swg = GenSwagger(umlfile)
|
|
74
|
+
swg.add_operation(self.args.swagger_package, self.args.umlclass_operation, self.args.http_method_type)
|
|
75
|
+
|
|
76
|
+
def gen_build(self):
|
|
77
|
+
prj_type = self._get_apptype()
|
|
78
|
+
umlfile = self._get_umlfile()
|
|
79
|
+
prj_rootpath = self._get_rootpath()
|
|
80
|
+
if prj_type =='flask':
|
|
81
|
+
gp = GenProject_Flask(r'%s' % umlfile,
|
|
82
|
+
r'%s' % prj_rootpath)
|
|
83
|
+
elif prj_type =='aiohttp':
|
|
84
|
+
gp = GenProject_Aiohttp(r'%s' % umlfile,
|
|
85
|
+
r'%s' % prj_rootpath)
|
|
86
|
+
else:
|
|
87
|
+
raise Exception('不支持该project type(%s)'%prj_type)
|
|
88
|
+
gp.gen_code()
|
|
89
|
+
g = GenCode(umlfile, prj_rootpath)
|
|
90
|
+
# 产生model
|
|
91
|
+
g.model()
|
|
92
|
+
|
|
93
|
+
def gen_upgrade(self):
|
|
94
|
+
# logging.info(self.args)
|
|
95
|
+
dir = self.args.dir
|
|
96
|
+
umlfile = self._get_umlfile()
|
|
97
|
+
swg = ImportSwagger().impUMLModels(umlfile)
|
|
98
|
+
if self.args.type=='k8s':
|
|
99
|
+
k8s = upgrade.Upgrade_k8s(dir,swg)
|
|
100
|
+
k8s.merge_code()
|
|
101
|
+
|
|
102
|
+
def main():
|
|
103
|
+
parser = argparse.ArgumentParser(description='''产生flask web框架的代码''')
|
|
104
|
+
parser.add_argument('-r', '--root-path',
|
|
105
|
+
help='专案的根目录(default: 当前目录名)',
|
|
106
|
+
default='.')
|
|
107
|
+
subparsers = parser.add_subparsers(title='Command')
|
|
108
|
+
|
|
109
|
+
# 初始项目,建立sample umlmodel,config等文件
|
|
110
|
+
gp_parser = subparsers.add_parser('init', help='创建项目的初始文件,包括uml,cconfig等文件', add_help=True)
|
|
111
|
+
gp_parser.set_defaults(command='init_project')
|
|
112
|
+
gp_parser.add_argument('-f', '--umlfile',
|
|
113
|
+
type = str,
|
|
114
|
+
help='指定mdj文件 (default: sample.mdj),不指定时以项目名为文件名',
|
|
115
|
+
default='default.mdj')
|
|
116
|
+
gp_parser.add_argument('-p', '--project-name',
|
|
117
|
+
help='专案名称(default: 当前目录名)',
|
|
118
|
+
default='.')
|
|
119
|
+
gp_parser.add_argument('-t', '--project-type',
|
|
120
|
+
help='专案类型 :flask,aiohttp,default为 flask',
|
|
121
|
+
type=str, choices=['flask', 'aiohttp'],
|
|
122
|
+
default='flask')
|
|
123
|
+
gp_parser.add_argument('-c', '--python-code',
|
|
124
|
+
help='产生gen_code_run.py 单元',
|
|
125
|
+
action='store_true')
|
|
126
|
+
|
|
127
|
+
gp_parser = subparsers.add_parser('build', help='产生项目相关的文件,UMLmodel或gen_code.yaml有变更时,需要重新执行,以生成代码'
|
|
128
|
+
'-m model名称', add_help=True)
|
|
129
|
+
gp_parser.set_defaults(command='gen_build')
|
|
130
|
+
# gp_parser.add_argument('-m','--model', help='model名称',type=str,default = 'main')
|
|
131
|
+
|
|
132
|
+
gp_parser = subparsers.add_parser('add', help='添加一个方法到swagger相关类', add_help=True)
|
|
133
|
+
gp_parser.set_defaults(command='gen_add')
|
|
134
|
+
# gp_parser.add_argument('-m','--model', help='model名称,暂',type=str)
|
|
135
|
+
gp_parser.add_argument('-p','--swagger_package', help='swagger package class名称,如:employeemng',type=str)
|
|
136
|
+
gp_parser.add_argument('-o','--umlclass_operation', help='uml class的operation名称,如: get_employee',type=str)
|
|
137
|
+
gp_parser.add_argument('-t','--http_method_type', help='操作类别,如:get,post,put,delete',type=str,default='get')
|
|
138
|
+
|
|
139
|
+
gp_parser = subparsers.add_parser('exp', help='把logic view中的umlclass 生成 swagger class,包含 get,post,put,delete 的operation', add_help=True)
|
|
140
|
+
gp_parser.set_defaults(command='gen_export')
|
|
141
|
+
gp_parser.add_argument('-c','--umlclass', help='logic view中的uml class 名称, 如:employee',type=str)
|
|
142
|
+
|
|
143
|
+
gp_parser = subparsers.add_parser('upgrade', help='升级项目相关的文件,如:k8s'
|
|
144
|
+
'-t 升级类型名称', add_help=True)
|
|
145
|
+
gp_parser.set_defaults(command='gen_upgrade')
|
|
146
|
+
gp_parser.add_argument('-t','--type',
|
|
147
|
+
help='升级类型的名称,如:k8s',
|
|
148
|
+
type=str,
|
|
149
|
+
default = 'k8s')
|
|
150
|
+
gp_parser.add_argument('-d', '--dir',
|
|
151
|
+
help='专案目录(default: 当前目录名)',
|
|
152
|
+
default='.')
|
|
153
|
+
|
|
154
|
+
if len(sys.argv)==1:
|
|
155
|
+
parser.print_help()
|
|
156
|
+
print('一) 初始化专案的命令')
|
|
157
|
+
print(' gencode init -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
|
|
158
|
+
print(' gencode init # 产生一个以当前目录名为专案名称的flask项目, 如果想修改专案参数, 请直接修改gen_code.yaml文件')
|
|
159
|
+
print(' gencode init -p drts-order -t flask # 产生一个专案名称为drts-order 的flask项目')
|
|
160
|
+
print(' gencode init -c # 产生gen_code_run.py单元')
|
|
161
|
+
print('二) 产生专案所有的命令,有变更model或配置时时,需要重新执行,以生成代码:')
|
|
162
|
+
print(' gencode build # 按gen_code.yaml文件,产生项目的所有文件')
|
|
163
|
+
print('三) 根据类名生成swagger class,需要在staruml中 执行 reload ')
|
|
164
|
+
print(' gencode exp -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
|
|
165
|
+
print(' gencode exp -c employee # 把logic view中的employee 生成 swagger class,包含 get,post,put,delete 的operation')
|
|
166
|
+
print('四) 给swagger class 增加一个操作(operation),需要在staruml中 执行 reload ')
|
|
167
|
+
print(' gencode add -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
|
|
168
|
+
print(' gencode add -p employeemng -o get_employee -t get # 给swagger class employeemng 增加一个get_employee的操作,操作类型为get')
|
|
169
|
+
print('五) 升级代码,如: 支持 k8s')
|
|
170
|
+
print(' gencode upgrade -h # 查看命令帮助,所有参数都可以独立使用,也可以组合使用')
|
|
171
|
+
print(' gencode upgrade -t k8s # 升级旧专案支持 k8s')
|
|
172
|
+
print('备注: 当不是在当前项目的根目录执行时,需要指定rootpath参数,如:')
|
|
173
|
+
print(' gencode -r ./mwwork/projects/drts-order build ')
|
|
174
|
+
print(' gencode -r ./mwwork/projects/drts-order exp -c employee ')
|
|
175
|
+
print(' gencode -r ./mwwork/projects/drts-order add -p employeemng -o get_employee -t get' )
|
|
176
|
+
sys.exit()
|
|
177
|
+
args = parser.parse_args(sys.argv[1:])
|
|
178
|
+
print(args)
|
|
179
|
+
gen_code = Gen_Code(args)
|
|
180
|
+
getattr(gen_code, args.command)()
|
|
181
|
+
print('gen code success!')
|
|
182
|
+
|
|
183
|
+
if __name__ == '__main__':
|
|
184
|
+
# 设置环境变量
|
|
185
|
+
os.environ['PYTHONPATH'] = os.path.dirname(os.path.abspath(__file__))
|
|
186
|
+
if len(sys.argv) == 1:
|
|
187
|
+
# 调试时使用的默认参数
|
|
188
|
+
# sys.argv.extend(['init', '-p', 'testproject', '-t', 'flask','-c'])
|
|
189
|
+
# sys.argv.extend(['-r','./testproject','build'])
|
|
190
|
+
# sys.argv.extend(['-r','./testproject','exp','-c','order'])
|
|
191
|
+
sys.argv.extend(['-r','./testproject','add','-p','ordermng','-o','delete_orders','-t','delete'])
|
|
192
|
+
# sys.argv.extend(['upgrade','-d','./testproject'])
|
|
193
|
+
main()
|
|
194
|
+
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mwgencode
|
|
3
|
+
Version: 1.4.1
|
|
4
|
+
Summary: 根据starUML文档产生flask专案的代码
|
|
5
|
+
Home-page: https://bitbucket.org/maxwin-inc/gencode/src/
|
|
6
|
+
Author: cxhjet
|
|
7
|
+
Author-email: cxhjet@qq.com
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.5
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
License-File: LICENSE.txt
|
|
19
|
+
Requires-Dist: mwutils>=0.1.37
|
|
20
|
+
Requires-Dist: mwauth>=0.4.47
|
|
21
|
+
Requires-Dist: mwsdk>=0.2.12
|
|
22
|
+
Requires-Dist: mwpermission>=0.1.26
|
|
23
|
+
Requires-Dist: mw-aiohttp-session>=0.1.4
|
|
24
|
+
Requires-Dist: mw-aiohttp-babel>=0.1.7
|
|
25
|
+
Requires-Dist: mw-aiohttp-security>=0.1.3
|
|
26
|
+
Requires-Dist: SQLAlchemy>=1.4.31
|
|
27
|
+
Requires-Dist: pyJWT
|
|
28
|
+
Requires-Dist: python-consul
|
|
29
|
+
Requires-Dist: flask_migrate
|
|
30
|
+
Requires-Dist: flask-babel
|
|
31
|
+
Requires-Dist: Flask-Cors
|
|
32
|
+
Requires-Dist: Flask-Redis
|
|
33
|
+
Requires-Dist: Flask-SQLAlchemy>=2.5.1
|
|
34
|
+
Requires-Dist: geojson
|
|
35
|
+
Requires-Dist: redis>=4.0.2
|
|
36
|
+
Requires-Dist: connexion[swagger-ui]>=2.11.1
|
|
37
|
+
Requires-Dist: Flask>=2.0.2
|
|
38
|
+
Requires-Dist: Werkzeug>=0.15.5
|
|
39
|
+
Requires-Dist: yarl>=1.4.2
|
|
40
|
+
Requires-Dist: xlrd
|
|
41
|
+
Requires-Dist: xlsxwriter
|
|
42
|
+
Requires-Dist: aioredis
|
|
43
|
+
Requires-Dist: aiohttp_swagger
|
|
44
|
+
Dynamic: author
|
|
45
|
+
Dynamic: author-email
|
|
46
|
+
Dynamic: classifier
|
|
47
|
+
Dynamic: description
|
|
48
|
+
Dynamic: home-page
|
|
49
|
+
Dynamic: license-file
|
|
50
|
+
Dynamic: requires-dist
|
|
51
|
+
Dynamic: summary
|
|
52
|
+
|
|
53
|
+
`rst file editor <http://rst.ninjs.org>`_
|
|
54
|
+
|
|
55
|
+
mwgencode
|
|
56
|
+
|
|
57
|
+
maxwin 团队产生工程代码的工具,uml 建模工具为starUML,工程代码包括: swagger,controller,
|
|
58
|
+
modules,tests code,seeds code,dockerfile,babel.cfg,uwsgi file等
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
maxwin 开发框架使用的 lib
|
|
62
|
+
|
|
63
|
+
1. 工具 `mwutils <https://bitbucket.org/maxwin-inc/mwutils/src>`_
|
|
64
|
+
2. 认证检查 `mwauth <https://bitbucket.org/maxwin-inc/auth/src>`_
|
|
65
|
+
3. 确定权限 `mwpermission <https://bitbucket.org/maxwin-inc/mwpermission/src>`_
|
|
66
|
+
4. 通用服务SDK `mwsdk <https://bitbucket.org/maxwin-inc/mwsdk/src>`_
|
|
67
|
+
5. aiohttp多语言 `mw-aiohttp-babel <https://bitbucket.org/maxwin-inc/mw-aiohttp-babel/src>`_
|
|
68
|
+
6. aiohttp认证检查和确权 `mw-aiohttp-security <https://bitbucket.org/maxwin-inc/mw-aiohttp-security/src>`_
|
|
69
|
+
7. aiohttpsession `mw-aiohttp-session <https://bitbucket.org/maxwin-inc/mw-aiohttp-session/src>`_
|
|
70
|
+
8. 认证服务 需要kong和consul,支持jwt 和session 认证
|
|
71
|
+
9. 确权服务 需要kong和consul
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
.. _gencode:
|
|
75
|
+
|
|
76
|
+
生成工程代码的方法
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
1. 创建工程目录,如:order_system
|
|
80
|
+
2. cd order_system
|
|
81
|
+
3. 进入cmd,在cmd 输入 ::
|
|
82
|
+
|
|
83
|
+
gencode init -c
|
|
84
|
+
|
|
85
|
+
提示如下 ::
|
|
86
|
+
|
|
87
|
+
gen code success!
|
|
88
|
+
|
|
89
|
+
则表示创建专案成功
|
|
90
|
+
|
|
91
|
+
4. 在pycharm中打开 order_system
|
|
92
|
+
5. 用 `staruml2 <http://staruml.io/download>`_ 打开(暂时不支持starUML v3) ./docs/oder_system.mdj,修改model( `建模帮助手册 <https://docs.qq.com/doc/DQkZSaUtvWXpMU1lh>`_)
|
|
93
|
+
6. 在python中执行 gen_code_run.py,则可产生完整的flask专案文件
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
工程文件架构说明
|
|
97
|
+
|
|
98
|
+
> 目录app,为项目
|
|
99
|
+
|
|
100
|
+
- api 目录编写 swagger control 代码
|
|
101
|
+
- __init__.py 创建 flask app
|
|
102
|
+
- models.py 物件模型代码,企业物件的规则在此添加
|
|
103
|
+
- models_base.py 企业物件代码,由工具自动产生,无需手工维护
|
|
104
|
+
- unitls 增加一些工具代码
|
|
105
|
+
|
|
106
|
+
> docs 保存uml module 文件,mdj 文件为starUML v2的文件
|
|
107
|
+
|
|
108
|
+
> migrations 数据迁移文件,工具自动产生,不需要手工维护
|
|
109
|
+
|
|
110
|
+
> swagger 为swagger file 目录,工具自动产生,不需要手工维护
|
|
111
|
+
|
|
112
|
+
> tests 单元测试代码,每次增加api时,均会产生测试模板文件
|
|
113
|
+
|
|
114
|
+
> seeds 为初始化数据的代码,可视需求增减
|
|
115
|
+
|
|
116
|
+
> root 目录下的文件说明:
|
|
117
|
+
|
|
118
|
+
- config.py flask 的config 文件,包括 TestingConfig(单元测试用的config),DevelopmentConfig(开发模式下用的config),ProductionConfig(生产模式下用的config)
|
|
119
|
+
|
|
120
|
+
- docker 相关文件,docker-compose-dev.yaml(docker compose 样本,生产环境下改名成 docker-compose.yaml即可),docker-compose.yaml(本地测试文件,不会上传git),Dockerfile
|
|
121
|
+
|
|
122
|
+
- gen_code_run.py 由工具初始化专案时产生,用于产生完整的专案代码 或 每次更新module后,重新生成专案代码
|
|
123
|
+
|
|
124
|
+
- run.py 开发环境下的run 单元, 包含 consul 和 kong 的注册
|
|
125
|
+
|
|
126
|
+
- uwsgi_run.py 生产环境下的run 单元,包含 consul 和 kong 的注册,在docker 中执行
|
|
127
|
+
|
|
128
|
+
- seed_run.py 产生系统默认数据,比如权限资料
|
|
129
|
+
|
|
130
|
+
- migrate_run.sh变更模型后,执行该文件 升级资料库,仅限开发环境
|
|
131
|
+
|
|
132
|
+
- run-dev.sh 为run.sh的模板文件
|
|
133
|
+
|
|
134
|
+
- run.sh 直接开启docker
|
|
135
|
+
|
|
136
|
+
:备注:
|
|
137
|
+
|
|
138
|
+
1. 其中 要产生 tests 和seeds 目录,需要把test和seed 两个参数设为True,如:gen_code(include_test=True,include_seeds=True)
|
|
139
|
+
2. 具体见 **readme.md**
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
数据迁移
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
支持对开发环境下的sqlite资料的数据迁移,不建议在生产环境中执行,避免人工失误,导致损坏资料
|
|
146
|
+
|
|
147
|
+
1. install or upgrade ::
|
|
148
|
+
|
|
149
|
+
pip install --upgrade Flask-Migrate
|
|
150
|
+
|
|
151
|
+
2. 指定Flask app
|
|
152
|
+
|
|
153
|
+
- linux 下 ::
|
|
154
|
+
|
|
155
|
+
export FLASK_APP=migrate_run.py
|
|
156
|
+
|
|
157
|
+
- windows 下 ::
|
|
158
|
+
|
|
159
|
+
set FLASK_APP=migrate_run.py
|
|
160
|
+
|
|
161
|
+
3. 初始化 ::
|
|
162
|
+
|
|
163
|
+
flask db init
|
|
164
|
+
|
|
165
|
+
4. 产生迁移语句 ::
|
|
166
|
+
|
|
167
|
+
flask db migrate
|
|
168
|
+
|
|
169
|
+
5. 执行升级资料库 ::
|
|
170
|
+
|
|
171
|
+
flask db upgrade
|
|
172
|
+
|
|
173
|
+
* 可直接执行migrate_run.bat or migrate_run.sh 升级资料库
|
|
174
|
+
|
|
175
|
+
单元测试
|
|
176
|
+
|
|
177
|
+
继承tests下的test_base.py的 BasicTestCase
|
|
178
|
+
定义test 开头的单元方法,编写测试代码即可
|
|
179
|
+
|
|
180
|
+
> 代码样例
|
|
181
|
+
|
|
182
|
+
.. code-block:: python
|
|
183
|
+
|
|
184
|
+
from .test_base import BasicTestCase
|
|
185
|
+
from app.models import *
|
|
186
|
+
from app import db
|
|
187
|
+
class Testexp(BasicTestCase):
|
|
188
|
+
# 测试model
|
|
189
|
+
def test_data1(self):
|
|
190
|
+
cet = Cacl_exp_type()
|
|
191
|
+
cet.code = 'cet001'
|
|
192
|
+
cet.description = 'cet_des001'
|
|
193
|
+
db.session.add(cet)
|
|
194
|
+
db.session.commit()
|
|
195
|
+
cet = Cacl_exp_type.query.first()
|
|
196
|
+
self.assertEqual(cet.code,'cet001')
|
|
197
|
+
|
|
198
|
+
# 测试方法
|
|
199
|
+
def test_health(self):
|
|
200
|
+
response = self.client.get(self.url_for('health'))
|
|
201
|
+
self.assertTrue(response.status_code, 200)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
> 执行单元测试 ::
|
|
205
|
+
|
|
206
|
+
cd tests
|
|
207
|
+
python run.py
|
|
208
|
+
|
|
209
|
+
升级旧专案的方法
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
> 如果不是由本工具产生的专案,可 参照生成代码的方法( gencode_)
|
|
213
|
+
|
|
214
|
+
> 如果是该工具产生旧代码,可先备份代码,删除工具之前产生的代码(保留gen_code_run.py和app 目录下的除__init__.py的代码)并重现运行gen_code_run.py产生框架
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
Changes
|
|
219
|
+
|
|
220
|
+
1.3.10(2024-02-26)
|
|
221
|
+
- drone.yml 支持tag
|
|
222
|
+
|
|
223
|
+
1.3.7(2023-02-21)
|
|
224
|
+
- 升级代码,支持k8s
|
|
225
|
+
|
|
226
|
+
1.3.6(2023-02-15)
|
|
227
|
+
- 产生k8s.yml模板文档
|
|
228
|
+
|
|
229
|
+
1.3.0(2021-12-20)
|
|
230
|
+
- 升级 sqlalchmy,redis等的版本
|
|
231
|
+
|
|
232
|
+
1.2.26(2021-04-22)
|
|
233
|
+
- 支持redis 哨兵模式
|
|
234
|
+
|
|
235
|
+
1.2.6(2020-09-07)
|
|
236
|
+
- 增加 .drone.yml 模板
|
|
237
|
+
1.2.6(2020-08-04)
|
|
238
|
+
- 修改project 文件代码
|
|
239
|
+
|
|
240
|
+
1.2.4(2020-05-20)
|
|
241
|
+
- 修改project 文件代码
|
|
242
|
+
|
|
243
|
+
1.2.3(2020-05-20)
|
|
244
|
+
- 修改dockerfile template
|
|
245
|
+
|
|
246
|
+
1.2.0(2020-02-17)
|
|
247
|
+
- 增加GenSwagger 类,创建swagger
|
|
248
|
+
|
|
249
|
+
1.1.0(2020-02-14)
|
|
250
|
+
- 支持startUML3 ,swagger2.0
|
|
251
|
+
|
|
252
|
+
1.0.0(2020-01-01)
|
|
253
|
+
- 只支持startUML2.8.1,swagger2.0
|
|
254
|
+
|
|
255
|
+
0.6.44(2019-12-18)
|
|
256
|
+
- 类别没有ID时,统一用integer 做id
|
|
257
|
+
|
|
258
|
+
0.6.40(2019-12-18)
|
|
259
|
+
- json中的日期时间增加本地时区
|
|
260
|
+
|
|
261
|
+
0.6.37(2019-12-18)
|
|
262
|
+
- 增加 new_id 代码
|
|
263
|
+
|
|
264
|
+
0.6.35(2019-12-04)
|
|
265
|
+
- 增加 file_utils单元
|
|
266
|
+
|
|
267
|
+
0.6.34(2019-12-04)
|
|
268
|
+
- 修正 put api 错误时触发500的错误
|
|
269
|
+
|
|
270
|
+
0.6.32(2019-11-27)
|
|
271
|
+
- 有自定义多对多的关联类需要在models中产生后端类
|
|
272
|
+
|
|
273
|
+
0.6.31(2019-11-25)
|
|
274
|
+
- 数据模型支持 lazy
|
|
275
|
+
|
|
276
|
+
0.6.30(2019-11-12)
|
|
277
|
+
- 修改url 参数支持大小写
|
|
278
|
+
|
|
279
|
+
0.6.29(2019-10-22)
|
|
280
|
+
- 修改 text/html对应错误
|
|
281
|
+
|
|
282
|
+
Changes
|
|
283
|
+
0.6.28(2019-09-26)
|
|
284
|
+
- 修改 setup.tmp
|
|
285
|
+
|
|
286
|
+
0.6.26(2019-09-20)
|
|
287
|
+
- 支持swagger 中定义 text/html
|
|
288
|
+
|
|
289
|
+
0.6.24(2019-08-23)
|
|
290
|
+
- 支持cython
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
0.6.23(2019-06-25)
|
|
294
|
+
- 升级mwsdk和mwutils的版本
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
0.6.22(2018-11-27)
|
|
298
|
+
- 解决table包含触发器时,key为自动新增栏位不能新增的问题
|
|
299
|
+
|
|
300
|
+
0.6.13(2018-11-27)
|
|
301
|
+
- 支持产生写kafka 代码
|
|
302
|
+
|
|
303
|
+
0.6.12(2018-11-27)
|
|
304
|
+
|
|
305
|
+
- 修正 描述中 包含" 导致swagger错误的问题
|
|
306
|
+
|
|
307
|
+
0.6.10(2018-11-07)
|
|
308
|
+
- 升级mwutils,mw-aiohttp-security 开发包
|
|
309
|
+
|
|
310
|
+
0.6.6(2018-11-06)
|
|
311
|
+
|
|
312
|
+
- 升级mw-aiohttp-session,mw-aiohttp-security 开发包
|
|
313
|
+
|
|
314
|
+
0.6.4(2018-10-31)
|
|
315
|
+
- 升级mwsdk 开发包
|
|
316
|
+
|
|
317
|
+
0.6.2(2018-10-31)
|
|
318
|
+
- 解决非unicode中文环境下不能安装的问题
|
|
319
|
+
|
|
320
|
+
0.6.1(2018-10-30)
|
|
321
|
+
- 修正安装包错误
|
|
322
|
+
|
|
323
|
+
0.6.0(2018-10-30)
|
|
324
|
+
- 增加readme
|
|
325
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
manage.py,sha256=dW3wtmYg7DOIT1xRL0WG2Dk0IvCTMyGLTvb6OkYTu20,10077
|
|
2
|
+
gencode/__init__.py,sha256=Elhgah6OJ1KUybEBstiYhfwyWx5Q3DtJsqrzQkbzhKs,5604
|
|
3
|
+
gencode/dd_models.py,sha256=ciYqB3wHnL3KVZIs-dZALwML9OKYrNckClqfIWh7JNg,9965
|
|
4
|
+
gencode/ext.py,sha256=9YK7nuGvUy7qg_mNVQj2r3LDxX26F5VsJC7ZlzBj7qo,657
|
|
5
|
+
gencode/gen_code.py,sha256=SMdyXKWPjUqG_fMkUAkIHlsLWmg7AgmNBHt9W09ZF6U,18680
|
|
6
|
+
gencode/swg2_class_models.py,sha256=ZEgFCjv2SMe2eKrK-HLDcPM3Zb_DaXwvNlSe639-Xps,7723
|
|
7
|
+
gencode/uml_class_models.py,sha256=M160prXejKtU3Jf5rHyj-cO_q0JHtxr1P28xm1ySa80,14384
|
|
8
|
+
gencode/upgrade.py,sha256=It5iM16SRQCsbhzMob2vgAVqiKdzGp-yjwPGhsXJNCs,4495
|
|
9
|
+
gencode/utils.py,sha256=hA-RiHpnzEQxUANVGAxPEYzcVBZJHhusyPXEKhPtXTI,6959
|
|
10
|
+
gencode/gencode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
gencode/gencode/export_class2swgclass.py,sha256=H5jfidFlmj1mrO_Bz_GULTFwP8c7XsJodCIV3g9HPb0,10557
|
|
12
|
+
gencode/gencode/gen_bo_models_code.py,sha256=fSZghV4CtFS8Dj-x06I1un9LUHA8l1-apXR2jtmCIqI,34838
|
|
13
|
+
gencode/gencode/gen_state_code.py,sha256=0L5i3ReyIz-skP7gOWQe2DEz-4Pq4pGpfyt0tet3Pt4,8269
|
|
14
|
+
gencode/gencode/gen_swagger_code.py,sha256=FfikjR87TLi70f-84dzxNW8KV7l19dhVRGKTGdZaTw0,3739
|
|
15
|
+
gencode/gencode/gen_tests_code.py,sha256=nc-cuVNj1uTwuID7jIbKwSUQpgdt-BVIMjMiN8l59ko,4326
|
|
16
|
+
gencode/gencode/sample/__init__.py,sha256=Gmag5jQ93tppNTp8WJngFvhinFf1iqrC32Flc-dv5zM,4
|
|
17
|
+
gencode/gencode/sample/babel.cfg,sha256=mWSNrO3JgEoo5Ff7MWvRjiiJ2Oy4Wu9FPC_MlHEeSDk,98
|
|
18
|
+
gencode/gencode/sample/config-sample.ini,sha256=dbRBakPI9mBiI2zYNeE-a6ea2e8qTD574UGQrPlkCss,172
|
|
19
|
+
gencode/gencode/sample/config.ini,sha256=1sccrU2uKr8jKxTBgnnDo45UqU5weNYDcRIsBPJq6aI,267
|
|
20
|
+
gencode/gencode/sample/create_new_table_run.pys,sha256=qOBsDYRpsmggKek2RLmGBdSYs5Vh90yTvo_VacE145c,565
|
|
21
|
+
gencode/gencode/sample/dockerignore.dock,sha256=Z3tq_ePi5OvvbrSpigs6pMCkTt2vYqxjzkx9tVZuUd8,652
|
|
22
|
+
gencode/gencode/sample/file_utils.pys,sha256=o53XxVZVSGpj1kTrd0-SDt4BRL3S4mqEqx6NQ2zpUac,16379
|
|
23
|
+
gencode/gencode/sample/gencode.xmi,sha256=QUJQbiDIaC_I5NTVLUvWh3o-0zsVUhnLm4ViB3S98GA,2674
|
|
24
|
+
gencode/gencode/sample/gitignore.git,sha256=aFdQVhysBY38jO_qDdNb4vls2b2WJF6OCBTL4M1DzFY,163
|
|
25
|
+
gencode/gencode/sample/migrate_run.bat,sha256=wS9YywFSJRrsZSARFKibjJYWHxHFTO3qDzIf6dv2aM0,100
|
|
26
|
+
gencode/gencode/sample/migrate_run.pys,sha256=VZZSwNq4QZAjYgjLXfRJ1zJV2WTwlu9R1MFh5plHVN8,228
|
|
27
|
+
gencode/gencode/sample/requirements.txt,sha256=D_ZoKTtXDC5HxJ4WkD9sbCKjk-SxHJHPIUolbUztulo,368
|
|
28
|
+
gencode/gencode/sample/run.sh,sha256=bUqUEM6EwzU5j9TGpNvhMVjdGaxtwALwSG3Znqj0f4A,1157
|
|
29
|
+
gencode/gencode/sample/test__init__.pys,sha256=_whZWrLWL0yQGE-6zg0udqA-UvPqCiizSV-tPbU61LY,167
|
|
30
|
+
gencode/gencode/sample/test_run.pys,sha256=x6o38KdhZtn7BREOg6fgGIF4fkvge1yUpMTKSGnF0AI,60
|
|
31
|
+
gencode/gencode/sample/utils.pys,sha256=s1WHGzh6yzFyjUKqsjbhkePZF5SxJYomVck606vS9GY,2744
|
|
32
|
+
gencode/gencode/sample/seeds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
gencode/gencode/sample/seeds/models_rm.pys,sha256=0m4nGJeOjZ33ibNG0XdoRMZhQ5iCtqcvEc6x_Sc96Lo,7390
|
|
34
|
+
gencode/gencode/sample/seeds/seed_dev_data.pys,sha256=GX8Np_J3b6Wk65Fq9_ZC3jKsRBQgoDCc-EOO6dgt5AM,819
|
|
35
|
+
gencode/gencode/sample/seeds/seed_init.pys,sha256=tQBuK5sAf1fS46T_hDhnJn_F699WsWh9wvFqISxJj3o,530
|
|
36
|
+
gencode/gencode/sample/seeds/seed_rm.pys,sha256=MjUy1ccpru3qgQe6xiKXL9Q4hbWbS_fAdM9xkqGX1nI,1542
|
|
37
|
+
gencode/gencode/sample/seeds/seed_run.pys,sha256=Ikhi8vXE1uGF6ziizcvtEoQEllAJaPj4Pk24DsTA-bg,370
|
|
38
|
+
gencode/gencode/sample/seeds/seed_utils.pys,sha256=wNViGI1m5kkqP6AkPixLl39IqBx0UQWC5pXKHjqgtO8,659
|
|
39
|
+
gencode/gencode/template/Dockerfile.tmp,sha256=6yxRhnLoc7ACYNlW2ANzgydoBD7GGkPLQ95lvHe81j0,2414
|
|
40
|
+
gencode/gencode/template/README.md,sha256=dSvlxJFdrCcm4RKNyEX93wSkWYlzAgu6qLbJ8SYd23s,2008
|
|
41
|
+
gencode/gencode/template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
+
gencode/gencode/template/__init__.pys,sha256=QcpnLO4c5z4TKiva7kXqrcHGCjCknOWwyzO8N5UATfw,3172
|
|
43
|
+
gencode/gencode/template/config.pys,sha256=PpQOXn0OcqXvfSTlmoizqCoI5IZWKH4ZRurhdNKgOsY,5824
|
|
44
|
+
gencode/gencode/template/default.conf,sha256=J6Qryk70fgjF7to_o-mpBMLZuCxVNKYyQU8zVnPZ5JY,484
|
|
45
|
+
gencode/gencode/template/docker-compose-dev.yaml,sha256=Y7w3w4qhI_JJf7-HwSuKfl8W3QjJcTgOBBHwwtLtQcs,1878
|
|
46
|
+
gencode/gencode/template/docker-compose.yaml,sha256=DJevjGjRmhLT8aBlaxCrlxBS9-NpRgnHr88zuIuYR1o,2057
|
|
47
|
+
gencode/gencode/template/drone.tmp,sha256=yQisflIclwqHGi_-ZbkckxbLELCTSQFbo4ylrxWKFH0,989
|
|
48
|
+
gencode/gencode/template/flask_models.pys,sha256=lpb-jHurmzwaEkOiCABa3P92-cbvcNA7hICZOUdzb34,3913
|
|
49
|
+
gencode/gencode/template/flask_models_base.pys,sha256=2zfD9-_rcZ93vu_ofoQRK0HW5ZE2mJ8GCLcuQkBj6L4,5743
|
|
50
|
+
gencode/gencode/template/gen_code_flask.yaml,sha256=WYML4C-d4MVUNOpq-hDLqntrNaIb551s3_uZyUulhrg,304
|
|
51
|
+
gencode/gencode/template/gen_code_run.pys,sha256=L5zQSEBDyLX-E98pI05NJAAnJxB30kaYVUQx5DLMoWQ,983
|
|
52
|
+
gencode/gencode/template/k8s-tmp.yml,sha256=qmJyiqn2M6o0UYMg0OzWezgkJt7cCL0jpnpmrBA84ZQ,3923
|
|
53
|
+
gencode/gencode/template/run.pys,sha256=tBM0MGwp_4mfMa-PntCfsFyBe-8faZEQng9QP8YmM_g,2350
|
|
54
|
+
gencode/gencode/template/sample.mdj,sha256=9sxQKfMim8xwMyqPd_UKMFfd8GRak8bcU0FJwwDhLAw,31823
|
|
55
|
+
gencode/gencode/template/setup.tmp,sha256=duyPE785tn2Z0nR6fnvvlPO4MbOEyEtpFRuo8HOiKZ8,2569
|
|
56
|
+
gencode/gencode/template/supervisord.conf,sha256=enGMXaIZDvjF6xTUAyxVlROMkr6M--dlcuT9vmNEJTg,486
|
|
57
|
+
gencode/gencode/template/swagger_file.yaml,sha256=DulR5w03adaATzEkM4BHcNYObwWdwaV4RfmbOfdQuB4,5767
|
|
58
|
+
gencode/gencode/template/swg_class.tmp,sha256=q-N7JFXxamSKLhxToPRVvidvyg-l6xuHRO-6NlCx3MI,1146
|
|
59
|
+
gencode/gencode/template/swg_ctrl_code.pys,sha256=MWx1TE1X3r95AmT_Pae2Y_un7wOA468mcq0Wo3NLx0g,5904
|
|
60
|
+
gencode/gencode/template/swg_package_mng.tmp,sha256=fBko4Eei1d4KV6-4rTJYd-FPgW59Jb0KgNzMhUrnexE,140927
|
|
61
|
+
gencode/gencode/template/test_test_base.tmp,sha256=TV-ojRhWgNFYzOsCI7dh0gScggbmgWCYFBitJGkHPPU,1109
|
|
62
|
+
gencode/gencode/template/uwsgi.ini,sha256=VxBE5f5JFmRBb7uZDnGRGTAnmyIqG8fbBesIseknPrQ,470
|
|
63
|
+
gencode/gencode/template/uwsgi_run.pys,sha256=qIHPCfo5Q0LGL2VZ_I0S229Z2wT2-DQP_qI4xiuZvbU,2028
|
|
64
|
+
gencode/gencode/template/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
+
gencode/gencode/template/tests/__init__.pys,sha256=eYBZ7kX_96D4_lV6gp-KlTadtb_PnbhWVcepVTtM8rQ,151
|
|
66
|
+
gencode/gencode/template/tests/init_test_data.pys,sha256=VKOQ4Yj3L4yUIMi5AQGPoqITM4ZKJ6f6Zl_0dP1yN1w,3648
|
|
67
|
+
gencode/gencode/template/tests/run.pys,sha256=jXlBHVPjEIJde-3f1z9zjpQkTB2ILT2KIcJi10Ndriw,58
|
|
68
|
+
gencode/gencode/template/tests/test_base.pys,sha256=IL26uRvcZXd21FskDgirVf8TWBRHToYzKLkeIH7c3PE,4043
|
|
69
|
+
gencode/gencode/template/tests/test_classmng.pys,sha256=L_uYeXasHqVNwaZNetb-c2pWqFksyAm8E7TMA_1eReU,2983
|
|
70
|
+
gencode/importmdj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
+
gencode/importmdj/import_dd_classes.py,sha256=UBHTl2vR44TtpdTyWzekY0NzyK8vwqRyIaMs7ugeYRc,15530
|
|
72
|
+
gencode/importmdj/import_swagger2_class.py,sha256=yidhAiHIO1WcpbCvZRohcCBaTJCtWrOxVAlevUq6IpU,16451
|
|
73
|
+
gencode/importmdj/import_uml_models.py,sha256=AnDicmsFiofc7HJFHmrH5xHQlb3VTI05fvIwbmmWqR0,21223
|
|
74
|
+
gencode/importxmi/__init__.py,sha256=3jzMkjSCy9Jjy7gjXRSEbMECT6clgpsTS7QyVEcGaVw,40
|
|
75
|
+
gencode/importxmi/import_classes.py,sha256=C-WOdQTLNu7_kQ9pDaXnm0aSAE3AaMlARMUzI2nxlo4,14658
|
|
76
|
+
gencode/importxmi/import_sequences.py,sha256=_BDeujuOAZXMUiwaOxpCFBbEzLlbnQlttSjf8OZ3Kno,8941
|
|
77
|
+
gencode/importxmi/import_states.py,sha256=iUViXCnBxOigTz7VnIWOx9IyIxqcAFG0Se_tueiSRJk,5322
|
|
78
|
+
gencode/importxmi/import_swagger.py,sha256=6OBQKU40Huwz8y9xv2A1JCrFByN2AKS1Ajwvywy_Gy8,6867
|
|
79
|
+
mwgencode-1.4.1.dist-info/licenses/LICENSE.txt,sha256=VXbwArPC9XE7N7cvSBClNMHFbo7CU1p361QXV5bkGpk,1100
|
|
80
|
+
mwgencode-1.4.1.dist-info/METADATA,sha256=wwx6ledC7HwnqDwYNuf0p_4byKTfgo2beKvBxAAbMHE,9193
|
|
81
|
+
mwgencode-1.4.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
82
|
+
mwgencode-1.4.1.dist-info/entry_points.txt,sha256=l0XwC4_AGSdaYE-bsgEeZMY5ANQk9iV8fxqs22hUGjc,40
|
|
83
|
+
mwgencode-1.4.1.dist-info/top_level.txt,sha256=hgfmCJUvSkDREgCL0mS17m4yGmQCfI5sS5FAmxwXiMY,15
|
|
84
|
+
mwgencode-1.4.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2016 The Python Packaging Authority (PyPA)
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
the Software without restriction, including without limitation the rights to
|
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
8
|
+
so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|