lbkit 0.8.1__tar.gz → 0.8.3__tar.gz

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.
Files changed (60) hide show
  1. {lbkit-0.8.1/lbkit.egg-info → lbkit-0.8.3}/PKG-INFO +1 -1
  2. lbkit-0.8.3/lbkit/__init__.py +2 -0
  3. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/codegen.py +70 -10
  4. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/ctype_defination.py +352 -74
  5. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/idf_interface.py +70 -7
  6. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/client.c.mako +49 -42
  7. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/client.h.mako +35 -21
  8. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/public.c.mako +122 -46
  9. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/public.h.mako +49 -5
  10. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/server.c.mako +60 -49
  11. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/server.h.mako +22 -13
  12. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/arg_parser.py +1 -1
  13. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/build.py +13 -6
  14. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/template/conanbase.mako +10 -6
  15. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/template/deploy.mako +3 -0
  16. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_manifest.py +2 -2
  17. {lbkit-0.8.1 → lbkit-0.8.3/lbkit.egg-info}/PKG-INFO +1 -1
  18. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/SOURCES.txt +0 -1
  19. {lbkit-0.8.1 → lbkit-0.8.3}/test/test_codegen.py +441 -1
  20. lbkit-0.8.1/lbkit/__init__.py +0 -2
  21. lbkit-0.8.1/lbkit/utils/version.py +0 -38
  22. {lbkit-0.8.1 → lbkit-0.8.3}/AUTHORS +0 -0
  23. {lbkit-0.8.1 → lbkit-0.8.3}/LICENSE +0 -0
  24. {lbkit-0.8.1 → lbkit-0.8.3}/MANIFEST.in +0 -0
  25. {lbkit-0.8.1 → lbkit-0.8.3}/README.md +0 -0
  26. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/build_conan_parallel.py +0 -0
  27. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/ci_robot/__init__.py +0 -0
  28. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/ci_robot/gitee.py +0 -0
  29. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/cli.py +0 -0
  30. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/__init__.py +0 -0
  31. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/renderer.py +0 -0
  32. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/interface.c.mako +0 -0
  33. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/interface.introspect.xml.mako +0 -0
  34. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/__init__.py +0 -0
  35. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/test.py +0 -0
  36. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/errors.py +0 -0
  37. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/helper.py +0 -0
  38. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/__init__.py +0 -0
  39. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_image.py +0 -0
  40. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_prepare.py +0 -0
  41. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_rootfs.py +0 -0
  42. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/config.py +0 -0
  43. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/task.py +0 -0
  44. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/template/conanfile.py.mako +0 -0
  45. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/template/rootfs.py.mako +0 -0
  46. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/lbkit.py +0 -0
  47. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/log.py +0 -0
  48. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/misc.py +0 -0
  49. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/tools.py +0 -0
  50. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/__init__.py +0 -0
  51. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/images/__init__.py +0 -0
  52. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/images/emmc.py +0 -0
  53. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/dependency_links.txt +0 -0
  54. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/entry_points.txt +0 -0
  55. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/requires.txt +0 -0
  56. {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/top_level.txt +0 -0
  57. {lbkit-0.8.1 → lbkit-0.8.3}/setup.cfg +0 -0
  58. {lbkit-0.8.1 → lbkit-0.8.3}/setup.py +0 -0
  59. {lbkit-0.8.1 → lbkit-0.8.3}/test/__init__.py +0 -0
  60. {lbkit-0.8.1 → lbkit-0.8.3}/test/test_helper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: lbkit
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Tools provided by litebmc.com
5
5
  Home-page: https://www.litebmc.com
6
6
  Author: xuhj@litebmc.com
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = '0.8.3'
@@ -8,7 +8,6 @@ import json
8
8
  import yaml
9
9
  import argparse
10
10
  from lbkit.codegen.idf_interface import IdfInterface
11
- from lbkit.utils.version import Version, X_VER
12
11
 
13
12
  from mako.lookup import TemplateLookup
14
13
  from lbkit.log import Logger
@@ -21,16 +20,55 @@ log = Logger("codegen")
21
20
 
22
21
 
23
22
  class CodeGenHistory():
24
- def __init__(self, lb_base: str, description: str):
23
+ def __init__(self, lb_base: str, description: str, lb_base_compatible_required: str):
25
24
  self.lb_base = lb_base
26
25
  self.description = description
26
+ # lb_base兼容性配置项
27
+ self.lb_base_compatible_required = lb_base_compatible_required
28
+
29
+
30
+ class Version():
31
+ def __init__(self, ver_str):
32
+ if not re.match("^([0-9]|([1-9][0-9]*))\\.([0-9]|([1-9][0-9]*))$", ver_str):
33
+ raise Exception("Version string {ver_str} not match with regex ^([0-9]|([1-9][0-9]*))\\.([0-9]|([1-9][0-9]*))$")
34
+ self.info: CodeGenHistory = history_versions.get(ver_str)
35
+ chunks = ver_str.split(".")
36
+ self.major = int(chunks[0])
37
+ self.minor = int(chunks[1])
38
+ self.str = str(self.major) + "." + str(self.minor)
39
+
40
+ def bt(self, next_ver):
41
+ next = Version(next_ver)
42
+ if self.major > next.major or (self.major == next.major and self.minor > next.minor):
43
+ return True
44
+ return False
45
+
46
+ def be(self, next_ver):
47
+ next = Version(next_ver)
48
+ if self.major > next.major or (self.major == next.major and self.minor >= next.minor):
49
+ return True
50
+ return False
51
+
52
+ def lt(self, next_ver):
53
+ next = Version(next_ver)
54
+ if self.major < next.major or (self.major == next.major and self.minor < next.minor):
55
+ return True
56
+ return False
57
+
58
+ def le(self, next_ver):
59
+ next = Version(next_ver)
60
+ if self.major < next.major or (self.major == next.major and self.minor <= next.minor):
61
+ return True
62
+ return False
27
63
 
28
64
  # 历史自动生成版本号,计划用于用于生成代码稳定性测试
29
65
  # TODO: 支持生成代码稳定性测试,确保生成的代码一致性
30
66
  history_versions = {
31
- "5.0": CodeGenHistory("lb_base/[>=0.8.1 <0.9.0]", "简化接口类名定义;简化枚举变量在接口间传递时的字符串定义")
67
+ "5.0": CodeGenHistory("lb_base/[>=0.8.1 <0.9.0]", "简化接口类名定义;简化枚举变量在接口间传递时的字符串定义", "0"),
68
+ "5.1": CodeGenHistory("lb_base/[>=0.8.3 <0.9.0]", "方法和信号添加保留字段用于功能扩展,同时设置请求和响应为空标志位", "8002"),
69
+ "5.2": CodeGenHistory("lb_base/[>=0.8.4 <0.9.0]", "支持校验数值边界、字符串正则以及数组匹配等规则", "8004"),
32
70
  }
33
- __version__=Version("5.0")
71
+ __version__=Version("5.1")
34
72
 
35
73
 
36
74
  def version_check(ver_str: str):
@@ -44,10 +82,17 @@ def version_check(ver_str: str):
44
82
  log.error(f" {ver}: {msg}")
45
83
  raise Exception(f"Can't found the valid version for {ver_str}")
46
84
 
85
+ def codegen_version_max():
86
+ max_v = __version__
87
+ for ver_str, _ in history_versions.items():
88
+ next_ver = Version(ver_str)
89
+ if next_ver.bt(max_v.str):
90
+ max_v = next_ver
91
+ return max_v.str
47
92
 
48
93
  def codegen_version_arg(parser: argparse.ArgumentParser, default=__version__.str, short_arg="-cv", full_arg="--codegen_version"):
49
94
  # 默认的自动生成工具版本号为2
50
- help=f'''must less than or equal to {__version__.str}, default: {default}
95
+ help=f'''must less than or equal to {codegen_version_max()}, default: {default}
51
96
 
52
97
  codegen versions:
53
98
  '''
@@ -60,6 +105,7 @@ class CodeGen(object):
60
105
  def __init__(self, args):
61
106
  self.args = args
62
107
  self.codegen_version = __version__
108
+ self.log_level = "NOTSET"
63
109
 
64
110
  def _gen(self, idf_file, directory=".", code_type="all"):
65
111
  directory = os.path.realpath(directory)
@@ -67,6 +113,7 @@ class CodeGen(object):
67
113
  code_types = ["server", "client", "public"]
68
114
  if code_type != "all":
69
115
  code_types = [code_type]
116
+ log.info(f"Codegen version: {self.codegen_version.str}")
70
117
  for ct in code_types:
71
118
  os.makedirs(os.path.join(directory, ct), exist_ok=True)
72
119
  out_file = os.path.join(directory, ct, interface.name + ".xml")
@@ -92,7 +139,7 @@ class CodeGen(object):
92
139
 
93
140
  def get_interface(self, idf_file):
94
141
  lookup = TemplateLookup(directories=os.path.join(lb_cwd, "template"))
95
- return IdfInterface(lookup, idf_file, self.codegen_version)
142
+ return IdfInterface(lookup, idf_file, self.codegen_version, self.log_level)
96
143
 
97
144
  def run(self):
98
145
  """
@@ -105,6 +152,11 @@ class CodeGen(object):
105
152
  formatter_class=SmartFormatter)
106
153
  codegen_version_arg(parser)
107
154
  parser.add_argument("-d", "--directory", help='generate code directory', default=".")
155
+ parser.add_argument("-l", "--log_level", help='show log level',
156
+ choices=[
157
+ "CRITICAL", "FATAL", "ERROR", "WARN",
158
+ "WARNING", "INFO", "DEBUG", "NOTSET",
159
+ ], default=None)
108
160
  parser.add_argument("-t", "--codetype", help='code type, default: all', default="all", choices=["public", "server", "client", "all"])
109
161
  group2 = parser.add_argument_group('cdf file', 'Generate code using the specified CDF file')
110
162
  group2.add_argument("-c", "--cdf_file", help='component description file, default metadata/package.yml', default=None)
@@ -112,13 +164,18 @@ class CodeGen(object):
112
164
  group1.add_argument("-i", "--idf_file", help='A IDF file to be processed e.g.: com.litebmc.Upgrade.xml', default=None)
113
165
 
114
166
  args = parser.parse_args(self.args)
167
+ if args.log_level:
168
+ self.log_level = args.log_level
169
+ log.setLevel(self.log_level)
115
170
 
116
171
  if args.cdf_file:
117
172
  if not os.path.isfile(args.cdf_file):
118
173
  raise ArgException(f"argument -c/--cdf_file: {args.cdf_file} not exist")
119
174
  configs = Helper.read_yaml(args.cdf_file, "codegen", [])
120
175
  # 为保障兼容,package.yml未指定版本号的,默认使用2,该版本配套lb_base/0.6.0版本,其LBProperty无set/get成员
121
- ver_str = Helper.read_yaml(args.cdf_file, "codegen_version", args.codegen_version)
176
+ ver_str = os.environ.get("CODEGEN_VERSION")
177
+ if ver_str is None:
178
+ ver_str = Helper.read_yaml(args.cdf_file, "codegen_version", args.codegen_version)
122
179
  version_check(ver_str)
123
180
  self.codegen_version = Version(ver_str)
124
181
  for cfg in configs:
@@ -136,15 +193,18 @@ class CodeGen(object):
136
193
  self._gen(file, outdir)
137
194
  return
138
195
  else:
139
- version_check(args.codegen_version)
140
- self.codegen_version = Version(args.codegen_version)
196
+ ver_str = os.environ.get("CODEGEN_VERSION")
197
+ if ver_str is None:
198
+ ver_str = args.codegen_version
199
+ version_check(ver_str)
200
+ self.codegen_version = Version(ver_str)
141
201
 
142
202
  intf_file = args.idf_file
143
203
  if not intf_file:
144
204
  raise ArgException(f"argument error, arguments -c/--cdf_file and -i/--idf_file are not set")
145
205
  if not os.path.isfile(intf_file):
146
206
  raise ArgException(f"argument -i/--idf_file: {args.idf_file} not exist")
147
- if self.codegen_version.bt(__version__.str):
207
+ if self.codegen_version.bt(codegen_version_max()):
148
208
  raise ArgException(f"argument -cv/--codegen_version: validate failed, must less than or equal to {__version__.str}")
149
209
  out_dir = os.path.join(os.getcwd(), args.directory)
150
210
  if not intf_file.endswith(".yaml"):