buildz 0.6.35__tar.gz → 0.6.36__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 (224) hide show
  1. {buildz-0.6.35/buildz.egg-info → buildz-0.6.36}/PKG-INFO +3 -1
  2. {buildz-0.6.35 → buildz-0.6.36}/README.md +2 -0
  3. buildz-0.6.36/buildz/auto/__init__.py +7 -0
  4. buildz-0.6.36/buildz/cachez/__init__.py +8 -0
  5. buildz-0.6.36/buildz/cachez/cache.py +199 -0
  6. buildz-0.6.36/buildz/confz.py +0 -0
  7. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/basez.py +29 -22
  8. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/orm.py +35 -7
  9. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/sqlite3z.py +16 -0
  10. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/base.py +4 -3
  11. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/conf.py +4 -1
  12. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/confs.py +2 -1
  13. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/decorator.py +18 -8
  14. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/single.py +2 -0
  15. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/branch.py +1 -1
  16. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/call.py +1 -1
  17. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/calls.py +1 -1
  18. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ref_lists.js +12 -1
  19. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/refs_lists.js +12 -1
  20. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/deal.py +1 -1
  21. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ioc.py +1 -1
  22. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/iocf.py +1 -1
  23. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/join.py +1 -1
  24. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/list.py +1 -1
  25. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/map.py +1 -1
  26. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/mcall.py +1 -1
  27. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/obj.py +2 -2
  28. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ovar.py +1 -1
  29. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ref.py +3 -1
  30. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/refs.py +3 -2
  31. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/val.py +1 -1
  32. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/var.py +1 -1
  33. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/xfile.py +1 -1
  34. {buildz-0.6.35 → buildz-0.6.36}/buildz/logz.py +19 -2
  35. buildz-0.6.36/buildz/pathz.py +33 -0
  36. buildz-0.6.36/buildz/tools.py +5 -0
  37. {buildz-0.6.35 → buildz-0.6.36/buildz.egg-info}/PKG-INFO +3 -1
  38. {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/SOURCES.txt +4 -0
  39. {buildz-0.6.35 → buildz-0.6.36}/setup.py +1 -1
  40. buildz-0.6.35/buildz/auto/__init__.py +0 -1
  41. buildz-0.6.35/buildz/tools.py +0 -4
  42. {buildz-0.6.35 → buildz-0.6.36}/LICENSE +0 -0
  43. {buildz-0.6.35 → buildz-0.6.36}/MANIFEST.in +0 -0
  44. {buildz-0.6.35 → buildz-0.6.36}/buildz/__init__.py +0 -0
  45. {buildz-0.6.35 → buildz-0.6.36}/buildz/__main__.py +0 -0
  46. {buildz-0.6.35 → buildz-0.6.36}/buildz/argx.py +0 -0
  47. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/cache.py +0 -0
  48. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/config.py +0 -0
  49. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/dbs.py +0 -0
  50. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal.py +0 -0
  51. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal_list.py +0 -0
  52. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal_type.py +0 -0
  53. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/defs.py +0 -0
  54. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/factory.py +0 -0
  55. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/init.py +0 -0
  56. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/log.py +0 -0
  57. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/request.py +0 -0
  58. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/run.py +0 -0
  59. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/save.py +0 -0
  60. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/cache/cache.js +0 -0
  61. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/config/base.js +0 -0
  62. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/config/config.js +0 -0
  63. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/fp.js +0 -0
  64. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/item1.js +0 -0
  65. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/item2.js +0 -0
  66. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/test.js +0 -0
  67. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/test.py +0 -0
  68. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/xtest.py +0 -0
  69. {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/verify.py +0 -0
  70. {buildz-0.6.35 → buildz-0.6.36}/buildz/base.py +0 -0
  71. {buildz-0.6.35 → buildz-0.6.36}/buildz/cmd.py +0 -0
  72. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/__init__.py +0 -0
  73. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/__main__.py +0 -0
  74. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/__init__.py +0 -0
  75. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/clickhousez.py +0 -0
  76. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/lib/readme +0 -0
  77. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/mysqlz.py +0 -0
  78. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/oraclez.py +0 -0
  79. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/postgresqlz.py +0 -0
  80. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/structz.py +0 -0
  81. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/install.txt +0 -0
  82. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/run.conf +0 -0
  83. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/runz.py +0 -0
  84. {buildz-0.6.35 → buildz-0.6.36}/buildz/db/tls.py +0 -0
  85. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/ioc/deal.py +0 -0
  86. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/ioc/help.py +0 -0
  87. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/myers/deal.py +0 -0
  88. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/myers/help.py +0 -0
  89. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/ioc.js +0 -0
  90. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/main.js +0 -0
  91. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/myers.js +0 -0
  92. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/search.js +0 -0
  93. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/xf.js +0 -0
  94. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/default.js +0 -0
  95. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/ioc.js +0 -0
  96. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/myers.js +0 -0
  97. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/search.js +0 -0
  98. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/xf.js +0 -0
  99. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/test.js +0 -0
  100. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/search/deal.py +0 -0
  101. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/search/help.py +0 -0
  102. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/test.py +0 -0
  103. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/xf/deal.py +0 -0
  104. {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/xf/help.py +0 -0
  105. {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/__init__.py +0 -0
  106. {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/dirz.py +0 -0
  107. {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/fhs.py +0 -0
  108. {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/fio.py +0 -0
  109. {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/lsf.py +0 -0
  110. {buildz-0.6.35 → buildz-0.6.36}/buildz/html/__init__.py +0 -0
  111. {buildz-0.6.35 → buildz-0.6.36}/buildz/html/test/demo.html +0 -0
  112. {buildz-0.6.35 → buildz-0.6.36}/buildz/html/test/test.py +0 -0
  113. {buildz-0.6.35 → buildz-0.6.36}/buildz/html/xml.py +0 -0
  114. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/__init__.py +0 -0
  115. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/base.py +0 -0
  116. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/init.py +0 -0
  117. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/base.py +0 -0
  118. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  119. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  120. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  121. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  122. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  123. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  124. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  125. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  126. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  127. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  128. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  129. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  130. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  131. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  132. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  133. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  134. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  135. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  136. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  137. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  138. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  139. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  140. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  141. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/demo.py +0 -0
  142. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/env.py +0 -0
  143. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/init.py +0 -0
  144. {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/wrap.py +0 -0
  145. {buildz-0.6.35 → buildz-0.6.36}/buildz/pyz.py +0 -0
  146. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/__init__.py +0 -0
  147. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/myers_diff.py +0 -0
  148. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/test_xfind.py +0 -0
  149. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/time/__init__.py +0 -0
  150. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/time/timez.py +0 -0
  151. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/__init__.py +0 -0
  152. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/base.py +0 -0
  153. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/getch.py +0 -0
  154. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/lx.py +0 -0
  155. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/test.py +0 -0
  156. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/win.py +0 -0
  157. {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/xfind.py +0 -0
  158. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/__init__.py +0 -0
  159. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/__main__.py +0 -0
  160. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/code.py +0 -0
  161. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/code_modify.py +0 -0
  162. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/copy_old.py +0 -0
  163. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/file.py +0 -0
  164. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/base.py +0 -0
  165. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/buffer.py +0 -0
  166. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/listz.py +0 -0
  167. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/lr.py +0 -0
  168. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/lrval.py +0 -0
  169. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/mapz.py +0 -0
  170. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/nextz.py +0 -0
  171. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/reval.py +0 -0
  172. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/setz.py +0 -0
  173. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/spc.py +0 -0
  174. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/spt.py +0 -0
  175. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/strz.py +0 -0
  176. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/exp.py +0 -0
  177. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/item.py +0 -0
  178. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/mg.py +0 -0
  179. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/pos.py +0 -0
  180. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/base.py +0 -0
  181. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/buffer.py +0 -0
  182. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  183. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/listz.py +0 -0
  184. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/lr.py +0 -0
  185. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/lrval.py +0 -0
  186. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/mapz.py +0 -0
  187. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/nextz.py +0 -0
  188. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/reval.py +0 -0
  189. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/setz.py +0 -0
  190. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/spc.py +0 -0
  191. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/spt.py +0 -0
  192. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz.py +0 -0
  193. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  194. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  195. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/exp.py +0 -0
  196. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/item.py +0 -0
  197. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/mg.py +0 -0
  198. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/pos.py +0 -0
  199. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/test.py +0 -0
  200. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/test1.py +0 -0
  201. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/mapz.py +0 -0
  202. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/read.py +0 -0
  203. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/readz.py +0 -0
  204. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/stack.py +0 -0
  205. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/write.py +0 -0
  206. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/base.py +0 -0
  207. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/conf.py +0 -0
  208. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/jsonval.py +0 -0
  209. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/listmapz.py +0 -0
  210. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/listz.py +0 -0
  211. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/mapz.py +0 -0
  212. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/reval.py +0 -0
  213. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/strz.py +0 -0
  214. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/itemz.py +0 -0
  215. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/mg.py +0 -0
  216. {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/xargs.py +0 -0
  217. {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/__init__.py +0 -0
  218. {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/conf.js +0 -0
  219. {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/data.js +0 -0
  220. {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/test.py +0 -0
  221. {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/trs.py +0 -0
  222. {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/dependency_links.txt +0 -0
  223. {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/top_level.txt +0 -0
  224. {buildz-0.6.35 → buildz-0.6.36}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.35
3
+ Version: 0.6.36
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
@@ -34,6 +34,8 @@ License-File: LICENSE
34
34
  运行python -m buildz查看帮助
35
35
 
36
36
  持续更新中。。。
37
+ 2024/12/22:
38
+ 增加pathz模块,方便处理路径,修改ioc和db
37
39
  2024/12/18:
38
40
  增加数据映射xz,数据库db增加类似orm功能以及表和索引结构查询功能(目前只写了mysql,oracle,sqlite3的查询),配置文件读写xf的输出增加对ListMap的支持(dumpx, dumpxf)
39
41
  2024/11/11:
@@ -21,6 +21,8 @@
21
21
  运行python -m buildz查看帮助
22
22
 
23
23
  持续更新中。。。
24
+ 2024/12/22:
25
+ 增加pathz模块,方便处理路径,修改ioc和db
24
26
  2024/12/18:
25
27
  增加数据映射xz,数据库db增加类似orm功能以及表和索引结构查询功能(目前只写了mysql,oracle,sqlite3的查询),配置文件读写xf的输出增加对ListMap的支持(dumpx, dumpxf)
26
28
  2024/11/11:
@@ -0,0 +1,7 @@
1
+ from .run import Run
2
+
3
+ def imports():
4
+ from . import deal, deal_type, factory, cache, log, config, dbs
5
+ from . import verify, save, request, defs, deal_list
6
+
7
+ pass
@@ -0,0 +1,8 @@
1
+ #
2
+
3
+ from .cache import *
4
+
5
+ def imports():
6
+ pass
7
+
8
+ pass
@@ -0,0 +1,199 @@
1
+ #
2
+
3
+ from .. import xf, fz
4
+ from .. import ioc
5
+ from ..base import Base
6
+ from ..ioc import wrap
7
+ from .. import logz
8
+ ns = wrap.ns("buildz.cache")
9
+ import os,re
10
+
11
+
12
+ @ns.obj(id="cache.save")
13
+ @ns.obj_args("ref, cache.file", "ref, log")
14
+ class Save(Base):
15
+ def init(self, cache, log, fkey = "cache.save", fp = None):
16
+ self.fkey = fkey
17
+ self.cache = cache
18
+ self.log = log.tag("Cache.Save")
19
+ self.fp = fp
20
+ def save(self):
21
+ fp = self.fp
22
+ if fp is None:
23
+ self.log.warn(f"cache not save cause 'cache.save' is None")
24
+ return False
25
+ fz.makefdir(fp)
26
+ rst = self.cache.data
27
+ rs = xf.dumps(rst, format=True).encode("utf-8")
28
+ fz.write(rs, fp, 'wb')
29
+ return True
30
+ def call(self, maps, fp):
31
+ fp = xf.get(maps, self.fkey, None)
32
+ fp = self.cache.rfp(fp)
33
+ self.fp = fp
34
+ return self.save()
35
+
36
+ pass
37
+ class CacheKey(Base):
38
+ def init(self, cache, key):
39
+ self.cache = cache
40
+ self.key = key
41
+ def has(self):
42
+ return self.cache.has(self.key)
43
+ def set(self, val):
44
+ return self.cache.set(self.key, val)
45
+ def get(self):
46
+ return self.cache.get(self.key)
47
+ def call(self, *args):
48
+ if len(args)==0:
49
+ return self.get()
50
+ elif len(args)==1:
51
+ return self.set(args[0])
52
+ else:
53
+ assert 0
54
+ @ns.obj(id="cache.file")
55
+ @ns.obj_args("ref, fps, cache.js","ref, log, null", "ref, rfp.current.first, false", "ref, split, .", "ref, key.currents, buildz.cache.path.currents", "ref, key.basedir, buildz.cache.path.basedir", "ref, save.index, 0", "ref, save.auto, false")
56
+ class Cache(Base):
57
+ def bind(self, key):
58
+ return CacheKey(self, key)
59
+ def has(self, key):
60
+ ks = key.split(self.spt)
61
+ return xf.has(self.data, ks)
62
+ def get(self, key):
63
+ ks = key.split(self.spt)
64
+ return xf.gets(self.data, ks)
65
+ def set(self, key, val):
66
+ xf.sets(self.data, key.split(self.spt), val)
67
+ if self.auto_save:
68
+ self.save()
69
+ def remove(self, key):
70
+ xf.removes(self.data, key.split(self.spt))
71
+ def init(self, fps="cache.js", log=None, current_first=False, spt = ".", key_currents = "buildz.cache.path.currents", key_basedir = "buildz.cache.path.basedir", save_index = 0, auto_save = False):
72
+ if type(fps) not in (tuple, list):
73
+ fps = [fps]
74
+ self.fps = fps
75
+ self.spt = spt
76
+ self.current_first = current_first
77
+ self.log = logz.make(log)(self)
78
+ self.key_currents = key_currents
79
+ self.key_basedir = key_basedir
80
+ self.save_index = save_index
81
+ self.data = {}
82
+ self.auto_save = auto_save
83
+ def set_currents(self, dp):
84
+ if type(dp)!=list:
85
+ dp = [dp]
86
+ self.set(self.key_currents, dp)
87
+ def add_currents(self, dp):
88
+ dps = self.get_currents()
89
+ if dps is None:
90
+ dps = []
91
+ if dp in dps:
92
+ return
93
+ dps.append(dp)
94
+ self.set_currents(dps)
95
+ def get_currents(self):
96
+ dps = self.get(self.key_currents)
97
+ if dps is None:
98
+ dps = []
99
+ if type(dps)!=list:
100
+ dps = [dps]
101
+ return dps
102
+ def set_basedir(self, dp):
103
+ self.set(self.key_basedir, dp)
104
+ def get_basedir(self):
105
+ return self.get(self.key_basedir)
106
+ def rfp(self, fp):
107
+ if fz.is_abs(fp):
108
+ return fp
109
+ dps = [None,"."]
110
+ cfps = self.get_currents()
111
+ if cfps is not None:
112
+ if self.current_first:
113
+ dps = cfps+dps
114
+ else:
115
+ dps = dps+cfps
116
+ basedir = self.get_basedir()
117
+ if basedir is not None:
118
+ dps = [basedir]+dps
119
+ for dp in dps:
120
+ _fp = fp
121
+ if dp is not None:
122
+ _fp = os.path.join(dp, fp)
123
+ if os.path.isfile(_fp):
124
+ return _fp
125
+ if basedir is not None:
126
+ fp = os.path.join(basedir, fp)
127
+ return fp
128
+ def save(self, fp = None):
129
+ if fp is None:
130
+ fp = self.fps[self.save_index]
131
+ fp = self.rfp(fp)
132
+ fz.makefdir(fp)
133
+ rst = self.data
134
+ rs = xf.dumps(rst, format=True).encode("utf-8")
135
+ fz.write(rs, fp, 'wb')
136
+ def load(self, fps = None):
137
+ if fps is None:
138
+ fps = self.fps
139
+ data = {}
140
+ for fp in fps:
141
+ fp = self.rfp(fp)
142
+ if os.path.isfile(fp):
143
+ self.log.info(f"load cache from {fp}")
144
+ xdata = xf.flush_maps(xf.loadf(fp),visit_list=True)
145
+ xf.fill(xdata, data, replace=1)
146
+ xf.fill(data, self.data, replace=0)
147
+
148
+ pass
149
+
150
+ @ns.obj(id="cache.mem")
151
+ @ns.obj_args("ref, log, null")
152
+ class Mem(Cache):
153
+ def init(self, log=None):
154
+ super().init(None, log)
155
+
156
+ pass
157
+ @ns.obj(id="cache")
158
+ @ns.obj_args("ref, cache.file", "ref, cache.mem")
159
+ class Caches(Base):
160
+ def init(self, cache, mem):
161
+ self.cache = cache
162
+ self.mem = mem
163
+ self.caches = [cache, mem]
164
+ self.set = cache.set
165
+ self.remove = cache.remove
166
+ self.call=cache.call
167
+ self.rfp = cache.rfp
168
+ self.get_currents = cache.get_currents
169
+ self.add_currents = cache.add_currents
170
+ self.set_currents = cache.set_currents
171
+ self.set_basedir = cache.set_basedir
172
+ self.get_basedir = cache.get_basedir
173
+ self.has_file = cache.has
174
+ self.has_mem = mem.has
175
+ def get_file(self, key):
176
+ return self.cache.get(key)
177
+ def get_mem(self, key):
178
+ return self.mem.get(key)
179
+ def set_file(self, key, val):
180
+ self.cache.set(key,val)
181
+ def set_mem(self, key, val):
182
+ self.mem.set(key, val)
183
+ def remove_file(self, key):
184
+ self.cache.remove(key)
185
+ def remove_mem(self, key):
186
+ self.mem.remove(key)
187
+ def get(self, key):
188
+ for cache in self.caches:
189
+ v = cache.get(key)
190
+ if v is not None:
191
+ return v
192
+ return None
193
+ def has(self, key):
194
+ for cache in self.caches:
195
+ if cache.has(key):
196
+ return True
197
+ return False
198
+
199
+ pass
File without changes
@@ -130,26 +130,33 @@ class SimpleDv(ItDv):
130
130
  keys = [keys]
131
131
  update = False
132
132
  conds = ""
133
- if len(keys)>0:
134
- need_query = True
135
- conds = []
136
- for k in keys:
137
- if k not in maps:
138
- need_query = False
139
- break
140
- v = maps[k]
141
- if type(v)==str:
142
- v = f"'{v}'"
143
- if v is not None:
144
- cond = f"{k} = {v}"
145
- else:
146
- cond = f"{k} is null"
147
- conds.append(cond)
148
- if need_query:
149
- conds = " and ".join(conds)
150
- sql_search = f"select count(*) from {table} where {conds}"
151
- rst = self.query(sql_search, as_map = False)[1][0]
152
- update = rst>0
133
+ # if len(keys)>0:
134
+ # need_query = True
135
+ # conds = []
136
+ # for k in keys:
137
+ # if k not in maps:
138
+ # need_query = False
139
+ # break
140
+ # v = maps[k]
141
+ # if type(v)==str:
142
+ # v = f"'{v}'"
143
+ # if v is not None:
144
+ # cond = f"{k} = {v}"
145
+ # else:
146
+ # cond = f"{k} is null"
147
+ # conds.append(cond)
148
+ # if need_query:
149
+ # conds = " and ".join(conds)
150
+ # sql_search = f"select count(*) from {table} where {conds}"
151
+ # rst = self.query(sql_search, as_map = False)[1][0]
152
+ # update = rst>0
153
+ kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
154
+ sets = [f"{k}={v}" for k,v in kvs]
155
+ sets = ",".join(sets)
156
+ ks = ",".join([kv[0] for kv in kvs])
157
+ vs = ",".join([str(kv[1]) for kv in kvs])
158
+ sql = f"insert into {table}({ks}) values({vs}) on duplicate key update {sets}"
159
+ return self.execute(sql)
153
160
  if update:
154
161
  keys = set(keys)
155
162
  kvs = [[k,tls.py2sql(v)] for k,v in maps.items() if k not in keys]
@@ -157,10 +164,10 @@ class SimpleDv(ItDv):
157
164
  sets = ",".join(sets)
158
165
  sql = f"update {table} set {sets} where {conds}"
159
166
  else:
160
- kvs = [[k, tls.py2sql(v)] for k,v in maps.items()]
167
+ kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
161
168
  ks = ",".join([kv[0] for kv in kvs])
162
169
  vs = ",".join([str(kv[1]) for kv in kvs])
163
- sql = f"insert into {table}({ks}) values({vs});"
170
+ sql = f"insert into {table}({ks}) values({vs})"
164
171
  return self.execute(sql)
165
172
 
166
173
  pass
@@ -20,8 +20,10 @@ def deal_item(item, conf):
20
20
  def deal_key(it, conf):
21
21
  data_keys = xf.g(conf, data_keys=[])
22
22
  tmp = {}
23
+ #print(f"[TESTZ] conf: {conf}, it: {it}")
23
24
  for i in range(min(len(it), len(data_keys))):
24
25
  tmp[data_keys[i]] = it[i]
26
+ #print(f"[TESTZ] tmp: {tmp}")
25
27
  sql_key = tmp['sql_key']
26
28
  sql_def = tmp['sql_def']
27
29
  py_key = xf.g(tmp, py_key=None)
@@ -31,11 +33,12 @@ def deal_key(it, conf):
31
33
  xf.g(conf, vars=[]).append(sql_key+" "+sql_def)
32
34
  def makes(datas, data_keys = "sql_key,sql_def,py_key".split(",")):
33
35
  if type(datas)==dict:
34
- rst = [make(v, k) for k,v in datas.items()]
36
+ rst = [make(v, k, py_name = k) for k,v in datas.items()]
35
37
  else:
36
38
  rst = [make(it) for it in datas]
37
39
  return rst
38
- def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
40
+ def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(","), py_name=None):
41
+ #print(f"[TESTZ] MARK: {data}")
39
42
  """
40
43
  从配置中生成建表语句,删表语句和orm对象
41
44
  输入:
@@ -75,13 +78,16 @@ def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
75
78
  elif type(data) == dict:
76
79
  data = dict2list(data)
77
80
  conf = {}
78
- xf.s(conf, sql_before = [], sql_after = [], sql_delete_before=[], sql_delete_after=[],auto_translate=True,table=table,keys=[],py2sqls={},query_keys=None, data_keys = data_keys, vars=[])
81
+ xf.s(conf, sql_before = [], sql_after = [], sql_delete_before=[], sql_delete_after=[],auto_translate=True,table=table,keys=[],py2sqls={},query_keys=None, data_keys = data_keys, vars=[], py_name = py_name)
79
82
  for it in data:
80
83
  if len(it)==1 and type(it[0]) in (list, tuple):
81
84
  deal_item(it[0], conf)
82
85
  else:
83
86
  deal_key(it, conf)
84
87
  table = xf.g(conf, table=table)
88
+ py_name = xf.g(conf, py_name = py_name)
89
+ if py_name is None:
90
+ py_name = table
85
91
  vars = xf.g(conf, vars = [])
86
92
  vars = ",".join(vars)
87
93
  assert table is not None
@@ -93,7 +99,7 @@ def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
93
99
  sqls_del = sqls[2]+[sql_del]+sqls[3]
94
100
  sqls = [sqls_crt, sqls_del]
95
101
  sqls = [(";\n".join(k)+";").replace(";;",";") for k in sqls]
96
- obj = TableObject(*xf.g(conf, keys=[], table=table, py2sqls = None, query_keys=None,auto_translate=True), sql_create = sqls[0], sql_delete = sqls[1])
102
+ obj = TableObject(*xf.g(conf, keys=[], table=table, py2sqls = None, query_keys=None,auto_translate=True), sql_create = sqls[0], sql_delete = sqls[1], py_name = py_name)
97
103
  return sqls, obj
98
104
 
99
105
  pass
@@ -108,10 +114,13 @@ class TableObject(Base):
108
114
  auto_translate:
109
115
  对于没有在py2sqls自定义映射的表字段,是否自动转换(py|autoTran<=>auto_tran|sql)
110
116
  """
111
- def init(self, keys, table=None, py2sqls=None, query_keys=None, auto_translate=True, dv = None, sql_create=None, sql_delete=None):
117
+ def init(self, keys, table=None, py2sqls=None, query_keys=None, auto_translate=True, dv = None, sql_create=None, sql_delete=None, py_name = None):
112
118
  if table is None:
113
119
  table = tls.lower(self.__class__.__name__)
114
120
  self.table = table
121
+ if py_name is None:
122
+ py_name = table
123
+ self.py_name = py_name
115
124
  if py2sqls is None:
116
125
  py2sqls = {}
117
126
  if type(py2sqls) in (list, tuple):
@@ -139,6 +148,7 @@ class TableObject(Base):
139
148
  self.sql_delete = sql_delete
140
149
  def create(self, dv=None):
141
150
  assert self.sql_create is not None
151
+ #print(f"[TESTZ] sql_create: {self.sql_create}")
142
152
  dv = self.rdv(dv)
143
153
  dv.executes(self.sql_create)
144
154
  def delete(self, dv=None):
@@ -153,7 +163,7 @@ class TableObject(Base):
153
163
  if hasattr(obj, k):
154
164
  tmp[k] = getattr(obj, k)
155
165
  obj = tmp
156
- obj = {self.py2sqls[k]:v for k,v in obj.items()}
166
+ obj = {self.py2sqls[k]:v for k,v in obj.items() if k in self.py2sqls}
157
167
  return obj
158
168
  def toPy(self, obj):
159
169
  if type(obj)!=dict:
@@ -178,17 +188,35 @@ class TableObject(Base):
178
188
  def queryAll(self, dv=None, sql2py=True):
179
189
  sql = f"select * from {self.table};"
180
190
  return self.query(sql, dv, sql2py)
191
+ def filterSql(self, obj):
192
+ if type(obj)!=dict:
193
+ tmp = {}
194
+ for k in self.py2sqls:
195
+ if hasattr(obj, k):
196
+ tmp[k] = getattr(obj, k)
197
+ obj = tmp
198
+ obj = {k:v for k,v in obj.items() if k in self.keys}
199
+ return obj
181
200
  def save(self, obj, dv=None, py2sql = True, commit=False, check = True):
182
201
  dv = self.rdv(dv)
183
202
  if type(obj) not in [list, tuple]:
184
203
  obj = [obj]
185
204
  if py2sql:
186
205
  obj = [self.toSql(k) for k in obj]
206
+ else:
207
+ obj = [self.filterSql(k) for k in obj]
187
208
  query_keys = self.query_keys
188
209
  if not check:
189
210
  query_keys = None
190
211
  _ = [dv.insert_or_update(k, self.table, query_keys) for k in obj]
191
212
  if commit:
192
- dv.execute("commit;")
213
+ dv.execute("commit")
193
214
  return _
215
+ def clean(self, dv=None,commit = False):
216
+ dv = self.rdv(dv)
217
+ dv.execute(f"delete from {self.table}")
218
+ if commit:
219
+ dv.execute("commit")
220
+
221
+
194
222
 
@@ -4,6 +4,7 @@ import sys,os
4
4
  from .basez import SimpleDv, fetch
5
5
  from .structz import CMD
6
6
  from buildz import xf,fz
7
+ from buildz.db import tls
7
8
  class Db(SimpleDv):
8
9
  # func to impl:
9
10
  def to_list(self, rst):
@@ -89,6 +90,21 @@ class Db(SimpleDv):
89
90
  rst = rst[1:]
90
91
  rst = [{k:v for k,v in zip(keys, dt)} for dt in rst]
91
92
  return rst
93
+ def insert_or_update(self, maps, table, keys = None):
94
+ if type(maps)!=dict:
95
+ maps = maps.__dict__
96
+ if keys is None:
97
+ keys = []
98
+ if type(keys) not in (list, tuple):
99
+ keys = [keys]
100
+ kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
101
+ sets = [f"{k}={v}" for k,v in kvs]
102
+ sets = ",".join(sets)
103
+ ks = ",".join([kv[0] for kv in kvs])
104
+ vs = ",".join([str(kv[1]) for kv in kvs])
105
+ sql = f"insert into {table}({ks}) values({vs}) ON CONFLICT DO UPDATE SET {sets}"
106
+ #print(f"[TESTZ] sql: {sql}")
107
+ return self.execute(sql)
92
108
 
93
109
  pass
94
110
  def build(argv, conf):
@@ -33,7 +33,7 @@ class EncapeData(Base):
33
33
  包含data id对应的配置,配置文件id,配置文件对象
34
34
  [object.test, call, ]
35
35
  """
36
- def __init__(self, data, conf=None, local = False, type = None, src = None, info = None, confs = None):
36
+ def __init__(self, data, conf=None, local = False, type = None, src = None, info = None, confs = None, force_new = False):
37
37
  """
38
38
  data: 配置数据
39
39
  conf: 配置数据对应的配置文件的管理器
@@ -42,6 +42,7 @@ class EncapeData(Base):
42
42
  src: 源对象,配置数据生成的对象调用conf获取对象,会有这个字段,目前只有object会放这个字段,其他要么透传要么不传
43
43
  info: 额外的调用信息,目前只有object会用到里面的id字段,作为单例额外输入
44
44
  """
45
+ self.force_new = force_new
45
46
  if typez(data)==dict:
46
47
  pid = xf.g1(data, parent=None, template=None, temp=None)
47
48
  if pid is not None:
@@ -77,8 +78,8 @@ class EncapeData(Base):
77
78
  self.info = info
78
79
  def deal(self, remove = False):
79
80
  if self.conf is None:
80
- return self.confs.get(self, src = self.src, info=self.info, remove = remove)
81
- return self.conf.get(self, src = self.src, info=self.info, remove = remove)
81
+ return self.confs.get(self, src = self.src, info=self.info, remove = remove, force_new = self.force_new)
82
+ return self.conf.get(self, src = self.src, info=self.info, remove = remove, force_new = self.force_new)
82
83
 
83
84
 
84
85
  pass
@@ -201,7 +201,7 @@ class Conf(Base):
201
201
  return self.confs.has_var(key)
202
202
  def pop_var(self, key):
203
203
  self.confs.pop_var(key)
204
- def get_obj(self, id, src = None, info=None, remove = False):
204
+ def get_obj(self, id, src = None, info=None, remove = False, force_new = False):
205
205
  """
206
206
  根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
207
207
  """
@@ -213,9 +213,12 @@ class Conf(Base):
213
213
  if conf is None:
214
214
  raise IdNotFoundError(f"can't find conf of {id}")
215
215
  return None
216
+ conf.force_new = force_new
216
217
  if conf.conf is None:
217
218
  if remove:
218
219
  return None
220
+ # 不太记得了,应该是错误代码
221
+ print(f"[TESTZ] error code: {conf.conf}")
219
222
  return conf.data()
220
223
  deal = self.get_deal(conf.type)
221
224
  if deal is None:
@@ -405,7 +405,7 @@ class Confs(Base):
405
405
  return self.get_obj(*args, **maps)
406
406
  def remove(self, *a,**b):
407
407
  return self.get_obj(*a, **b, remove=True)
408
- def get_obj(self, id, sid = None, src = None, info = None, remove = False):
408
+ def get_obj(self, id, sid = None, src = None, info = None, remove = False, force_new = False):
409
409
  """
410
410
  根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
411
411
  """
@@ -429,6 +429,7 @@ class Confs(Base):
429
429
  raise IOCError(f"confs: can't find deal of {id}, type = {conf.type}")
430
430
  return None
431
431
  #print(f"get_obj: {id}({sid}), conf: {conf}, deal: {deal}, type: {conf.type}")
432
+ conf.force_new = force_new
432
433
  if not remove:
433
434
  obj = deal(conf)
434
435
  else:
@@ -19,8 +19,9 @@ class Decorator(Base):
19
19
  return self.namespace
20
20
  def regist(self, key, fc):
21
21
  self.fcs[key] = fc
22
- def get_conf(self, src):
23
- ns = self.namespace
22
+ def get_conf(self, src, ns = None):
23
+ if ns is None:
24
+ ns = self.namespace
24
25
  if src in self._ns:
25
26
  ns = self._ns[src]
26
27
  if ns not in self.confs:
@@ -33,8 +34,8 @@ class Decorator(Base):
33
34
  if tag not in conf:
34
35
  conf[tag]=[]
35
36
  return conf[tag][index]
36
- def add(self, tag, data, src = None):
37
- conf = self.get_conf(src)
37
+ def add(self, tag, data, src = None, ns = None):
38
+ conf = self.get_conf(src, ns)
38
39
  if tag not in conf:
39
40
  conf[tag]=[]
40
41
  id = len(conf[tag])
@@ -45,12 +46,12 @@ class Decorator(Base):
45
46
  if tag not in conf:
46
47
  conf[tag]={}
47
48
  conf[tag][key]=val
48
- def add_datas(self, item, key):
49
+ def add_datas(self, item, key=None, ns = None):
49
50
  if type(item)==str:
50
51
  item = xf.loads(item)
51
- return self.add("datas", item, key)
52
- def get_datas(self, id):
53
- return self.get("datas", id)
52
+ return self.add("datas", item, key, ns)
53
+ def get_datas(self, id, key=None):
54
+ return self.get("datas", id, key)
54
55
  def set_datas(self, id, val):
55
56
  return self.set("datas", id, val)
56
57
  def set_envs(self, key, val):
@@ -91,6 +92,15 @@ class NameSpace(Base):
91
92
  obj = Fcs()
92
93
  for k,f in fcs.items():
93
94
  setattr(obj, k, self.fc(namespace, f))
95
+ def wfc(rfc, *a, **b):
96
+ with self.lock:
97
+ ns = self.decorator.curr_ns()
98
+ self.decorator.ns(namespace)
99
+ rst = rfc(*a,**b)
100
+ self.decorator.fcns(namespace, rst)
101
+ self.decorator.ns(ns)
102
+ return rst
103
+ setattr(obj, "wrap", wfc)
94
104
  return obj
95
105
 
96
106
  pass
@@ -21,6 +21,8 @@ class Single(Base):
21
21
  self.default = default
22
22
  self.singles = {}
23
23
  def get_ids(self, edata: EncapeData):
24
+ if edata.force_new:
25
+ return None
24
26
  sid = edata.sid
25
27
  data = edata.data
26
28
  info = edata.info
@@ -19,7 +19,7 @@ class BranchDeal(FormatDeal):
19
19
  default(optional): item_conf
20
20
  }
21
21
  简写:
22
- [[id, branch], judge, {vals}, default]
22
+ [[branch, id], judge, {vals}, default]
23
23
  [branch, judge, {vals}, default]
24
24
  [branch, judge, {vals}]
25
25
  例:
@@ -20,7 +20,7 @@ class CallDeal(FormatDeal):
20
20
  }
21
21
  }
22
22
  简写:
23
- [[id, call], method, args, maps]
23
+ [[call, id], method, args, maps]
24
24
  [call, method]
25
25
  例:
26
26
  [call, buildz.ioc.demo.test.test] //调用buildz.ioc.demo.test下的test方法
@@ -17,7 +17,7 @@ class CallsDeal(FormatDeal):
17
17
  ]
18
18
  }
19
19
  简写:
20
- [[id, calls], calls]
20
+ [[calls, id], calls]
21
21
  [calls, calls]
22
22
  例:
23
23
  //顺序调用buildz.pyz.pyexe()和buildz.pyz.pypkg()
@@ -16,8 +16,19 @@
16
16
  },
17
17
  {
18
18
  nullable: 0,
19
- key: key
19
+ out: 1,
20
+ conf: {
21
+ //sort: -1,
22
+ data:[
23
+ {key: key, nullable: 0}
24
+ {key: force_new, default: false},
25
+ ]
26
+ }
20
27
  },
28
+ // {
29
+ // nullable: 0,
30
+ // key: key
31
+ // },
21
32
  {
22
33
  nullable:1
23
34
  key:default
@@ -16,8 +16,19 @@
16
16
  },
17
17
  {
18
18
  nullable: 0,
19
- key: key
19
+ out: 1,
20
+ conf: {
21
+ //sort: -1,
22
+ data:[
23
+ {key: key, nullable: 0}
24
+ {key: force_new, default: false},
25
+ ]
26
+ }
20
27
  },
28
+ // {
29
+ // nullable: 0,
30
+ // key: key
31
+ // },
21
32
  {
22
33
  nullable: 1,
23
34
  key: info