buildz 0.6.10__tar.gz → 0.6.11__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.
- {buildz-0.6.10/buildz.egg-info → buildz-0.6.11}/PKG-INFO +6 -1
- {buildz-0.6.10 → buildz-0.6.11}/README.md +5 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/__init__.py +1 -1
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/init.py +1 -1
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/base.py +2 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/conf.py +13 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/confs.py +29 -4
- buildz-0.6.11/buildz/ioc/ioc/decorator.py +30 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/base.py +16 -1
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deals.js +5 -0
- buildz-0.6.11/buildz/ioc/ioc_deal/conf/refs_lists.js +31 -0
- buildz-0.6.11/buildz/ioc/ioc_deal/init.py +3 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/obj.py +146 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ref.py +2 -1
- buildz-0.6.11/buildz/ioc/ioc_deal/refs.py +62 -0
- buildz-0.6.11/buildz/ioc/wrap.py +26 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/pyz.py +2 -1
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tools.py +1 -1
- {buildz-0.6.10 → buildz-0.6.11/buildz.egg-info}/PKG-INFO +6 -1
- {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/SOURCES.txt +5 -0
- {buildz-0.6.10 → buildz-0.6.11}/setup.py +1 -1
- {buildz-0.6.10 → buildz-0.6.11}/LICENSE +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/MANIFEST.in +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/__init__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/__main__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/argx.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/cmd.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/__main__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/basez.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/install.txt +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/run.conf +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/db/runz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/test.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/__init__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/fio.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/single.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/var.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/code.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/file.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/mapz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/read.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/readz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/stack.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/write.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.10 → buildz-0.6.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: buildz
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.11
|
4
4
|
Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
|
5
5
|
Home-page: https://github.com/buildCodeZ/buildz
|
6
6
|
Author: Zzz
|
@@ -32,6 +32,11 @@ License-File: LICENSE
|
|
32
32
|
|
33
33
|
持续更新中。。。
|
34
34
|
|
35
|
+
2024/09/09
|
36
|
+
ioc:
|
37
|
+
加修饰器
|
38
|
+
加配置refs
|
39
|
+
|
35
40
|
PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销
|
36
41
|
|
37
42
|
1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
|
@@ -19,6 +19,11 @@
|
|
19
19
|
|
20
20
|
持续更新中。。。
|
21
21
|
|
22
|
+
2024/09/09
|
23
|
+
ioc:
|
24
|
+
加修饰器
|
25
|
+
加配置refs
|
26
|
+
|
22
27
|
PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销
|
23
28
|
|
24
29
|
1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
|
@@ -174,6 +174,17 @@ class Conf(Base):
|
|
174
174
|
return obj
|
175
175
|
obj = self.confs.get_data(id, self.id, src=src, info = info)
|
176
176
|
return obj
|
177
|
+
def full_ids(self, local = True):
|
178
|
+
rst = []
|
179
|
+
arr = [self.datas]
|
180
|
+
if local:
|
181
|
+
arr.append(self.locals)
|
182
|
+
for datas in arr:
|
183
|
+
for id in datas:
|
184
|
+
gid = self.confs.gid(self.namespace, id)
|
185
|
+
item = [gid, id, self]
|
186
|
+
rst.append(item)
|
187
|
+
return rst
|
177
188
|
def get(self, *args, **maps):
|
178
189
|
return self.get_obj(*args, **maps)
|
179
190
|
def default_type(self):
|
@@ -182,6 +193,8 @@ class Conf(Base):
|
|
182
193
|
return self._default_type
|
183
194
|
def get_var(self, key, i = -1):
|
184
195
|
return self.confs.get_var(key, i)
|
196
|
+
def var_keys(self):
|
197
|
+
return self.confs.var_keys()
|
185
198
|
def push_var(self, key, val):
|
186
199
|
return self.confs.push_var(key,val)
|
187
200
|
def has_var(self, key):
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#coding=utf-8
|
2
2
|
from buildz import xf, pyz
|
3
|
+
from .decorator import decorator
|
3
4
|
from buildz.xf import g as xg
|
4
5
|
from buildz import argx
|
5
6
|
import json
|
@@ -253,12 +254,16 @@ class Confs(Base):
|
|
253
254
|
self.fcs = {}
|
254
255
|
if 'args' in self.env_orders:
|
255
256
|
self.build_env_args()
|
257
|
+
_id = self.add({})
|
258
|
+
self.empty = self.confs[_id]
|
256
259
|
def set_fc(self, key, fc):
|
257
260
|
self.fcs[key] = fc
|
258
261
|
def get_fc(self, key):
|
259
262
|
if key not in self.fcs:
|
260
263
|
return None
|
261
264
|
return self.fcs[key]
|
265
|
+
def var_keys(self):
|
266
|
+
return self.vars.keys()
|
262
267
|
def get_var(self, key, i=-1):
|
263
268
|
if not self.has_var(key):
|
264
269
|
return None, False
|
@@ -282,6 +287,8 @@ class Confs(Base):
|
|
282
287
|
if not self.has_var(key):
|
283
288
|
return
|
284
289
|
self.vars[key].pop(-1)
|
290
|
+
if len(self.vars[key])==0:
|
291
|
+
del self.vars[key]
|
285
292
|
def do_init(self):
|
286
293
|
if self.mark_init:
|
287
294
|
return
|
@@ -347,6 +354,12 @@ class Confs(Base):
|
|
347
354
|
print(f'error in loads: {fp}')
|
348
355
|
raise
|
349
356
|
#return self.add(conf)
|
357
|
+
def add_decorator(self):
|
358
|
+
conf = decorator()
|
359
|
+
#print(f"[TESTZ] CONFS add decorator(): {conf}")
|
360
|
+
return self.add(conf)
|
361
|
+
def add_wrap(self):
|
362
|
+
return self.add_decorator()
|
350
363
|
def adds(self, confs):
|
351
364
|
for conf in confs:
|
352
365
|
self.add(conf)
|
@@ -378,6 +391,7 @@ class Confs(Base):
|
|
378
391
|
self.deals[k] = obj.deals[k]
|
379
392
|
self.update_maps(self.envs, obj.envs)
|
380
393
|
self.mark_init = False
|
394
|
+
return obj.id
|
381
395
|
def get(self, *args, **maps):
|
382
396
|
return self.get_obj(*args, **maps)
|
383
397
|
def remove(self, *a,**b):
|
@@ -389,15 +403,18 @@ class Confs(Base):
|
|
389
403
|
self.do_init()
|
390
404
|
if type(id) == EncapeData:
|
391
405
|
conf = id
|
406
|
+
elif type(id) in [list, dict]:
|
407
|
+
conf = EncapeData(id, conf=self.empty, confs=self, info=info, src=src, type= self.get_data_type(id))
|
392
408
|
else:
|
393
409
|
conf = self.get_data(id, sid, src=src, info = info)
|
394
410
|
if conf is None:
|
395
411
|
raise IdNotFoundError(f"confs: can't find conf of {id}")
|
396
412
|
return None
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
413
|
+
#print(f"[TESTZ] confs.get: {conf.data}, conf: {conf.conf}, type: {conf.type}")
|
414
|
+
# if conf.conf is None:
|
415
|
+
# if remove:
|
416
|
+
# return None
|
417
|
+
# return conf()
|
401
418
|
deal = self.get_deal(conf.type, sid)
|
402
419
|
if deal is None:
|
403
420
|
raise IOCError(f"confs: can't find deal of {id}, type = {conf.type}")
|
@@ -420,6 +437,14 @@ class Confs(Base):
|
|
420
437
|
if type in self.deals:
|
421
438
|
return self.deals[type]
|
422
439
|
return None
|
440
|
+
def full_ids(self, src=None):
|
441
|
+
sid = None
|
442
|
+
if src is not None:
|
443
|
+
sid = src.id
|
444
|
+
rst = []
|
445
|
+
for _id, conf in self.confs.items():
|
446
|
+
rst+=conf.full_ids(sid==conf.id)
|
447
|
+
return rst
|
423
448
|
def get_confs(self, ids):
|
424
449
|
"""
|
425
450
|
根据ids查所有对应的配置文件列表
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
from buildz.base import Base
|
3
|
+
class Decorator(Base):
|
4
|
+
def init(self):
|
5
|
+
self.conf = {}
|
6
|
+
self.fcs = {}
|
7
|
+
def regist(self, key, fc):
|
8
|
+
self.fcs[key] = fc
|
9
|
+
def add(self, tag, data):
|
10
|
+
if tag not in self.conf:
|
11
|
+
self.conf[tag]=[]
|
12
|
+
self.conf[tag].append(data)
|
13
|
+
def set(self, tag, key, val):
|
14
|
+
if tag not in self.conf:
|
15
|
+
self.conf[tag]={}
|
16
|
+
self.conf[tag][key]=val
|
17
|
+
def add_datas(self, item):
|
18
|
+
return self.add("datas", item)
|
19
|
+
def set_envs(self, key, val):
|
20
|
+
return self.set("env", key, val)
|
21
|
+
def add_inits(self, val):
|
22
|
+
return self.add("inits", val)
|
23
|
+
def add_locals(self, item):
|
24
|
+
return self.add("locals", item)
|
25
|
+
def call(self):
|
26
|
+
return self.conf
|
27
|
+
|
28
|
+
pass
|
29
|
+
|
30
|
+
decorator = Decorator()
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from ..ioc.base import Base, EncapeData
|
4
4
|
from buildz import xf
|
5
|
+
from ..ioc.decorator import decorator
|
5
6
|
import os
|
6
7
|
dp = os.path.dirname(__file__)
|
7
8
|
join = os.path.join
|
@@ -211,4 +212,18 @@ class FormatDeal(BaseDeal):
|
|
211
212
|
# return None
|
212
213
|
# return deal(edata)
|
213
214
|
|
214
|
-
pass
|
215
|
+
pass
|
216
|
+
|
217
|
+
class Order(Base):
|
218
|
+
def init(self, *fcs, reverse=False):
|
219
|
+
self.fcs = fcs
|
220
|
+
if reverse:
|
221
|
+
self.fcs.reverse()
|
222
|
+
self.reverse = reverse
|
223
|
+
def deal(self, cls):
|
224
|
+
for fc in self.fcs:
|
225
|
+
cls = fc(cls)
|
226
|
+
return cls
|
227
|
+
|
228
|
+
pass
|
229
|
+
decorator.regist("orders", Order)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// [[id, type], key]
|
2
|
+
// [type, key]
|
3
|
+
{
|
4
|
+
sort: 1
|
5
|
+
data: [
|
6
|
+
{
|
7
|
+
nullable: 0,
|
8
|
+
out: 1,
|
9
|
+
conf: {
|
10
|
+
//sort: -1,
|
11
|
+
data:[
|
12
|
+
{key: type, default: null}
|
13
|
+
{key: id, default: null},
|
14
|
+
]
|
15
|
+
}
|
16
|
+
},
|
17
|
+
{
|
18
|
+
nullable: 0,
|
19
|
+
key: key
|
20
|
+
},
|
21
|
+
{
|
22
|
+
nullable: 1,
|
23
|
+
key: info
|
24
|
+
conf: {
|
25
|
+
data: [
|
26
|
+
{key: lid, default: null}
|
27
|
+
]
|
28
|
+
}
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
@@ -1,8 +1,10 @@
|
|
1
1
|
#
|
2
2
|
from ..ioc.base import Base, EncapeData,IOCError
|
3
3
|
from ..ioc.single import Single
|
4
|
+
from ..ioc.decorator import decorator
|
4
5
|
from .base import FormatData,FormatDeal
|
5
6
|
from buildz import xf, pyz
|
7
|
+
from buildz import Base as Basez
|
6
8
|
import os
|
7
9
|
dp = os.path.dirname(__file__)
|
8
10
|
join = os.path.join
|
@@ -193,3 +195,147 @@ class ObjectDeal(FormatDeal):
|
|
193
195
|
return None
|
194
196
|
|
195
197
|
pass
|
198
|
+
def update_set(maps):
|
199
|
+
rst = {}
|
200
|
+
for k,v in maps.items():
|
201
|
+
if type(v)==str:
|
202
|
+
v = xf.loads(v)
|
203
|
+
rst[k] = v
|
204
|
+
return rst
|
205
|
+
|
206
|
+
pass
|
207
|
+
def update_list(arr):
|
208
|
+
rst = []
|
209
|
+
for v in arr:
|
210
|
+
if type(v)==str:
|
211
|
+
v = xf.loads(v)
|
212
|
+
rst.append(v)
|
213
|
+
return rst
|
214
|
+
|
215
|
+
pass
|
216
|
+
|
217
|
+
class IOCObjectAdd_(Basez):
|
218
|
+
def init(self, key, *arr):
|
219
|
+
_arr = update_list(arr)
|
220
|
+
self.key = key
|
221
|
+
self._arr = _arr
|
222
|
+
def call(self, cls):
|
223
|
+
rst = {}
|
224
|
+
if hasattr(cls, "_buildz_ioc_conf"):
|
225
|
+
rst = cls._buildz_ioc_conf
|
226
|
+
_arr = []
|
227
|
+
if self.key in rst:
|
228
|
+
_arr = rst[self.key]
|
229
|
+
_arr+=self._arr
|
230
|
+
rst[self.key] = _arr
|
231
|
+
cls._buildz_ioc_conf = rst
|
232
|
+
return cls
|
233
|
+
|
234
|
+
pass
|
235
|
+
class IOCObjectArgs(IOCObjectAdd_):
|
236
|
+
def init(self, *arr):
|
237
|
+
super().init("args", *arr)
|
238
|
+
|
239
|
+
pass
|
240
|
+
class IOCObjectMCall(IOCObjectAdd_):
|
241
|
+
def init(self, *arr):
|
242
|
+
# function, args, maps
|
243
|
+
ks = "mcall,args,maps".split(",")
|
244
|
+
_arr = []
|
245
|
+
for item in arr:
|
246
|
+
if type(item)==str:
|
247
|
+
item = xf.loads(item)
|
248
|
+
if type(item)==list:
|
249
|
+
item = update_list(item)
|
250
|
+
l = min(len(ks), len(item))
|
251
|
+
_tmp = {}
|
252
|
+
for i in range(l):
|
253
|
+
_tmp[ks[i]] = item[i]
|
254
|
+
item = _tmp
|
255
|
+
else:
|
256
|
+
item = update_set(item)
|
257
|
+
item['source'] = None
|
258
|
+
item['type'] = "mcall"
|
259
|
+
_arr.append(item)
|
260
|
+
super().init("mcalls", *_arr)
|
261
|
+
|
262
|
+
pass
|
263
|
+
class IOCObjectSet_(Basez):
|
264
|
+
def init(self, key, **maps):
|
265
|
+
_maps = update_set(maps)
|
266
|
+
self._maps = {key:_maps}
|
267
|
+
def call(self, cls):
|
268
|
+
rst = {}
|
269
|
+
if hasattr(cls, "_buildz_ioc_conf"):
|
270
|
+
rst = cls._buildz_ioc_conf
|
271
|
+
xf.fill(self._maps, rst)
|
272
|
+
cls._buildz_ioc_conf = rst
|
273
|
+
return cls
|
274
|
+
|
275
|
+
pass
|
276
|
+
class IOCObjectSet(IOCObjectSet_):
|
277
|
+
def init(self, **maps):
|
278
|
+
super().init("sets", **maps)
|
279
|
+
|
280
|
+
pass
|
281
|
+
class IOCObjectMap(IOCObjectSet_):
|
282
|
+
def init(self, **maps):
|
283
|
+
super().init("maps", **maps)
|
284
|
+
|
285
|
+
pass
|
286
|
+
class IOCObject(Basez):
|
287
|
+
KEYS = "id,args,maps,call,prev_call,single,remove,sets,after_remove".split(",")
|
288
|
+
SET_KEYS = "maps,sets".split(",")
|
289
|
+
def init(self, **maps):
|
290
|
+
rst = update_set(maps)
|
291
|
+
for key in self.SET_KEYS:
|
292
|
+
if key not in maps:
|
293
|
+
continue
|
294
|
+
val = maps[key]
|
295
|
+
for _k, _v in val.items():
|
296
|
+
if type(_v)==str:
|
297
|
+
_v = xf.loads(_v)
|
298
|
+
val[_k] = _v
|
299
|
+
self._maps = rst
|
300
|
+
def _set(self, key, **maps):
|
301
|
+
sets = {}
|
302
|
+
if key in self._maps:
|
303
|
+
sets = self._maps[key]
|
304
|
+
rst = update_set(maps)
|
305
|
+
xf.fill(sets, rst)
|
306
|
+
self._maps[key] = rst
|
307
|
+
return self
|
308
|
+
def map(self, **maps):
|
309
|
+
return self._set("maps", **maps)
|
310
|
+
def maps(self, **maps):
|
311
|
+
return self.map(**maps)
|
312
|
+
def set(self, **maps):
|
313
|
+
return self._set("sets", **maps)
|
314
|
+
def sets(self, **maps):
|
315
|
+
return self.set(**maps)
|
316
|
+
def call(self, cls):
|
317
|
+
src = cls.__module__+"."+cls.__name__
|
318
|
+
conf = {}
|
319
|
+
if hasattr(cls, "_buildz_ioc_conf"):
|
320
|
+
conf = cls._buildz_ioc_conf
|
321
|
+
xf.fill(self._maps, conf)
|
322
|
+
conf['source'] = src
|
323
|
+
conf['type'] = 'object'
|
324
|
+
if 'mcalls' in conf and 'call' not in conf:
|
325
|
+
conf['call'] = {'type': "calls", 'calls': conf['mcalls']}
|
326
|
+
cls._buildz_ioc_conf = conf
|
327
|
+
decorator.add_datas(conf)
|
328
|
+
return cls
|
329
|
+
|
330
|
+
pass
|
331
|
+
|
332
|
+
#decorator.regist("IOCObject", IOCObject)
|
333
|
+
decorator.regist("obj", IOCObject)
|
334
|
+
decorator.regist("object", IOCObject)
|
335
|
+
decorator.regist("obj_set", IOCObjectSet)
|
336
|
+
decorator.regist("obj_map", IOCObjectMap)
|
337
|
+
decorator.regist("obj_arg", IOCObjectArgs)
|
338
|
+
decorator.regist("obj_mcall", IOCObjectMCall)
|
339
|
+
decorator.regist("obj_sets", IOCObjectSet)
|
340
|
+
decorator.regist("obj_maps", IOCObjectMap)
|
341
|
+
decorator.regist("obj_args", IOCObjectArgs)
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
from ..ioc.base import Base, EncapeData, IdNotFoundError
|
3
|
+
from .base import FormatData,FormatDeal
|
4
|
+
from buildz import xf, pyz
|
5
|
+
import os
|
6
|
+
dp = os.path.dirname(__file__)
|
7
|
+
join = os.path.join
|
8
|
+
import re
|
9
|
+
class RefsDeal(FormatDeal):
|
10
|
+
"""
|
11
|
+
引用refs,返回的是一个列表,长度可能为0:
|
12
|
+
{
|
13
|
+
id: id
|
14
|
+
type: refs
|
15
|
+
refs|key: 引导数据id正则匹配表达式
|
16
|
+
info: item_conf, 额外的引用信息, 默认null
|
17
|
+
}
|
18
|
+
简写:
|
19
|
+
[[id, refs], key, info]
|
20
|
+
极简:
|
21
|
+
[refs, key]
|
22
|
+
例:
|
23
|
+
[refs, obj.test] // 数据项"obj.test"的引用
|
24
|
+
"""
|
25
|
+
def init(self, fp_lists=None, fp_defaults=None):
|
26
|
+
super().init("RefsDeal", fp_lists, fp_defaults, join(dp, "conf", "refs_lists.js"), None)
|
27
|
+
def match(self, key, pt):
|
28
|
+
rst = len(re.findall(pt, key))>0
|
29
|
+
# if rst:
|
30
|
+
# print(f"[TESTZ] refs match: {key} in {pt}")
|
31
|
+
# else:
|
32
|
+
# print(f"[TESTZ] refs NOT match: {key} in {pt}")
|
33
|
+
return rst
|
34
|
+
def deal(self, edata:EncapeData):
|
35
|
+
data = edata.data
|
36
|
+
data = self.fill(data)
|
37
|
+
pt = xf.get_first(data, 'refs', 'key')
|
38
|
+
info = xf.g(data, info=None)
|
39
|
+
if info is not None and type(info)==dict:
|
40
|
+
#info = {k:self.get_obj(info, edata.conf, src = edata.src) for k in info}
|
41
|
+
info = {'type':'map', 'data':info}
|
42
|
+
info = self.get_obj(info, edata.conf, src = edata.src)
|
43
|
+
else:
|
44
|
+
info = {}
|
45
|
+
_info = edata.info
|
46
|
+
if type(_info)==dict:
|
47
|
+
xf.deep_update(info, _info, 1)
|
48
|
+
vars = edata.conf.var_keys()
|
49
|
+
vars = [key for key in vars if self.match(key, pt)]
|
50
|
+
rst = [edata.conf.get_var(key)[0] for key in vars]
|
51
|
+
ids = edata.confs.full_ids(edata.conf)
|
52
|
+
ids = [obj for obj in ids if self.match(obj[0], pt) or self.match(obj[1], pt)]
|
53
|
+
objs = []
|
54
|
+
for obj in ids:
|
55
|
+
#print(f"[TESTZ] REFS get: {obj[2]}.get({obj[1]}, src={edata.src})")
|
56
|
+
_obj = obj[2].get(obj[1], info = info, src = edata.src)
|
57
|
+
objs.append(_obj)
|
58
|
+
#objs = [obj[2].get(obj[1], info = info, src = edata.src) for obj in ids]
|
59
|
+
rst+=objs
|
60
|
+
return rst
|
61
|
+
|
62
|
+
pass
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
from .ioc.decorator import decorator
|
3
|
+
from .ioc_deal import init
|
4
|
+
locals().update(decorator.fcs)
|
5
|
+
from buildz import fz
|
6
|
+
import os
|
7
|
+
def pkg(fp):
|
8
|
+
r = fp.rfind(".")
|
9
|
+
if r>0:
|
10
|
+
fp = fp[:r]
|
11
|
+
fp = fp.replace("\\", "/")
|
12
|
+
fp = fp.replace("//", "/")
|
13
|
+
fp = fp.replace("/", ".")
|
14
|
+
while len(fp)>0 and fp[0]==".":
|
15
|
+
fp = fp[1:]
|
16
|
+
__import__(fp)
|
17
|
+
|
18
|
+
pass
|
19
|
+
def imports(dp, pts, pfx=""):
|
20
|
+
dp = os.path.abspath(dp)
|
21
|
+
fps = fz.search(dp, pts)
|
22
|
+
fps = [pfx+"/"+fp[len(dp):] for fp in fps]
|
23
|
+
for fp in fps:
|
24
|
+
pkg(fp)
|
25
|
+
|
26
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: buildz
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.11
|
4
4
|
Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
|
5
5
|
Home-page: https://github.com/buildCodeZ/buildz
|
6
6
|
Author: Zzz
|
@@ -32,6 +32,11 @@ License-File: LICENSE
|
|
32
32
|
|
33
33
|
持续更新中。。。
|
34
34
|
|
35
|
+
2024/09/09
|
36
|
+
ioc:
|
37
|
+
加修饰器
|
38
|
+
加配置refs
|
39
|
+
|
35
40
|
PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销
|
36
41
|
|
37
42
|
1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
|
@@ -51,9 +51,11 @@ buildz/fz/lsf.py
|
|
51
51
|
buildz/ioc/__init__.py
|
52
52
|
buildz/ioc/base.py
|
53
53
|
buildz/ioc/init.py
|
54
|
+
buildz/ioc/wrap.py
|
54
55
|
buildz/ioc/ioc/base.py
|
55
56
|
buildz/ioc/ioc/conf.py
|
56
57
|
buildz/ioc/ioc/confs.py
|
58
|
+
buildz/ioc/ioc/decorator.py
|
57
59
|
buildz/ioc/ioc/single.py
|
58
60
|
buildz/ioc/ioc_deal/base.py
|
59
61
|
buildz/ioc/ioc_deal/branch.py
|
@@ -62,6 +64,7 @@ buildz/ioc/ioc_deal/calls.py
|
|
62
64
|
buildz/ioc/ioc_deal/deal.py
|
63
65
|
buildz/ioc/ioc_deal/demo.py
|
64
66
|
buildz/ioc/ioc_deal/env.py
|
67
|
+
buildz/ioc/ioc_deal/init.py
|
65
68
|
buildz/ioc/ioc_deal/ioc.py
|
66
69
|
buildz/ioc/ioc_deal/iocf.py
|
67
70
|
buildz/ioc/ioc_deal/join.py
|
@@ -71,6 +74,7 @@ buildz/ioc/ioc_deal/mcall.py
|
|
71
74
|
buildz/ioc/ioc_deal/obj.py
|
72
75
|
buildz/ioc/ioc_deal/ovar.py
|
73
76
|
buildz/ioc/ioc_deal/ref.py
|
77
|
+
buildz/ioc/ioc_deal/refs.py
|
74
78
|
buildz/ioc/ioc_deal/val.py
|
75
79
|
buildz/ioc/ioc_deal/var.py
|
76
80
|
buildz/ioc/ioc_deal/xfile.py
|
@@ -95,6 +99,7 @@ buildz/ioc/ioc_deal/conf/obj_lists.js
|
|
95
99
|
buildz/ioc/ioc_deal/conf/obj_set_lists.js
|
96
100
|
buildz/ioc/ioc_deal/conf/ovar_lists.js
|
97
101
|
buildz/ioc/ioc_deal/conf/ref_lists.js
|
102
|
+
buildz/ioc/ioc_deal/conf/refs_lists.js
|
98
103
|
buildz/ioc/ioc_deal/conf/var_lists.js
|
99
104
|
buildz/ioc/ioc_deal/conf/xfile_defaults.js
|
100
105
|
buildz/ioc/ioc_deal/conf/xfile_lists.js
|
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
|