buildz 0.6.9__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.
Files changed (173) hide show
  1. {buildz-0.6.9/buildz.egg-info → buildz-0.6.11}/PKG-INFO +6 -1
  2. {buildz-0.6.9 → buildz-0.6.11}/README.md +5 -0
  3. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/__init__.py +1 -1
  4. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/init.py +1 -1
  5. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc/base.py +2 -0
  6. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc/conf.py +13 -0
  7. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc/confs.py +46 -4
  8. buildz-0.6.11/buildz/ioc/ioc/decorator.py +30 -0
  9. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/base.py +16 -1
  10. buildz-0.6.11/buildz/ioc/ioc_deal/branch.py +47 -0
  11. buildz-0.6.11/buildz/ioc/ioc_deal/conf/branch_lists.js +26 -0
  12. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deals.js +10 -0
  13. buildz-0.6.11/buildz/ioc/ioc_deal/conf/refs_lists.js +31 -0
  14. buildz-0.6.11/buildz/ioc/ioc_deal/init.py +3 -0
  15. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/obj.py +146 -0
  16. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/ref.py +2 -1
  17. buildz-0.6.11/buildz/ioc/ioc_deal/refs.py +62 -0
  18. buildz-0.6.11/buildz/ioc/wrap.py +26 -0
  19. {buildz-0.6.9 → buildz-0.6.11}/buildz/pyz.py +2 -1
  20. {buildz-0.6.9 → buildz-0.6.11}/buildz/tools.py +1 -1
  21. {buildz-0.6.9 → buildz-0.6.11/buildz.egg-info}/PKG-INFO +6 -1
  22. {buildz-0.6.9 → buildz-0.6.11}/buildz.egg-info/SOURCES.txt +7 -0
  23. {buildz-0.6.9 → buildz-0.6.11}/setup.py +1 -1
  24. {buildz-0.6.9 → buildz-0.6.11}/LICENSE +0 -0
  25. {buildz-0.6.9 → buildz-0.6.11}/MANIFEST.in +0 -0
  26. {buildz-0.6.9 → buildz-0.6.11}/buildz/__init__.py +0 -0
  27. {buildz-0.6.9 → buildz-0.6.11}/buildz/__main__.py +0 -0
  28. {buildz-0.6.9 → buildz-0.6.11}/buildz/argx.py +0 -0
  29. {buildz-0.6.9 → buildz-0.6.11}/buildz/base.py +0 -0
  30. {buildz-0.6.9 → buildz-0.6.11}/buildz/cmd.py +0 -0
  31. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/__main__.py +0 -0
  32. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/basez.py +0 -0
  33. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/clickhousez.py +0 -0
  34. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/lib/readme +0 -0
  35. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/mysqlz.py +0 -0
  36. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/oraclez.py +0 -0
  37. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/dv/structz.py +0 -0
  38. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/install.txt +0 -0
  39. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/run.conf +0 -0
  40. {buildz-0.6.9 → buildz-0.6.11}/buildz/db/runz.py +0 -0
  41. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/ioc/deal.py +0 -0
  42. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/ioc/help.py +0 -0
  43. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/myers/deal.py +0 -0
  44. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/myers/help.py +0 -0
  45. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/conf/ioc.js +0 -0
  46. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/conf/main.js +0 -0
  47. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/conf/myers.js +0 -0
  48. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/conf/search.js +0 -0
  49. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/conf/xf.js +0 -0
  50. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/help/default.js +0 -0
  51. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/help/ioc.js +0 -0
  52. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/help/myers.js +0 -0
  53. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/help/search.js +0 -0
  54. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/help/xf.js +0 -0
  55. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/res/test.js +0 -0
  56. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/search/deal.py +0 -0
  57. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/search/help.py +0 -0
  58. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/test.py +0 -0
  59. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/xf/deal.py +0 -0
  60. {buildz-0.6.9 → buildz-0.6.11}/buildz/demo/xf/help.py +0 -0
  61. {buildz-0.6.9 → buildz-0.6.11}/buildz/fz/__init__.py +0 -0
  62. {buildz-0.6.9 → buildz-0.6.11}/buildz/fz/dirz.py +0 -0
  63. {buildz-0.6.9 → buildz-0.6.11}/buildz/fz/fhs.py +0 -0
  64. {buildz-0.6.9 → buildz-0.6.11}/buildz/fz/fio.py +0 -0
  65. {buildz-0.6.9 → buildz-0.6.11}/buildz/fz/lsf.py +0 -0
  66. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/base.py +0 -0
  67. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc/single.py +0 -0
  68. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/call.py +0 -0
  69. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/calls.py +0 -0
  70. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  71. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  72. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  73. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  74. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  75. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  76. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  77. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  78. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  79. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  80. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  81. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  82. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  83. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  84. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  85. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  86. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  87. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  88. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  89. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  90. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  91. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  92. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/deal.py +0 -0
  93. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/demo.py +0 -0
  94. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/env.py +0 -0
  95. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/ioc.py +0 -0
  96. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/iocf.py +0 -0
  97. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/join.py +0 -0
  98. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/list.py +0 -0
  99. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/map.py +0 -0
  100. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/mcall.py +0 -0
  101. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/ovar.py +0 -0
  102. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/val.py +0 -0
  103. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/var.py +0 -0
  104. {buildz-0.6.9 → buildz-0.6.11}/buildz/ioc/ioc_deal/xfile.py +0 -0
  105. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/__init__.py +0 -0
  106. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/myers_diff.py +0 -0
  107. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/__init__.py +0 -0
  108. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/base.py +0 -0
  109. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/getch.py +0 -0
  110. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/lx.py +0 -0
  111. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/test.py +0 -0
  112. {buildz-0.6.9 → buildz-0.6.11}/buildz/tz/tio/win.py +0 -0
  113. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/__init__.py +0 -0
  114. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/__main__.py +0 -0
  115. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/code.py +0 -0
  116. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/code_modify.py +0 -0
  117. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/copy_old.py +0 -0
  118. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/file.py +0 -0
  119. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/base.py +0 -0
  120. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/buffer.py +0 -0
  121. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/listz.py +0 -0
  122. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/lr.py +0 -0
  123. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/lrval.py +0 -0
  124. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/mapz.py +0 -0
  125. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/nextz.py +0 -0
  126. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/reval.py +0 -0
  127. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/setz.py +0 -0
  128. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/spc.py +0 -0
  129. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/spt.py +0 -0
  130. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/deal/strz.py +0 -0
  131. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/exp.py +0 -0
  132. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/item.py +0 -0
  133. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/mg.py +0 -0
  134. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loader/pos.py +0 -0
  135. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/base.py +0 -0
  136. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/buffer.py +0 -0
  137. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  138. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/listz.py +0 -0
  139. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/lr.py +0 -0
  140. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/lrval.py +0 -0
  141. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/mapz.py +0 -0
  142. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/nextz.py +0 -0
  143. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/reval.py +0 -0
  144. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/setz.py +0 -0
  145. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/spc.py +0 -0
  146. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/spt.py +0 -0
  147. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz.py +0 -0
  148. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  149. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  150. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/exp.py +0 -0
  151. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/item.py +0 -0
  152. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/mg.py +0 -0
  153. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/pos.py +0 -0
  154. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/test.py +0 -0
  155. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/loaderz/test1.py +0 -0
  156. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/mapz.py +0 -0
  157. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/read.py +0 -0
  158. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/readz.py +0 -0
  159. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/stack.py +0 -0
  160. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/write.py +0 -0
  161. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/base.py +0 -0
  162. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/conf.py +0 -0
  163. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/deal/jsonval.py +0 -0
  164. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/deal/listz.py +0 -0
  165. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/deal/mapz.py +0 -0
  166. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/deal/reval.py +0 -0
  167. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/deal/strz.py +0 -0
  168. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/itemz.py +0 -0
  169. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/writer/mg.py +0 -0
  170. {buildz-0.6.9 → buildz-0.6.11}/buildz/xf/xargs.py +0 -0
  171. {buildz-0.6.9 → buildz-0.6.11}/buildz.egg-info/dependency_links.txt +0 -0
  172. {buildz-0.6.9 → buildz-0.6.11}/buildz.egg-info/top_level.txt +0 -0
  173. {buildz-0.6.9 → 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.9
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
@@ -1,5 +1,5 @@
1
1
  #coding=utf-8
2
2
 
3
- from .init import build,default_deals
3
+ from .init import *
4
4
 
5
5
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -2,7 +2,7 @@
2
2
 
3
3
  from .ioc import confs
4
4
  from .ioc_deal.base import default_deals
5
-
5
+ from . import wrap
6
6
  def build(fp_init = None, add_default_deals = True):
7
7
  obj = confs.Confs()
8
8
  if (fp_init is not None):
@@ -64,6 +64,8 @@ class EncapeData(Base):
64
64
  type = conf.confs.get_data_type(data, 0, conf.default_type())
65
65
  if confs is None:
66
66
  confs = conf.confs
67
+ else:
68
+ self.sid = None
67
69
  self.src = src
68
70
  self.conf = conf
69
71
  self.confs = confs
@@ -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
@@ -85,6 +86,7 @@ class Confs(Base):
85
86
  return None
86
87
  def get_env_maps(self, id, maps):
87
88
  ids = self.env_ids(id)
89
+ #print(f"[TZBZ] get_env_maps({id})[{ids}] in {maps}")
88
90
  envs = maps
89
91
  for id in ids:
90
92
  if type(envs)!=dict:
@@ -97,10 +99,23 @@ class Confs(Base):
97
99
  return envs
98
100
  def get_env_conf(self, id, sid=None):
99
101
  return self.get_env_maps(id, self.envs)
102
+ def enable_args(self, enable = True):
103
+ key = "args"
104
+ if enable:
105
+ if key in self.env_orders:
106
+ return
107
+ self.env_orders = [key]+self.env_orders
108
+ else:
109
+ if key not in self.env_orders:
110
+ return
111
+ self.env_orders.remove(key)
112
+ def set_args_type(self, args_type):
113
+ self.args_type = args_type
100
114
  def get_env(self, id, sid=None):
101
115
  for key in self.env_orders:
102
116
  fc = self.env_fcs[key]
103
117
  obj = fc(id, sid)
118
+ #print(f"[TZBZ] get_env.{key}.{fc}({id}, {sid}): {obj}")
104
119
  if obj is not None:
105
120
  return obj
106
121
  return None
@@ -122,6 +137,9 @@ class Confs(Base):
122
137
  break
123
138
  envs = envs[id]
124
139
  return envs
140
+ def set_envs(self, maps):
141
+ self.flush_env(maps)
142
+ self.update_env(maps)
125
143
  def set_env(self, id, val):
126
144
  obj = {id:val}
127
145
  self.flush_env(obj)
@@ -236,12 +254,16 @@ class Confs(Base):
236
254
  self.fcs = {}
237
255
  if 'args' in self.env_orders:
238
256
  self.build_env_args()
257
+ _id = self.add({})
258
+ self.empty = self.confs[_id]
239
259
  def set_fc(self, key, fc):
240
260
  self.fcs[key] = fc
241
261
  def get_fc(self, key):
242
262
  if key not in self.fcs:
243
263
  return None
244
264
  return self.fcs[key]
265
+ def var_keys(self):
266
+ return self.vars.keys()
245
267
  def get_var(self, key, i=-1):
246
268
  if not self.has_var(key):
247
269
  return None, False
@@ -265,6 +287,8 @@ class Confs(Base):
265
287
  if not self.has_var(key):
266
288
  return
267
289
  self.vars[key].pop(-1)
290
+ if len(self.vars[key])==0:
291
+ del self.vars[key]
268
292
  def do_init(self):
269
293
  if self.mark_init:
270
294
  return
@@ -330,6 +354,12 @@ class Confs(Base):
330
354
  print(f'error in loads: {fp}')
331
355
  raise
332
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()
333
363
  def adds(self, confs):
334
364
  for conf in confs:
335
365
  self.add(conf)
@@ -361,6 +391,7 @@ class Confs(Base):
361
391
  self.deals[k] = obj.deals[k]
362
392
  self.update_maps(self.envs, obj.envs)
363
393
  self.mark_init = False
394
+ return obj.id
364
395
  def get(self, *args, **maps):
365
396
  return self.get_obj(*args, **maps)
366
397
  def remove(self, *a,**b):
@@ -372,15 +403,18 @@ class Confs(Base):
372
403
  self.do_init()
373
404
  if type(id) == EncapeData:
374
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))
375
408
  else:
376
409
  conf = self.get_data(id, sid, src=src, info = info)
377
410
  if conf is None:
378
411
  raise IdNotFoundError(f"confs: can't find conf of {id}")
379
412
  return None
380
- if conf.conf is None:
381
- if remove:
382
- return None
383
- return conf.data()
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()
384
418
  deal = self.get_deal(conf.type, sid)
385
419
  if deal is None:
386
420
  raise IOCError(f"confs: can't find deal of {id}, type = {conf.type}")
@@ -403,6 +437,14 @@ class Confs(Base):
403
437
  if type in self.deals:
404
438
  return self.deals[type]
405
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
406
448
  def get_confs(self, ids):
407
449
  """
408
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,47 @@
1
+ #
2
+ from ..ioc.base import Base, EncapeData,IOCError
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
+ class BranchDeal(FormatDeal):
9
+ """
10
+ 分支branch:
11
+ {
12
+ id: id
13
+ type: branch
14
+ judge: item_conf
15
+ vals: {
16
+ judge_val: item_conf
17
+ ...
18
+ }
19
+ default(optional): item_conf
20
+ }
21
+ 简写:
22
+ [[id, branch], judge, {vals}, default]
23
+ [branch, judge, {vals}, default]
24
+ [branch, judge, {vals}]
25
+ 例:
26
+ [branch, [env, env.test], {true:..., false: ...}]
27
+ """
28
+ def init(self, fp_lists=None, fp_defaults=None):
29
+ super().init("BranchDeal", fp_lists, fp_defaults, join(dp, "conf", "branch_lists.js"), None)
30
+ def deal(self, edata:EncapeData):
31
+ data = edata.data
32
+ data = self.fill(data)
33
+ judge = xf.get_first(data, 'judge', 'key', 'var')
34
+ judge = self.get_obj(judge, edata.conf, edata.src, edata.info)
35
+ vals = xf.get_first(data, 'vals', 'data', 'datas')
36
+ val = None
37
+ if judge in vals:
38
+ val = vals[judge]
39
+ val = self.get_obj(val, edata.conf, edata.src, edata.info)
40
+ return val
41
+ if 'default' not in data:
42
+ raise IOCError(f"<branch> not any vals match '{judeg}'")
43
+ default = data['default']
44
+ val = self.get_obj(default, edata.conf, edata.src, edata.info)
45
+ return val
46
+
47
+ pass
@@ -0,0 +1,26 @@
1
+ // [[id, type], key]
2
+ [
3
+ {
4
+ nullable: 0,
5
+ out: 1,
6
+ conf: {
7
+ //sort:-1,
8
+ data:[
9
+ {key: type, default: null }
10
+ {key: id, default: null},
11
+ ]
12
+ }
13
+ },
14
+ {
15
+ nullable: 0,
16
+ key: judge
17
+ },
18
+ {
19
+ nullable: 0,
20
+ key: vals
21
+ },
22
+ {
23
+ nullable: 1,
24
+ key: default
25
+ }
26
+ ]
@@ -22,6 +22,11 @@
22
22
  note: 引用,
23
23
  build: buildz.ioc.ioc_deal.ref.RefDeal
24
24
  },
25
+ {
26
+ type: refs,
27
+ note: 正则匹配查引用列表,
28
+ build: buildz.ioc.ioc_deal.refs.RefsDeal
29
+ },
25
30
  {
26
31
  type: mcall,
27
32
  note: 对象方法调用,
@@ -82,6 +87,11 @@
82
87
  type: iocf,
83
88
  note: 加配置文件,
84
89
  build: buildz.ioc.ioc_deal.iocf.IOCFObjectDeal
90
+ },
91
+ {
92
+ type: branch,
93
+ note: 条件配置,
94
+ build: buildz.ioc.ioc_deal.branch.BranchDeal
85
95
  }
86
96
  ]
87
97
  }
@@ -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
+ }
@@ -0,0 +1,3 @@
1
+
2
+ from . import obj
3
+ from . import base
@@ -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)
@@ -12,10 +12,11 @@ class RefDeal(FormatDeal):
12
12
  id: id
13
13
  type: ref
14
14
  ref|key: 引导数据id
15
+ default: 默认值
15
16
  info: item_conf, 额外的引用信息, 默认null
16
17
  }
17
18
  简写:
18
- [[id, ref], key, info]
19
+ [[id, ref], key, default, info]
19
20
  极简:
20
21
  [ref, key]
21
22
  例:
@@ -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
@@ -138,7 +138,8 @@ def bylocals(mlocals, fc, *args, **maps):
138
138
  fc(*args, **maps)
139
139
 
140
140
  pass
141
-
141
+ #lcmain=bylocals
142
+ lc_main=bylocals
142
143
  def mainerr(fc, *args, **maps):
143
144
  st = inspect.stack()[1]
144
145
  if st.filename == '<stdin>':