buildz 0.6.19__tar.gz → 0.6.21__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 (206) hide show
  1. {buildz-0.6.19/buildz.egg-info → buildz-0.6.21}/PKG-INFO +7 -2
  2. {buildz-0.6.19 → buildz-0.6.21}/README.md +6 -1
  3. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/cache.py +59 -9
  4. buildz-0.6.21/buildz/auto/dbs.py +24 -0
  5. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/deal.py +4 -0
  6. buildz-0.6.21/buildz/auto/deal_list.py +32 -0
  7. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/deal_type.py +2 -1
  8. buildz-0.6.21/buildz/auto/factory.py +31 -0
  9. buildz-0.6.21/buildz/auto/init.py +13 -0
  10. buildz-0.6.21/buildz/auto/log.py +22 -0
  11. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/request.py +6 -0
  12. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/test/cache/cache.js +10 -10
  13. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/test/config/config.js +4 -3
  14. buildz-0.6.19/buildz/auto/test/data/test.js → buildz-0.6.21/buildz/auto/test/data/fp.js +3 -0
  15. buildz-0.6.21/buildz/auto/test/data/test.js +31 -0
  16. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/test/test.py +2 -0
  17. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/verify.py +0 -1
  18. buildz-0.6.21/buildz/db/dv/__init__.py +14 -0
  19. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/clickhousez.py +3 -1
  20. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/mysqlz.py +3 -1
  21. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/oraclez.py +3 -1
  22. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/runz.py +3 -1
  23. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc/base.py +4 -1
  24. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc/conf.py +1 -1
  25. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc/confs.py +2 -1
  26. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/obj.py +25 -9
  27. buildz-0.6.21/buildz/tools.py +4 -0
  28. {buildz-0.6.19/buildz/auto → buildz-0.6.21/buildz/tz}/log.py +20 -20
  29. buildz-0.6.21/buildz/tz/time/__init__.py +1 -0
  30. buildz-0.6.21/buildz/tz/time/timez.py +24 -0
  31. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/write.py +1 -1
  32. {buildz-0.6.19 → buildz-0.6.21/buildz.egg-info}/PKG-INFO +7 -2
  33. {buildz-0.6.19 → buildz-0.6.21}/buildz.egg-info/SOURCES.txt +7 -0
  34. {buildz-0.6.19 → buildz-0.6.21}/setup.py +1 -1
  35. buildz-0.6.19/buildz/auto/factory.py +0 -28
  36. buildz-0.6.19/buildz/auto/init.py +0 -13
  37. buildz-0.6.19/buildz/tools.py +0 -3
  38. {buildz-0.6.19 → buildz-0.6.21}/LICENSE +0 -0
  39. {buildz-0.6.19 → buildz-0.6.21}/MANIFEST.in +0 -0
  40. {buildz-0.6.19 → buildz-0.6.21}/buildz/__init__.py +0 -0
  41. {buildz-0.6.19 → buildz-0.6.21}/buildz/__main__.py +0 -0
  42. {buildz-0.6.19 → buildz-0.6.21}/buildz/argx.py +0 -0
  43. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/__init__.py +0 -0
  44. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/config.py +0 -0
  45. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/defs.py +0 -0
  46. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/run.py +0 -0
  47. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/save.py +0 -0
  48. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/test/data/item1.js +0 -0
  49. {buildz-0.6.19 → buildz-0.6.21}/buildz/auto/test/data/item2.js +0 -0
  50. {buildz-0.6.19 → buildz-0.6.21}/buildz/base.py +0 -0
  51. {buildz-0.6.19 → buildz-0.6.21}/buildz/cmd.py +0 -0
  52. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/__main__.py +0 -0
  53. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/basez.py +0 -0
  54. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/lib/readme +0 -0
  55. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/dv/structz.py +0 -0
  56. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/install.txt +0 -0
  57. {buildz-0.6.19 → buildz-0.6.21}/buildz/db/run.conf +0 -0
  58. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/ioc/deal.py +0 -0
  59. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/ioc/help.py +0 -0
  60. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/myers/deal.py +0 -0
  61. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/myers/help.py +0 -0
  62. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/conf/ioc.js +0 -0
  63. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/conf/main.js +0 -0
  64. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/conf/myers.js +0 -0
  65. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/conf/search.js +0 -0
  66. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/conf/xf.js +0 -0
  67. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/help/default.js +0 -0
  68. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/help/ioc.js +0 -0
  69. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/help/myers.js +0 -0
  70. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/help/search.js +0 -0
  71. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/help/xf.js +0 -0
  72. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/res/test.js +0 -0
  73. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/search/deal.py +0 -0
  74. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/search/help.py +0 -0
  75. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/test.py +0 -0
  76. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/xf/deal.py +0 -0
  77. {buildz-0.6.19 → buildz-0.6.21}/buildz/demo/xf/help.py +0 -0
  78. {buildz-0.6.19 → buildz-0.6.21}/buildz/fz/__init__.py +0 -0
  79. {buildz-0.6.19 → buildz-0.6.21}/buildz/fz/dirz.py +0 -0
  80. {buildz-0.6.19 → buildz-0.6.21}/buildz/fz/fhs.py +0 -0
  81. {buildz-0.6.19 → buildz-0.6.21}/buildz/fz/fio.py +0 -0
  82. {buildz-0.6.19 → buildz-0.6.21}/buildz/fz/lsf.py +0 -0
  83. {buildz-0.6.19 → buildz-0.6.21}/buildz/html/__init__.py +0 -0
  84. {buildz-0.6.19 → buildz-0.6.21}/buildz/html/test/demo.html +0 -0
  85. {buildz-0.6.19 → buildz-0.6.21}/buildz/html/test/test.py +0 -0
  86. {buildz-0.6.19 → buildz-0.6.21}/buildz/html/xml.py +0 -0
  87. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/__init__.py +0 -0
  88. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/base.py +0 -0
  89. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/init.py +0 -0
  90. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc/decorator.py +0 -0
  91. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc/single.py +0 -0
  92. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/base.py +0 -0
  93. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/branch.py +0 -0
  94. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/call.py +0 -0
  95. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/calls.py +0 -0
  96. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  97. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  98. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  99. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  100. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  101. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  102. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  103. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  104. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  105. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  106. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  107. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  108. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  109. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  110. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  111. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  112. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  113. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  114. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  115. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  116. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  117. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  118. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  119. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  120. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  121. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/deal.py +0 -0
  122. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/demo.py +0 -0
  123. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/env.py +0 -0
  124. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/init.py +0 -0
  125. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/ioc.py +0 -0
  126. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/iocf.py +0 -0
  127. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/join.py +0 -0
  128. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/list.py +0 -0
  129. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/map.py +0 -0
  130. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/mcall.py +0 -0
  131. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/ovar.py +0 -0
  132. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/ref.py +0 -0
  133. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/refs.py +0 -0
  134. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/val.py +0 -0
  135. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/var.py +0 -0
  136. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/ioc_deal/xfile.py +0 -0
  137. {buildz-0.6.19 → buildz-0.6.21}/buildz/ioc/wrap.py +0 -0
  138. {buildz-0.6.19 → buildz-0.6.21}/buildz/pyz.py +0 -0
  139. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/__init__.py +0 -0
  140. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/myers_diff.py +0 -0
  141. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/__init__.py +0 -0
  142. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/base.py +0 -0
  143. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/getch.py +0 -0
  144. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/lx.py +0 -0
  145. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/test.py +0 -0
  146. {buildz-0.6.19 → buildz-0.6.21}/buildz/tz/tio/win.py +0 -0
  147. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/__init__.py +0 -0
  148. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/__main__.py +0 -0
  149. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/code.py +0 -0
  150. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/code_modify.py +0 -0
  151. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/copy_old.py +0 -0
  152. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/file.py +0 -0
  153. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/base.py +0 -0
  154. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/buffer.py +0 -0
  155. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/listz.py +0 -0
  156. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/lr.py +0 -0
  157. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/lrval.py +0 -0
  158. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/mapz.py +0 -0
  159. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/nextz.py +0 -0
  160. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/reval.py +0 -0
  161. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/setz.py +0 -0
  162. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/spc.py +0 -0
  163. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/spt.py +0 -0
  164. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/deal/strz.py +0 -0
  165. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/exp.py +0 -0
  166. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/item.py +0 -0
  167. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/mg.py +0 -0
  168. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loader/pos.py +0 -0
  169. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/base.py +0 -0
  170. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/buffer.py +0 -0
  171. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  172. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/listz.py +0 -0
  173. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/lr.py +0 -0
  174. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/lrval.py +0 -0
  175. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/mapz.py +0 -0
  176. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/nextz.py +0 -0
  177. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/reval.py +0 -0
  178. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/setz.py +0 -0
  179. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/spc.py +0 -0
  180. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/spt.py +0 -0
  181. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/strz.py +0 -0
  182. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  183. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  184. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/exp.py +0 -0
  185. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/item.py +0 -0
  186. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/mg.py +0 -0
  187. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/pos.py +0 -0
  188. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/test.py +0 -0
  189. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/loaderz/test1.py +0 -0
  190. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/mapz.py +0 -0
  191. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/read.py +0 -0
  192. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/readz.py +0 -0
  193. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/stack.py +0 -0
  194. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/base.py +0 -0
  195. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/conf.py +0 -0
  196. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/deal/jsonval.py +0 -0
  197. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/deal/listz.py +0 -0
  198. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/deal/mapz.py +0 -0
  199. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/deal/reval.py +0 -0
  200. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/deal/strz.py +0 -0
  201. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/itemz.py +0 -0
  202. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/writer/mg.py +0 -0
  203. {buildz-0.6.19 → buildz-0.6.21}/buildz/xf/xargs.py +0 -0
  204. {buildz-0.6.19 → buildz-0.6.21}/buildz.egg-info/dependency_links.txt +0 -0
  205. {buildz-0.6.19 → buildz-0.6.21}/buildz.egg-info/top_level.txt +0 -0
  206. {buildz-0.6.19 → buildz-0.6.21}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.19
3
+ Version: 0.6.21
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
@@ -22,6 +22,9 @@ License-File: LICENSE
22
22
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
23
23
  buildz.demo: 使用参考,运行"python -m buildz"会用这个模块
24
24
  buildz.db: sql集成工具,自用,里面import了其他sql库,使用运行"python -m buildz.db 配置文件路径"
25
+ buildz.base: 封装了一个基础类,继承它可以少写一些代码
26
+ buildz.html: xml(html)内容读取和解析
27
+ buildz.auto: 自动化操作(主要是做自动化测试方便些,如果不怕写一堆配置文件的话)
25
28
  代码关系:
26
29
  buildz.xf, buildz.pyz, buildz.argx, buildz.fz, buildz.tz都是独立的模块
27
30
  buildz.ioc需要buildz.xf和buildz.pyz
@@ -31,6 +34,8 @@ License-File: LICENSE
31
34
  运行python -m buildz查看帮助
32
35
 
33
36
  持续更新中。。。
37
+ 2024/10/08:
38
+ 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
34
39
  2024/09/25:
35
40
  修复bug,增强html的搜索功能,增强auto配置功能
36
41
  auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
@@ -43,7 +48,7 @@ ioc:
43
48
  加修饰器
44
49
  加配置refs
45
50
 
46
- 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倍,因为只考虑结构化,没考虑列表增减开销
51
+ 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倍,因为只考虑结构化,没考虑列表增减开销(获得的经验教训是别直接用python的列表list当堆栈做append和pop,特别慢!)
47
52
 
48
53
  1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
49
54
  2, a ioc profile file read function base on xf format, module is in buildz.ioc
@@ -9,6 +9,9 @@
9
9
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
10
10
  buildz.demo: 使用参考,运行"python -m buildz"会用这个模块
11
11
  buildz.db: sql集成工具,自用,里面import了其他sql库,使用运行"python -m buildz.db 配置文件路径"
12
+ buildz.base: 封装了一个基础类,继承它可以少写一些代码
13
+ buildz.html: xml(html)内容读取和解析
14
+ buildz.auto: 自动化操作(主要是做自动化测试方便些,如果不怕写一堆配置文件的话)
12
15
  代码关系:
13
16
  buildz.xf, buildz.pyz, buildz.argx, buildz.fz, buildz.tz都是独立的模块
14
17
  buildz.ioc需要buildz.xf和buildz.pyz
@@ -18,6 +21,8 @@
18
21
  运行python -m buildz查看帮助
19
22
 
20
23
  持续更新中。。。
24
+ 2024/10/08:
25
+ 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
21
26
  2024/09/25:
22
27
  修复bug,增强html的搜索功能,增强auto配置功能
23
28
  auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
@@ -30,7 +35,7 @@ ioc:
30
35
  加修饰器
31
36
  加配置refs
32
37
 
33
- 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倍,因为只考虑结构化,没考虑列表增减开销
38
+ 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倍,因为只考虑结构化,没考虑列表增减开销(获得的经验教训是别直接用python的列表list当堆栈做append和pop,特别慢!)
34
39
 
35
40
  1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
36
41
  2, a ioc profile file read function base on xf format, module is in buildz.ioc
@@ -49,13 +49,14 @@ pass
49
49
 
50
50
 
51
51
  @wrap.obj(id="cache.save")
52
- @wrap.obj_args("ref, cache", "ref, log")
52
+ @wrap.obj_args("ref, cache.file", "ref, log")
53
53
  class Save(Base):
54
- def init(self, cache, log):
54
+ def init(self, cache, log, fkey = "cache.save"):
55
+ self.fkey = fkey
55
56
  self.cache = cache
56
57
  self.log = log
57
58
  def call(self, maps, fp):
58
- fp = xf.get(maps, "cache.save", None)
59
+ fp = xf.get(maps, self.fkey, None)
59
60
  if fp is None:
60
61
  self.log.warn(f"cache not save cause 'cache.save' is None")
61
62
  return
@@ -66,7 +67,7 @@ class Save(Base):
66
67
  return True
67
68
 
68
69
  pass
69
- @wrap.obj(id="cache")
70
+ @wrap.obj(id="cache.file")
70
71
  @wrap.obj_args("ref, log", "env, cache.rfp.current.first, false")
71
72
  class Cache(Base):
72
73
  def get(self, key):
@@ -76,7 +77,8 @@ class Cache(Base):
76
77
  xf.sets(self.data, key.split("."), val)
77
78
  def remove(self, key):
78
79
  xf.removes(self.data, key.split("."))
79
- def init(self, log, current_first=False):
80
+ def init(self, log, current_first=False, fkey = "cache"):
81
+ self.fkey = fkey
80
82
  self.current_first = current_first
81
83
  self.log = log
82
84
  self.data = {}
@@ -113,12 +115,60 @@ class Cache(Base):
113
115
  return _fp
114
116
  return fp
115
117
  def call(self, maps, fp):
116
- fp = xf.g(maps, cache="cache.js")
118
+ fp = xf.get(maps, self.fkey, "cache.js")
119
+ if type(fp)!=list:
120
+ fp = [fp]
121
+ fps=fp
117
122
  data = {}
118
- if os.path.isfile(fp):
119
- self.log.info(f"load cache from {fp}")
120
- data = xf.flush_maps(xf.loadf(fp),visit_list=True)
123
+ for fp in fps:
124
+ fp = self.rfp(fp)
125
+ if os.path.isfile(fp):
126
+ self.log.info(f"load cache from {fp}")
127
+ xdata = xf.flush_maps(xf.loadf(fp),visit_list=True)
128
+ xf.fill(xdata, data, replace=1)
121
129
  xf.fill(data, self.data, replace=0)
122
130
  return True
123
131
 
124
132
  pass
133
+
134
+ @wrap.obj(id="cache.mem")
135
+ @wrap.obj_args("ref, log")
136
+ class Mem(Cache):
137
+ def init(self, log, current_first=False, fkey = "mem"):
138
+ super().init(log)
139
+
140
+ pass
141
+ @wrap.obj(id="cache")
142
+ @wrap.obj_args("ref, cache.file", "ref, cache.mem")
143
+ class Caches(Base):
144
+ def init(self, cache, mem):
145
+ self.cache = cache
146
+ self.mem = mem
147
+ self.caches = [cache, mem]
148
+ self.set = cache.set
149
+ self.remove = cache.remove
150
+ self.call=cache.call
151
+ self.rfp = cache.rfp
152
+ self.get_current = cache.get_current
153
+ self.add_current = cache.add_current
154
+ self.set_current = cache.set_current
155
+ def get_file(self, key):
156
+ return self.cache.get(key)
157
+ def get_mem(self, key):
158
+ return self.mem.get(key)
159
+ def set_file(self, key, val):
160
+ self.cache.set(key,val)
161
+ def set_mem(self, key, val):
162
+ self.mem.set(key, val)
163
+ def remove_file(self, key):
164
+ self.cache.remove(key)
165
+ def remove_mem(self, key):
166
+ self.mem.remove(key)
167
+ def get(self, key):
168
+ for cache in self.caches:
169
+ v = cache.get(key)
170
+ if v is not None:
171
+ return v
172
+ return None
173
+
174
+ pass
@@ -0,0 +1,24 @@
1
+ #
2
+ from ..tools import *
3
+ from buildz.ioc import wrap
4
+ import os
5
+ from buildz.db.dv import build
6
+ @wrap.obj(id="dbs")
7
+ @wrap.obj_args("ref, cache", "ref, log")
8
+ class Dbs(Base):
9
+ def init(self, cache, log):
10
+ self.cache = cache
11
+ self.log = log
12
+ self.dbs = {}
13
+ def call(self, maps, fp):
14
+ confs = xf.g(maps, dbs={})
15
+ for key,conf in confs.items():
16
+ url,user,pwd,dv = xf.g(conf, url=None, user=None, pwd=None, device=key)
17
+ dv = build(dv, [url, user, pwd], val)
18
+ self.dbs[key] = dv
19
+ self.cache.set_mem("dbs", self.dbs)
20
+ return True
21
+
22
+ pass
23
+
24
+
@@ -9,7 +9,10 @@ from ..ioc import wrap
9
9
  class List(Base):
10
10
  def init(self, deal, mg):
11
11
  self.deal = deal
12
+ self.curr_deal = deal
12
13
  self.mg = mg
14
+ def curr(self):
15
+ return self.curr_deal
13
16
  def call(self, maps, fp):
14
17
  datas = xf.g(maps, datas = [])
15
18
  sdeal = xf.g(maps, deal = None)
@@ -19,6 +22,7 @@ class List(Base):
19
22
  deal = deal_obj
20
23
  elif sdeal is not None:
21
24
  deal = self.mg.get(sdeal)
25
+ self.curr_deal = deal
22
26
  for data in datas:
23
27
  if not deal(data):
24
28
  return False
@@ -0,0 +1,32 @@
1
+ #
2
+ from ..tools import *
3
+ from buildz.ioc import wrap
4
+ import os
5
+ @wrap.obj(id="deal.list")
6
+ @wrap.obj_args("ref, cache", "ref, log", "ref, cache.modify", "ref, list")
7
+ class List(Base):
8
+ def init(self, cache, log, upd, lst):
9
+ self.cache = cache
10
+ self.log = log
11
+ self.upd = upd
12
+ self.lst = lst
13
+ def call(self, data, fc):
14
+ data = self.upd(data)
15
+ fp = xf.g(data, file = None)
16
+ if fp is not None:
17
+ fp = self.cache.rfp(fp)
18
+ datas = xf.g(data, datas=[])
19
+ if fp is not None and os.path.isfile(fp):
20
+ datas = xf.loadf(fp)
21
+ if type(datas)==dict:
22
+ datas = xf.g(datas, datas=[])
23
+ deal = self.lst.curr()
24
+ print(f"List.datas: {xf.dumps(datas,format=1,deep=1)}")
25
+ for data in datas:
26
+ if not deal(data):
27
+ return False
28
+ return True
29
+
30
+ pass
31
+
32
+
@@ -20,6 +20,7 @@ pass
20
20
 
21
21
  @wrap.obj(id = "def.deal.type")
22
22
  @wrap.obj_args("ioc, confs")
23
+ @wrap.obj_set(cache="ref, cache")
23
24
  class DefDeal(Base):
24
25
  def init(self, mg):
25
26
  self.mg = mg
@@ -30,7 +31,7 @@ class DefDeal(Base):
30
31
  data = xf.g(conf, types={})
31
32
  rst = {}
32
33
  for _type, calls in data.items():
33
- rst[_type] = factory(calls)
34
+ rst[_type] = factory(calls, True)
34
35
  obj = DealType(rst, self.mg.get("cache"))
35
36
  maps['deal_obj'] = obj
36
37
  return True
@@ -0,0 +1,31 @@
1
+ #
2
+
3
+ from .. import xf
4
+ from .. import ioc
5
+ from ..base import Base
6
+ from ..ioc import wrap
7
+
8
+ class DeepFc(Base):
9
+ def init(self, fcs, default = None):
10
+ self.default = default
11
+ self.fc = None
12
+ self.next=None
13
+ if len(fcs)>0:
14
+ self.fc = fcs[0]
15
+ self.next = DeepFc(fcs[1:], default)
16
+ def call(self, data):
17
+ if self.fc is None:
18
+ return self.default
19
+ return self.fc(data, self.next)
20
+
21
+ pass
22
+ @wrap.obj(id = "buildz.auto.deal.fill")
23
+ @wrap.obj_args("ioc, confs")
24
+ class Fill(Base):
25
+ def init(self, mg):
26
+ self.mg = mg
27
+ def call(self, orders, default=None):
28
+ fcs = [self.mg.get(id) for id in orders]
29
+ return DeepFc(fcs,default)
30
+
31
+ pass
@@ -0,0 +1,13 @@
1
+ #
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ from . import deal, deal_type, factory, cache, log, config, dbs
13
+ from . import verify, save, request, defs, deal_list
@@ -0,0 +1,22 @@
1
+ #
2
+
3
+
4
+ from .. import xf
5
+ from .. import ioc
6
+ from ..base import Base
7
+ from ..ioc import wrap
8
+ from ..tools import *
9
+ import time, sys
10
+ from ..tz.log import FpLog
11
+ @wrap.obj(id="log")
12
+ class AutoLog(FpLog):
13
+ def call(self, maps, fp):
14
+ fp = xf.g(maps, log = None)
15
+ self.fp = fp
16
+ shows = xf.get(maps, "log.shows")
17
+ if shows is None:
18
+ shows = ["info", "warn", "error"]
19
+ self.shows = shows
20
+ return True
21
+
22
+ pass
@@ -58,10 +58,13 @@ class Request(Base):
58
58
  xf.s(data, result_code = rp.status_code)
59
59
  if self.debug:
60
60
  self.log.debug(f"request url '{url}' return code: {rp.status_code}")
61
+ show_obj = None
61
62
  try:
63
+ show_obj = rp.content
62
64
  xf.s(data, result_content=rp.content)
63
65
  debug_ct = rp.content
64
66
  s = xf.decode(rp.content, "utf-8")
67
+ show_obj = s
65
68
  if self.debug:
66
69
  self.log.debug(f"request url '{url}' return msg:{s}")
67
70
  xf.s(data, result_text=s)
@@ -69,10 +72,13 @@ class Request(Base):
69
72
  self.log.warn(f"exp in deal response on '{url}': {exp}")
70
73
  try:
71
74
  obj = json.loads(s)
75
+ show_obj = xf.dumps(obj,format=1,deepp=1)
72
76
  xf.s(data, result=obj)
73
77
  except Exception as exp:
74
78
  #self.log.warn(f"exp in deal response on '{url}': {exp}")
75
79
  pass
80
+ if self.debug:
81
+ self.log.debug(f"request '{url}' response: {show_obj}")
76
82
  try:
77
83
  xf.s(data, result_cookies=dict(rp.cookies))
78
84
  except Exception as exp:
@@ -1,11 +1,11 @@
1
- {
2
- request: {
3
- debug: false
4
- },
5
- host: www.baidu.com,
6
- test: {
7
- url: tmpurl,
8
- val: 1,
9
- code: 1.99
10
- },
1
+ {
2
+ request: {
3
+ debug: false
4
+ },
5
+ host: www.baidu.com,
6
+ test: {
7
+ url: tmpurl,
8
+ val: 1,
9
+ code: 1.99
10
+ },
11
11
  }
@@ -1,11 +1,12 @@
1
- calls: [log, cache, def.deal.type, list, cache.save]
2
- cache: cache/cache.js
3
- cache.save: cache/cache.js
1
+ calls: [log, cache, dbs, def.deal.type, list, cache.save]
2
+ cache: [cache/cache.js,cache/save.js]
3
+ cache.save: cache/save.js
4
4
  log: log/%Y%m%d_log.txt
5
5
  log.shows: [info, warn, debug, error]
6
6
  def.deal: {
7
7
  types: {
8
8
  http.get: [defs, request, verify, save]
9
9
  get: [defs, request.get, verify, save]
10
+ list: [defs, deal.list]
10
11
  }
11
12
  }
@@ -24,4 +24,7 @@ datas: [
24
24
  // 或者配置所在的文件
25
25
  item1.js
26
26
  item2.js
27
+ {
28
+ type: list
29
+ }
27
30
  ]
@@ -0,0 +1,31 @@
1
+ configs: config/config.js
2
+ datas: [
3
+ //写一个配置
4
+ {
5
+ note: test
6
+ url: test
7
+ type: http.get
8
+ data: {
9
+ url: "#{test.url}"
10
+ }
11
+ save: {
12
+ test.url: data.url
13
+ }
14
+ result: {
15
+ code: 1.99
16
+ }
17
+ verify: [
18
+ "result.code, [>, 1]"
19
+ ]
20
+ save: {
21
+ result.code: result.code
22
+ }
23
+ }
24
+ // 或者配置所在的文件
25
+ item1.js
26
+ item2.js
27
+ {
28
+ type: list
29
+ file: fp.js
30
+ }
31
+ ]
@@ -16,8 +16,10 @@ class Req(Base):
16
16
 
17
17
  pass
18
18
  from buildz.auto import Run
19
+ from buildz.ioc.wrap import decorator
19
20
  import sys
20
21
  def test():
22
+ print(f"wrap: {xf.dumps(decorator(),format=1,deep=1)}")
21
23
  rst = Run()("data/test")
22
24
  print(f"rst: {rst}")
23
25
 
@@ -75,4 +75,3 @@ class Verify(Base):
75
75
  return fc(data)
76
76
 
77
77
  pass
78
-
@@ -0,0 +1,14 @@
1
+ #
2
+
3
+ def build(dv,*a,**b):
4
+ if dv == 'mysql':
5
+ from .mysqlz import build as _build
6
+ elif dv == 'oracle':
7
+ from .oraclez import build as _build
8
+ elif dv == 'clickhouse':
9
+ from .clickhousez import build as _build
10
+ return _build(*a, **b)
11
+
12
+ pass
13
+
14
+
@@ -29,6 +29,8 @@ class Db(SimpleDv):
29
29
  pass
30
30
  def build(argv, conf):
31
31
  dv = Db(*fetch(argv))
32
- return CMD(dv)
32
+ return dv
33
+ def buildbk(argv, conf):
34
+ return CMD(make(argv, conf))
33
35
 
34
36
  pass
@@ -33,6 +33,8 @@ class Db(SimpleDv):
33
33
  pass
34
34
  def build(argv, conf):
35
35
  dv = Db(*fetch(argv))
36
- return CMD(dv)
36
+ return dv
37
+ def buildbk(argv, conf):
38
+ return CMD(make(argv, conf))
37
39
 
38
40
  pass
@@ -54,6 +54,8 @@ def build(argv, conf):
54
54
  init_path(dp)
55
55
  #print(f"oracle lib: {dp}")
56
56
  dv = Db(*fetch(argv))
57
- return CMD(dv)
57
+ return dv
58
+ def buildbk(argv, conf):
59
+ return CMD(make(argv, conf))
58
60
 
59
61
  pass
@@ -15,6 +15,7 @@ def test(fp):
15
15
  obj = xf.loads(xf.fread(fp))
16
16
  dv = obj['dv']
17
17
  if __name__ == "__main__":
18
+ from db.basez import CMD
18
19
  if dv == 'mysql':
19
20
  from dv.mysqlz import build
20
21
  elif dv == 'oracle':
@@ -22,6 +23,7 @@ def test(fp):
22
23
  elif dv == 'clickhouse':
23
24
  from dv.clickhousez import build
24
25
  else:
26
+ from .db.basez import CMD
25
27
  if dv == 'mysql':
26
28
  from .dv.mysqlz import build
27
29
  elif dv == 'oracle':
@@ -47,7 +49,7 @@ def test(fp):
47
49
  sqls = "\n".join(sqls)
48
50
  sqls = sqls.split(";")
49
51
  print(f"[TESTZ] sqls:{sqls}")
50
- cmd = build([db_url, user, pwd], obj)
52
+ cmd = CMD(build([db_url, user, pwd], obj))
51
53
  cmd.dv.begin()
52
54
  print("[TESTZ] A")
53
55
  with open(out, 'wb') as f:
@@ -1,6 +1,7 @@
1
1
  #coding=utf-8
2
2
  from buildz import xf, pyz
3
3
  from buildz.xf import g as xg
4
+ from buildz.base import Base as BzBase
4
5
  import json
5
6
  import builtins
6
7
  typez = builtins.type
@@ -11,7 +12,7 @@ class IOCError(Exception):
11
12
  pass
12
13
  class IdNotFoundError(IOCError):
13
14
  pass
14
- class Base:
15
+ class Base(BzBase):
15
16
  def update_maps(self, maps, src, replace=1):
16
17
  xf.deep_update(maps, src, replace)
17
18
  def __init__(self, *args, **maps):
@@ -26,6 +27,8 @@ class Base:
26
27
 
27
28
  pass
28
29
  class EncapeData(Base):
30
+ def str(self):
31
+ return f"EncapeData(data={self.data}, type = {self.type})"
29
32
  """
30
33
  包含data id对应的配置,配置文件id,配置文件对象
31
34
  [object.test, call, ]
@@ -56,7 +56,7 @@ class Conf(Base):
56
56
  return id[0]
57
57
  return id
58
58
  def map(self, arr, fc_key):
59
- return {fc_key(obj): obj for obj in arr}
59
+ return {fc_key(obj): obj for obj in arr if fc_key(obj) is not None}
60
60
  def __str__(self):
61
61
  return f"conf<id={self.namespace}, _id={self.id}>"
62
62
  def __repr__(self):
@@ -307,7 +307,8 @@ class Confs(Base):
307
307
  return obj[self.deal_index_type]
308
308
  def get_data_id(self, obj):
309
309
  if type(obj)==dict:
310
- return obj[self.data_key_id]
310
+ return xf.get(obj, self.data_key_id, None)
311
+ #return obj[self.data_key_id]
311
312
  obj = obj[self.data_index_id[0]]
312
313
  if type(obj) in [list, tuple]:
313
314
  obj = obj[self.data_index_id[1]]
@@ -214,7 +214,26 @@ def update_list(arr):
214
214
  return rst
215
215
 
216
216
  pass
217
+ ioc_conf_key = "_buildz_ioc_conf"
218
+ class IOCConf(Basez):
219
+ def init(self, key = "_buildz_ioc_conf", ckey = "_buildz_ioc_conf_cls"):
220
+ self.key = key
221
+ self.ckey = ckey
222
+ def get(self, cls, default):
223
+ if not hasattr(cls, self.ckey):
224
+ return default
225
+ prv = getattr(cls, self.ckey)
226
+ if prv!=cls:
227
+ return default
228
+ if hasattr(cls, self.key):
229
+ return getattr(cls, self.key)
230
+ return default
231
+ def set(self, cls, dt):
232
+ setattr(cls, self.key, dt)
233
+ setattr(cls, self.ckey, cls)
217
234
 
235
+ pass
236
+ g_ioc_conf = IOCConf()
218
237
  class IOCObjectAdd_(Basez):
219
238
  def init(self, key, *arr):
220
239
  _arr = update_list(arr)
@@ -222,14 +241,13 @@ class IOCObjectAdd_(Basez):
222
241
  self._arr = _arr
223
242
  def call(self, cls):
224
243
  rst = {}
225
- if hasattr(cls, "_buildz_ioc_conf"):
226
- rst = cls._buildz_ioc_conf
244
+ rst = g_ioc_conf.get(cls, rst)
227
245
  _arr = []
228
246
  if self.key in rst:
229
247
  _arr = rst[self.key]
230
248
  _arr+=self._arr
231
249
  rst[self.key] = _arr
232
- cls._buildz_ioc_conf = rst
250
+ g_ioc_conf.set(cls, rst)
233
251
  return cls
234
252
 
235
253
  pass
@@ -267,10 +285,9 @@ class IOCObjectSet_(Basez):
267
285
  self._maps = {key:_maps}
268
286
  def call(self, cls):
269
287
  rst = {}
270
- if hasattr(cls, "_buildz_ioc_conf"):
271
- rst = cls._buildz_ioc_conf
288
+ rst = g_ioc_conf.get(cls, rst)
272
289
  xf.fill(self._maps, rst)
273
- cls._buildz_ioc_conf = rst
290
+ g_ioc_conf.set(cls, rst)
274
291
  return cls
275
292
 
276
293
  pass
@@ -317,15 +334,14 @@ class IOCObject(Basez):
317
334
  def call(self, cls):
318
335
  src = cls.__module__+"."+cls.__name__
319
336
  conf = {}
320
- if hasattr(cls, "_buildz_ioc_conf"):
321
- conf = cls._buildz_ioc_conf
337
+ conf = g_ioc_conf.get(cls, conf)
322
338
  xf.fill(self._maps, conf)
323
339
  conf['source'] = src
324
340
  conf['type'] = 'object'
325
341
  if 'mcalls' in conf and 'call' not in conf:
326
342
  conf['call'] = {'type': "calls", 'calls': conf['mcalls']}
327
343
  conf[g_obj_cid] = decorator.add_datas(conf)
328
- cls._buildz_ioc_conf = conf
344
+ g_ioc_conf.set(cls, conf)
329
345
  return cls
330
346
 
331
347
  pass
@@ -0,0 +1,4 @@
1
+ #coding=utf-8
2
+ # from buildz.tools import *
3
+ from . import pyz,xf,fz,Base, ioc
4
+ from .tz.time import timecost,showcost