lbkit 0.7.3__tar.gz → 0.7.4__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.
- {lbkit-0.7.3/lbkit.egg-info → lbkit-0.7.4}/PKG-INFO +1 -1
- lbkit-0.7.4/lbkit/__init__.py +2 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/codegen.py +46 -14
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/idf_interface.py +8 -7
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/client.c.mako +1 -1
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/client.h.mako +1 -1
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/public.c.mako +3 -3
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/public.h.mako +1 -1
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/server.c.mako +2 -2
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/server.h.mako +1 -1
- lbkit-0.7.4/lbkit/utils/version.py +41 -0
- {lbkit-0.7.3 → lbkit-0.7.4/lbkit.egg-info}/PKG-INFO +1 -1
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit.egg-info/SOURCES.txt +1 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/test/test_codegen.py +44 -0
- lbkit-0.7.3/lbkit/__init__.py +0 -2
- {lbkit-0.7.3 → lbkit-0.7.4}/AUTHORS +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/LICENSE +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/MANIFEST.in +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/README.md +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/build_conan_parallel.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/ci_robot/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/ci_robot/gitee.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/cli.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/ctype_defination.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/renderer.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/interface.c.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/codegen/template/interface.introspect.xml.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/arg_parser.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/build.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/template/conanbase.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/template/deploy.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/component/test.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/errors.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/helper.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/build_image.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/build_manifest.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/build_prepare.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/build_rootfs.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/config.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/task.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/template/conanfile.py.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/integration/template/rootfs.py.mako +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/lbkit.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/log.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/misc.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/tools.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/utils/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/utils/images/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit/utils/images/emmc.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit.egg-info/dependency_links.txt +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit.egg-info/entry_points.txt +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit.egg-info/requires.txt +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/lbkit.egg-info/top_level.txt +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/setup.cfg +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/setup.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/test/__init__.py +0 -0
- {lbkit-0.7.3 → lbkit-0.7.4}/test/test_helper.py +0 -0
|
@@ -7,6 +7,7 @@ import json
|
|
|
7
7
|
import yaml
|
|
8
8
|
import argparse
|
|
9
9
|
from lbkit.codegen.idf_interface import IdfInterface
|
|
10
|
+
from lbkit.utils.version import Version, X_VER
|
|
10
11
|
|
|
11
12
|
from mako.lookup import TemplateLookup
|
|
12
13
|
from lbkit.log import Logger
|
|
@@ -17,13 +18,36 @@ from lbkit.misc import SmartFormatter
|
|
|
17
18
|
lb_cwd = os.path.split(os.path.realpath(__file__))[0]
|
|
18
19
|
log = Logger("codegen")
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
# 历史自动生成版本号,计划用于用于生成代码稳定性测试
|
|
22
|
+
# TODO: 支持生成代码稳定性测试,确保生成的代码一致性
|
|
23
|
+
history_versions = {
|
|
24
|
+
"5.0": "简化枚举变更在接口间传递时的字符串定义"
|
|
25
|
+
}
|
|
26
|
+
__version__=Version("5.0")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def version_check(ver_str: str):
|
|
30
|
+
ver = Version(ver_str)
|
|
31
|
+
if history_versions.get(ver_str):
|
|
32
|
+
return ver
|
|
33
|
+
found = False
|
|
34
|
+
if ver.minor == X_VER:
|
|
35
|
+
major_str = str(ver.major) + "."
|
|
36
|
+
for v, _ in history_versions.items():
|
|
37
|
+
if v.startswith(major_str):
|
|
38
|
+
found = True
|
|
39
|
+
break
|
|
40
|
+
if not found:
|
|
41
|
+
log.error(f"Unkonw codegen version {ver_str}, supported versions:")
|
|
42
|
+
for ver, msg in history_versions.items():
|
|
43
|
+
log.error(f" {ver}: {msg}")
|
|
44
|
+
raise Exception("Unkonw codegen version get")
|
|
45
|
+
return ver
|
|
21
46
|
|
|
22
47
|
class CodeGen(object):
|
|
23
48
|
def __init__(self, args):
|
|
24
49
|
self.args = args
|
|
25
50
|
self.codegen_version = __version__
|
|
26
|
-
pass
|
|
27
51
|
|
|
28
52
|
def _gen(self, idf_file, directory="."):
|
|
29
53
|
directory = os.path.realpath(directory)
|
|
@@ -32,12 +56,12 @@ class CodeGen(object):
|
|
|
32
56
|
os.makedirs(os.path.join(directory, "client"), exist_ok=True)
|
|
33
57
|
interface = self.get_interface(idf_file)
|
|
34
58
|
out_file = os.path.join(directory, "public", interface.name + ".xml")
|
|
35
|
-
interface.render_dbus_xml("interface.introspect.xml.mako", out_file
|
|
59
|
+
interface.render_dbus_xml("interface.introspect.xml.mako", out_file)
|
|
36
60
|
for code_type in ["server", "client", "public"]:
|
|
37
61
|
out_file = os.path.join(directory, code_type, interface.name + ".h")
|
|
38
|
-
interface.render_c_source(code_type + ".h.mako", out_file
|
|
62
|
+
interface.render_c_source(code_type + ".h.mako", out_file)
|
|
39
63
|
out_file = os.path.join(directory, code_type, interface.name + ".c")
|
|
40
|
-
interface.render_c_source(code_type + ".c.mako", out_file
|
|
64
|
+
interface.render_c_source(code_type + ".c.mako", out_file)
|
|
41
65
|
json_file = os.path.join(directory, "package.yml")
|
|
42
66
|
data = {
|
|
43
67
|
"version": interface.version,
|
|
@@ -55,7 +79,7 @@ class CodeGen(object):
|
|
|
55
79
|
|
|
56
80
|
def get_interface(self, idf_file):
|
|
57
81
|
lookup = TemplateLookup(directories=os.path.join(lb_cwd, "template"))
|
|
58
|
-
return IdfInterface(lookup, idf_file,
|
|
82
|
+
return IdfInterface(lookup, idf_file, self.codegen_version)
|
|
59
83
|
|
|
60
84
|
def run(self):
|
|
61
85
|
"""
|
|
@@ -67,12 +91,16 @@ class CodeGen(object):
|
|
|
67
91
|
prog="lbkit gen",
|
|
68
92
|
formatter_class=SmartFormatter)
|
|
69
93
|
# 默认的自动生成工具版本号为2
|
|
70
|
-
parser.add_argument("-cv", "--codegen_version", help=f'''must less than or equal to {__version__}, default:
|
|
94
|
+
parser.add_argument("-cv", "--codegen_version", help=f'''must less than or equal to {__version__.str}, default: {__version__.str}
|
|
95
|
+
format: major.version
|
|
96
|
+
for example: 1.3、2.4、3.3
|
|
97
|
+
|
|
71
98
|
description of changes:
|
|
72
|
-
|
|
73
|
-
|
|
99
|
+
4.x: compatible with lb_base/0.8.x
|
|
100
|
+
3.x: compatible with lb_base/0.7.x
|
|
101
|
+
2.x: compatible with lb_base/0.6.x
|
|
74
102
|
''',
|
|
75
|
-
type=
|
|
103
|
+
type=str, default=__version__.str)
|
|
76
104
|
parser.add_argument("-d", "--directory", help='generate code directory', default=".")
|
|
77
105
|
group2 = parser.add_argument_group('cdf file', 'Generate code using the specified CDF file')
|
|
78
106
|
group2.add_argument("-c", "--cdf_file", help='component description file, default metadata/package.yml', default=None)
|
|
@@ -86,7 +114,9 @@ class CodeGen(object):
|
|
|
86
114
|
raise ArgException(f"argument -c/--cdf_file: {args.cdf_file} not exist")
|
|
87
115
|
configs = Helper.read_yaml(args.cdf_file, "codegen", [])
|
|
88
116
|
# 为保障兼容,package.yml未指定版本号的,默认使用2,该版本配套lb_base/0.6.0版本,其LBProperty无set/get成员
|
|
89
|
-
|
|
117
|
+
ver_str = Helper.read_yaml(args.cdf_file, "codegen_version", args.codegen_version)
|
|
118
|
+
version_check(ver_str)
|
|
119
|
+
self.codegen_version = Version(ver_str)
|
|
90
120
|
for cfg in configs:
|
|
91
121
|
file = cfg.get("file")
|
|
92
122
|
if file is None:
|
|
@@ -101,15 +131,17 @@ class CodeGen(object):
|
|
|
101
131
|
outdir = cfg.get("outdir", os.getcwd())
|
|
102
132
|
self._gen(file, outdir)
|
|
103
133
|
return
|
|
134
|
+
else:
|
|
135
|
+
version_check(args.codegen_version)
|
|
136
|
+
self.codegen_version = Version(args.codegen_version)
|
|
104
137
|
|
|
105
138
|
intf_file = args.idf_file
|
|
106
139
|
if not intf_file:
|
|
107
140
|
raise ArgException(f"argument error, arguments -c/--cdf_file and -i/--idf_file are not set")
|
|
108
141
|
if not os.path.isfile(intf_file):
|
|
109
142
|
raise ArgException(f"argument -i/--idf_file: {args.idf_file} not exist")
|
|
110
|
-
if
|
|
111
|
-
raise ArgException(f"argument -
|
|
112
|
-
self.codegen_version = args.codegen_version
|
|
143
|
+
if self.codegen_version.bt(__version__.str):
|
|
144
|
+
raise ArgException(f"argument -cv/--codegen_version: validate failed, must less than or equal to {__version__.str}")
|
|
113
145
|
out_dir = os.path.join(os.getcwd(), args.directory)
|
|
114
146
|
if not intf_file.endswith(".yaml"):
|
|
115
147
|
raise ArgException(f"The IDF file ({intf_file}) not endswith .yaml")
|
|
@@ -9,6 +9,7 @@ from lbkit.codegen.ctype_defination import CTYPE_OBJS, RefObjArrayValidator, Ref
|
|
|
9
9
|
from lbkit.misc import load_yml_with_json_schema_validate
|
|
10
10
|
from lbkit.errors import OdfValidateException, LiteBmcException
|
|
11
11
|
from lbkit.helper import SigInvalidException, validate_glib_signature
|
|
12
|
+
from lbkit.utils.version import Version
|
|
12
13
|
|
|
13
14
|
log = Logger("gen_interface")
|
|
14
15
|
|
|
@@ -35,7 +36,7 @@ class IdfInterfaceBase(Renderer):
|
|
|
35
36
|
self.description = None
|
|
36
37
|
self.version = None
|
|
37
38
|
self.alias = None
|
|
38
|
-
self.codegen_version:
|
|
39
|
+
self.codegen_version: Version = None
|
|
39
40
|
|
|
40
41
|
class IdfAnnotation():
|
|
41
42
|
def __init__(self, name, value):
|
|
@@ -930,7 +931,7 @@ class IdfEnumeration(IdfBase):
|
|
|
930
931
|
def odf_schema(self):
|
|
931
932
|
values = []
|
|
932
933
|
for prop in self.values.parameters:
|
|
933
|
-
if self.intf.codegen_version
|
|
934
|
+
if self.intf.codegen_version.lt("5.0"):
|
|
934
935
|
val = self.intf.name + "." + self.name + "." + prop.name
|
|
935
936
|
else:
|
|
936
937
|
val = prop.name
|
|
@@ -1034,7 +1035,7 @@ class IdfDictionary():
|
|
|
1034
1035
|
|
|
1035
1036
|
|
|
1036
1037
|
class IdfInterface(IdfInterfaceBase):
|
|
1037
|
-
def __init__(self, lookup, idf_file, codegen_version):
|
|
1038
|
+
def __init__(self, lookup, idf_file, codegen_version: Version):
|
|
1038
1039
|
if not idf_file.endswith(".yaml") and not idf_file.endswith(".yml"):
|
|
1039
1040
|
raise IDFException(f"IDF file {idf_file} neither endswith .yaml nor endswith .yml")
|
|
1040
1041
|
super().__init__()
|
|
@@ -1238,8 +1239,8 @@ class IdfInterface(IdfInterfaceBase):
|
|
|
1238
1239
|
intf_stru = IdfStructure(self, idf, propety_key="properties")
|
|
1239
1240
|
self.structures[self.alias] = intf_stru
|
|
1240
1241
|
|
|
1241
|
-
def render_dbus_xml(self, template, out_file
|
|
1242
|
-
out = self.render(self.lookup, template, intf=self, codegen_version=codegen_version)
|
|
1242
|
+
def render_dbus_xml(self, template, out_file):
|
|
1243
|
+
out = self.render(self.lookup, template, intf=self, codegen_version=self.codegen_version)
|
|
1243
1244
|
hash = hashlib.sha256()
|
|
1244
1245
|
hash.update(out.encode('utf-8'))
|
|
1245
1246
|
self.introspect_xml_sha256 = hash.hexdigest()
|
|
@@ -1247,9 +1248,9 @@ class IdfInterface(IdfInterfaceBase):
|
|
|
1247
1248
|
with open(out_file, "w") as fd:
|
|
1248
1249
|
fd.write(out)
|
|
1249
1250
|
|
|
1250
|
-
def render_c_source(self, template, out_file
|
|
1251
|
+
def render_c_source(self, template, out_file):
|
|
1251
1252
|
|
|
1252
|
-
out = self.render(self.lookup, template, intf=self, codegen_version=codegen_version)
|
|
1253
|
+
out = self.render(self.lookup, template, intf=self, codegen_version=self.codegen_version)
|
|
1253
1254
|
with open(out_file, "w") as fd:
|
|
1254
1255
|
fd.write(out)
|
|
1255
1256
|
|
|
@@ -192,7 +192,7 @@ ${class_name}_Properties *${class_name}_properties(void)
|
|
|
192
192
|
return &${properties};
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
% if codegen_version
|
|
195
|
+
% if codegen_version.be("4.0"):
|
|
196
196
|
${class_name} ${class_name}_get(const gchar *well_known, const gchar *name)
|
|
197
197
|
{
|
|
198
198
|
return lb_impl._cli_get(&_${class_name}_interface, well_known, name);
|
|
@@ -110,7 +110,7 @@ ${class_name}_Properties *${class_name}_properties(void);
|
|
|
110
110
|
LBInterface *${class_name}_interface(void);
|
|
111
111
|
#define ${hump2underline(class_name).upper()} ${class_name}_interface()
|
|
112
112
|
|
|
113
|
-
% if codegen_version
|
|
113
|
+
% if codegen_version.be("4.0"):
|
|
114
114
|
/* notes: 对象变更加回调函数 */
|
|
115
115
|
typedef void (*${class_name}_on_changed_hook)(${class_name} lb_obj, gpointer user_data);
|
|
116
116
|
/* notes: 属性变更后回调,远程对象或本地对象变更后都会调用 */
|
|
@@ -265,7 +265,7 @@ gboolean _validate_odf_as_struct_${name}_v(yaml_document_t *doc, yaml_node_t *no
|
|
|
265
265
|
|
|
266
266
|
%endfor
|
|
267
267
|
% for name, enum in intf.enumerations.items():
|
|
268
|
-
% if codegen_version
|
|
268
|
+
% if codegen_version.be("5.0"):
|
|
269
269
|
## 枚举序列化和反序列化函数
|
|
270
270
|
static const gchar *_${name}StrMap[] = {
|
|
271
271
|
% for value in enum.values.parameters:
|
|
@@ -888,7 +888,7 @@ static GDBusPropertyInfo ${class_name}_property_${prop.name} =
|
|
|
888
888
|
% endif
|
|
889
889
|
% endfor
|
|
890
890
|
## 只有自动生成工具版本号大于等于3的才会生成get和set方法
|
|
891
|
-
% if codegen_version
|
|
891
|
+
% if codegen_version.be("3.0"):
|
|
892
892
|
% if len(intf.properties):
|
|
893
893
|
static LBBase *_get_real_object(${class_name} object)
|
|
894
894
|
{
|
|
@@ -939,7 +939,7 @@ static ${class_name}_Properties _${class_name}_properties =
|
|
|
939
939
|
.info = NULL, /* load from /usr/share/dbus-1/interfaces/${intf.name} by lb_init */
|
|
940
940
|
% endif
|
|
941
941
|
.offset = offsetof(struct _${class_name}, ${prop.name}),
|
|
942
|
-
% if codegen_version
|
|
942
|
+
% if codegen_version.be("3.0"):
|
|
943
943
|
.flags = ${prop.desc_flags},
|
|
944
944
|
.set = ${class_name}_set_${prop.name}_variant,
|
|
945
945
|
.get = ${class_name}_get_${prop.name}_variant
|
|
@@ -86,7 +86,7 @@ struct _${name} **_load_odf_as_${name}_v(yaml_document_t *doc, yaml_node_t *node
|
|
|
86
86
|
% for name, enum in intf.enumerations.items():
|
|
87
87
|
${name} _load_odf_as_${name}(yaml_document_t *doc, yaml_node_t *node)
|
|
88
88
|
{
|
|
89
|
-
% if codegen_version
|
|
89
|
+
% if codegen_version.be("5.0"):
|
|
90
90
|
g_assert(node->type == YAML_SCALAR_NODE);
|
|
91
91
|
if (node->type != YAML_SCALAR_NODE) {
|
|
92
92
|
return _${name}_Invalid;
|
|
@@ -482,7 +482,7 @@ ${class_name}_Properties *${class_name}_properties(void)
|
|
|
482
482
|
return &${properties};
|
|
483
483
|
}
|
|
484
484
|
|
|
485
|
-
% if codegen_version
|
|
485
|
+
% if codegen_version.be("4.0"):
|
|
486
486
|
${class_name} ${class_name}_get(const gchar *name)
|
|
487
487
|
{
|
|
488
488
|
return lb_impl._get(&_${class_name}_interface, name);
|
|
@@ -56,7 +56,7 @@ ${class_name}_Properties *${class_name}_properties(void);
|
|
|
56
56
|
|
|
57
57
|
#define ${hump2underline(class_name).upper()} ${class_name}_interface()
|
|
58
58
|
|
|
59
|
-
% if codegen_version
|
|
59
|
+
% if codegen_version.be("4.0"):
|
|
60
60
|
/* notes: 对象变更加回调函数 */
|
|
61
61
|
typedef void (*${class_name}_on_changed_hook)(${class_name} lb_obj, gpointer user_data);
|
|
62
62
|
/* notes: 属性变更后回调,远程对象或本地对象变更后都会调用 */
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""环境准备"""
|
|
2
|
+
import re
|
|
3
|
+
|
|
4
|
+
X_VER = 0x7fff_ffff
|
|
5
|
+
|
|
6
|
+
class Version():
|
|
7
|
+
def __init__(self, ver_str):
|
|
8
|
+
if not re.match("^([0-9]|([1-9][0-9]*))\\.(x|[0-9]|([1-9][0-9]*))$", ver_str):
|
|
9
|
+
raise Exception("Version string {ver_str} not match with regex ^([0-9]|([1-9][0-9]*))\\.([0-9]|([1-9][0-9]*))$")
|
|
10
|
+
chunks = ver_str.split(".")
|
|
11
|
+
self.major = int(chunks[0])
|
|
12
|
+
if chunks[1] == "x":
|
|
13
|
+
self.minor = X_VER
|
|
14
|
+
else:
|
|
15
|
+
self.minor = int(chunks[1])
|
|
16
|
+
self.str = ver_str
|
|
17
|
+
|
|
18
|
+
def bt(self, next_ver):
|
|
19
|
+
next = Version(next_ver)
|
|
20
|
+
if self.major > next.major or (self.major == next.major and (self.minor > next.minor and self.minor != X_VER)):
|
|
21
|
+
return True
|
|
22
|
+
return False
|
|
23
|
+
|
|
24
|
+
def be(self, next_ver):
|
|
25
|
+
next = Version(next_ver)
|
|
26
|
+
if self.major > next.major or (self.major == next.major and self.minor >= next.minor):
|
|
27
|
+
return True
|
|
28
|
+
return False
|
|
29
|
+
|
|
30
|
+
def lt(self, next_ver):
|
|
31
|
+
next = Version(next_ver)
|
|
32
|
+
if self.major < next.major or (self.major == next.major and (self.minor < next.minor and next.minor != X_VER and next.minor != X_VER)):
|
|
33
|
+
return True
|
|
34
|
+
return False
|
|
35
|
+
|
|
36
|
+
def le(self, next_ver):
|
|
37
|
+
next = Version(next_ver)
|
|
38
|
+
if self.major < next.major or (self.major == next.major and (self.minor <= next.minor or self.minor == X_VER)):
|
|
39
|
+
return True
|
|
40
|
+
return False
|
|
41
|
+
|
|
@@ -7,6 +7,7 @@ tracemalloc.start()
|
|
|
7
7
|
from lbkit.codegen.idf_interface import IdfInterface
|
|
8
8
|
from lbkit import errors
|
|
9
9
|
from lbkit.codegen.codegen import __version__ as codegen_version
|
|
10
|
+
from lbkit.utils.version import Version
|
|
10
11
|
|
|
11
12
|
schema_dir = os.path.realpath(os.path.join(os.getcwd(), "..", "schema"))
|
|
12
13
|
|
|
@@ -280,5 +281,48 @@ class TestCodeGenClass(unittest.TestCase):
|
|
|
280
281
|
IdfInterface(None, self.tmp_file, codegen_version)
|
|
281
282
|
|
|
282
283
|
|
|
284
|
+
class TestVersionClass(unittest.TestCase):
|
|
285
|
+
def test_version_bt(self):
|
|
286
|
+
self.assertTrue(Version("5.2").bt("5.1"))
|
|
287
|
+
self.assertTrue(Version("6.2").bt("5.1"))
|
|
288
|
+
self.assertTrue(Version("6.2").bt("5.2"))
|
|
289
|
+
self.assertTrue(Version("6.2").bt("5.3"))
|
|
290
|
+
self.assertFalse(Version("5.x").bt("5.1"))
|
|
291
|
+
self.assertFalse(Version("5.x").bt("5.x"))
|
|
292
|
+
self.assertFalse(Version("5.1").bt("5.2"))
|
|
293
|
+
self.assertFalse(Version("5.2").bt("5.2"))
|
|
294
|
+
self.assertFalse(Version("4.2").bt("5.2"))
|
|
295
|
+
self.assertFalse(Version("4.x").bt("5.2"))
|
|
296
|
+
self.assertFalse(Version("4.x").bt("5.x"))
|
|
297
|
+
|
|
298
|
+
def test_version_be(self):
|
|
299
|
+
self.assertTrue(Version("5.2").be("5.2"))
|
|
300
|
+
self.assertTrue(Version("5.x").be("5.3"))
|
|
301
|
+
self.assertTrue(Version("5.x").be("5.x"))
|
|
302
|
+
self.assertFalse(Version("5.1").be("5.x"))
|
|
303
|
+
|
|
304
|
+
def test_version_le(self):
|
|
305
|
+
self.assertFalse(Version("5.2").le("5.1"))
|
|
306
|
+
self.assertFalse(Version("6.2").le("5.1"))
|
|
307
|
+
self.assertFalse(Version("6.2").le("5.2"))
|
|
308
|
+
self.assertFalse(Version("6.2").le("5.3"))
|
|
309
|
+
self.assertTrue(Version("5.x").le("5.1"))
|
|
310
|
+
self.assertTrue(Version("5.x").le("5.x"))
|
|
311
|
+
self.assertTrue(Version("5.1").le("5.2"))
|
|
312
|
+
self.assertTrue(Version("5.2").le("5.2"))
|
|
313
|
+
self.assertTrue(Version("4.2").le("5.2"))
|
|
314
|
+
self.assertTrue(Version("4.x").le("5.2"))
|
|
315
|
+
self.assertTrue(Version("4.x").le("5.x"))
|
|
316
|
+
|
|
317
|
+
def test_version_lt(self):
|
|
318
|
+
self.assertFalse(Version("5.2").lt("5.2"))
|
|
319
|
+
self.assertFalse(Version("5.x").lt("5.3"))
|
|
320
|
+
self.assertFalse(Version("5.x").lt("5.x"))
|
|
321
|
+
self.assertFalse(Version("5.1").lt("5.x"))
|
|
322
|
+
self.assertTrue(Version("5.1").lt("5.2"))
|
|
323
|
+
self.assertTrue(Version("4.3").lt("5.2"))
|
|
324
|
+
self.assertTrue(Version("4.3").lt("5.3"))
|
|
325
|
+
|
|
326
|
+
|
|
283
327
|
if __name__ == "__main__":
|
|
284
328
|
unittest.main()
|
lbkit-0.7.3/lbkit/__init__.py
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|