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.
Files changed (173) hide show
  1. {buildz-0.6.10/buildz.egg-info → buildz-0.6.11}/PKG-INFO +6 -1
  2. {buildz-0.6.10 → buildz-0.6.11}/README.md +5 -0
  3. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/__init__.py +1 -1
  4. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/init.py +1 -1
  5. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/base.py +2 -0
  6. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/conf.py +13 -0
  7. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/confs.py +29 -4
  8. buildz-0.6.11/buildz/ioc/ioc/decorator.py +30 -0
  9. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/base.py +16 -1
  10. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deals.js +5 -0
  11. buildz-0.6.11/buildz/ioc/ioc_deal/conf/refs_lists.js +31 -0
  12. buildz-0.6.11/buildz/ioc/ioc_deal/init.py +3 -0
  13. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/obj.py +146 -0
  14. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ref.py +2 -1
  15. buildz-0.6.11/buildz/ioc/ioc_deal/refs.py +62 -0
  16. buildz-0.6.11/buildz/ioc/wrap.py +26 -0
  17. {buildz-0.6.10 → buildz-0.6.11}/buildz/pyz.py +2 -1
  18. {buildz-0.6.10 → buildz-0.6.11}/buildz/tools.py +1 -1
  19. {buildz-0.6.10 → buildz-0.6.11/buildz.egg-info}/PKG-INFO +6 -1
  20. {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/SOURCES.txt +5 -0
  21. {buildz-0.6.10 → buildz-0.6.11}/setup.py +1 -1
  22. {buildz-0.6.10 → buildz-0.6.11}/LICENSE +0 -0
  23. {buildz-0.6.10 → buildz-0.6.11}/MANIFEST.in +0 -0
  24. {buildz-0.6.10 → buildz-0.6.11}/buildz/__init__.py +0 -0
  25. {buildz-0.6.10 → buildz-0.6.11}/buildz/__main__.py +0 -0
  26. {buildz-0.6.10 → buildz-0.6.11}/buildz/argx.py +0 -0
  27. {buildz-0.6.10 → buildz-0.6.11}/buildz/base.py +0 -0
  28. {buildz-0.6.10 → buildz-0.6.11}/buildz/cmd.py +0 -0
  29. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/__main__.py +0 -0
  30. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/basez.py +0 -0
  31. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/clickhousez.py +0 -0
  32. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/lib/readme +0 -0
  33. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/mysqlz.py +0 -0
  34. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/oraclez.py +0 -0
  35. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/dv/structz.py +0 -0
  36. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/install.txt +0 -0
  37. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/run.conf +0 -0
  38. {buildz-0.6.10 → buildz-0.6.11}/buildz/db/runz.py +0 -0
  39. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/ioc/deal.py +0 -0
  40. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/ioc/help.py +0 -0
  41. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/myers/deal.py +0 -0
  42. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/myers/help.py +0 -0
  43. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/ioc.js +0 -0
  44. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/main.js +0 -0
  45. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/myers.js +0 -0
  46. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/search.js +0 -0
  47. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/conf/xf.js +0 -0
  48. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/default.js +0 -0
  49. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/ioc.js +0 -0
  50. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/myers.js +0 -0
  51. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/search.js +0 -0
  52. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/help/xf.js +0 -0
  53. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/res/test.js +0 -0
  54. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/search/deal.py +0 -0
  55. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/search/help.py +0 -0
  56. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/test.py +0 -0
  57. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/xf/deal.py +0 -0
  58. {buildz-0.6.10 → buildz-0.6.11}/buildz/demo/xf/help.py +0 -0
  59. {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/__init__.py +0 -0
  60. {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/dirz.py +0 -0
  61. {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/fhs.py +0 -0
  62. {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/fio.py +0 -0
  63. {buildz-0.6.10 → buildz-0.6.11}/buildz/fz/lsf.py +0 -0
  64. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/base.py +0 -0
  65. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc/single.py +0 -0
  66. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/branch.py +0 -0
  67. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/call.py +0 -0
  68. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/calls.py +0 -0
  69. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  70. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  71. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  72. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  73. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  74. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  75. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  76. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  77. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  78. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  79. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  80. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  81. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  82. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  83. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  84. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  85. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  86. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  87. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  88. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  89. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  90. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  91. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  92. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/deal.py +0 -0
  93. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/demo.py +0 -0
  94. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/env.py +0 -0
  95. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ioc.py +0 -0
  96. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/iocf.py +0 -0
  97. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/join.py +0 -0
  98. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/list.py +0 -0
  99. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/map.py +0 -0
  100. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/mcall.py +0 -0
  101. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/ovar.py +0 -0
  102. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/val.py +0 -0
  103. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/var.py +0 -0
  104. {buildz-0.6.10 → buildz-0.6.11}/buildz/ioc/ioc_deal/xfile.py +0 -0
  105. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/__init__.py +0 -0
  106. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/myers_diff.py +0 -0
  107. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/__init__.py +0 -0
  108. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/base.py +0 -0
  109. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/getch.py +0 -0
  110. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/lx.py +0 -0
  111. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/test.py +0 -0
  112. {buildz-0.6.10 → buildz-0.6.11}/buildz/tz/tio/win.py +0 -0
  113. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/__init__.py +0 -0
  114. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/__main__.py +0 -0
  115. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/code.py +0 -0
  116. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/code_modify.py +0 -0
  117. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/copy_old.py +0 -0
  118. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/file.py +0 -0
  119. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/base.py +0 -0
  120. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/buffer.py +0 -0
  121. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/listz.py +0 -0
  122. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/lr.py +0 -0
  123. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/lrval.py +0 -0
  124. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/mapz.py +0 -0
  125. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/nextz.py +0 -0
  126. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/reval.py +0 -0
  127. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/setz.py +0 -0
  128. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/spc.py +0 -0
  129. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/spt.py +0 -0
  130. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/deal/strz.py +0 -0
  131. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/exp.py +0 -0
  132. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/item.py +0 -0
  133. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/mg.py +0 -0
  134. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loader/pos.py +0 -0
  135. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/base.py +0 -0
  136. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/buffer.py +0 -0
  137. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  138. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/listz.py +0 -0
  139. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/lr.py +0 -0
  140. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/lrval.py +0 -0
  141. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/mapz.py +0 -0
  142. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/nextz.py +0 -0
  143. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/reval.py +0 -0
  144. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/setz.py +0 -0
  145. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/spc.py +0 -0
  146. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/spt.py +0 -0
  147. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz.py +0 -0
  148. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  149. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  150. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/exp.py +0 -0
  151. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/item.py +0 -0
  152. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/mg.py +0 -0
  153. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/pos.py +0 -0
  154. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/test.py +0 -0
  155. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/loaderz/test1.py +0 -0
  156. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/mapz.py +0 -0
  157. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/read.py +0 -0
  158. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/readz.py +0 -0
  159. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/stack.py +0 -0
  160. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/write.py +0 -0
  161. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/base.py +0 -0
  162. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/conf.py +0 -0
  163. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/jsonval.py +0 -0
  164. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/listz.py +0 -0
  165. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/mapz.py +0 -0
  166. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/reval.py +0 -0
  167. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/deal/strz.py +0 -0
  168. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/itemz.py +0 -0
  169. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/writer/mg.py +0 -0
  170. {buildz-0.6.10 → buildz-0.6.11}/buildz/xf/xargs.py +0 -0
  171. {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/dependency_links.txt +0 -0
  172. {buildz-0.6.10 → buildz-0.6.11}/buildz.egg-info/top_level.txt +0 -0
  173. {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.10
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
@@ -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
- if conf.conf is None:
398
- if remove:
399
- return None
400
- 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()
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)
@@ -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: 对象方法调用,
@@ -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>':
@@ -1,3 +1,3 @@
1
1
  #coding=utf-8
2
2
  # from buildz.tools import *
3
- from . import pyz,xf,fz,Base
3
+ from . import pyz,xf,fz,Base, ioc
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.10
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
@@ -7,7 +7,7 @@ from setuptools import setup, find_packages
7
7
 
8
8
  setup(
9
9
  name = 'buildz',
10
- version = '0.6.10',
10
+ version = '0.6.11',
11
11
  keywords='buildz',
12
12
  long_description=open('README.md', 'r', encoding="utf-8").read(),
13
13
  long_description_content_type='text/markdown',
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