buildz 0.6.44__tar.gz → 0.6.46__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 (279) hide show
  1. buildz-0.6.46/MANIFEST.in +3 -0
  2. {buildz-0.6.44/buildz.egg-info → buildz-0.6.46}/PKG-INFO +1 -28
  3. {buildz-0.6.44 → buildz-0.6.46}/README.md +0 -27
  4. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/argz.py +17 -8
  5. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/build.py +11 -3
  6. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/callz.py +15 -1
  7. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/tests/conf.js +3 -3
  8. buildz-0.6.46/buildz/argz/testx.py +42 -0
  9. {buildz-0.6.44 → buildz-0.6.46}/buildz/base.py +28 -0
  10. {buildz-0.6.44 → buildz-0.6.46}/buildz/fz/__init__.py +1 -1
  11. {buildz-0.6.44 → buildz-0.6.46}/buildz/fz/fio.py +56 -10
  12. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/confs.py +20 -14
  13. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/loads.py +8 -3
  14. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/ref.py +1 -0
  15. buildz-0.6.46/buildz/iocz/base.py +6 -0
  16. buildz-0.6.46/buildz/iocz/ioc/base.py +5 -0
  17. buildz-0.6.46/buildz/iocz/ioc/confs.py +5 -0
  18. buildz-0.6.46/buildz/iocz/ioc/env.py +117 -0
  19. buildz-0.6.46/buildz/iocz/ioc/ids.py +23 -0
  20. {buildz-0.6.44 → buildz-0.6.46}/buildz/pathz.py +11 -2
  21. {buildz-0.6.44 → buildz-0.6.46}/buildz/pyz.py +67 -3
  22. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/time/timez.py +1 -1
  23. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/mapz.py +52 -10
  24. {buildz-0.6.44 → buildz-0.6.46/buildz.egg-info}/PKG-INFO +1 -28
  25. {buildz-0.6.44 → buildz-0.6.46}/buildz.egg-info/SOURCES.txt +8 -1
  26. buildz-0.6.46/notes/notes.txt +1 -0
  27. {buildz-0.6.44 → buildz-0.6.46}/setup.py +1 -1
  28. buildz-0.6.44/MANIFEST.in +0 -2
  29. {buildz-0.6.44 → buildz-0.6.46}/LICENSE +0 -0
  30. {buildz-0.6.44 → buildz-0.6.46}/buildz/__init__.py +0 -0
  31. {buildz-0.6.44 → buildz-0.6.46}/buildz/__main__.py +0 -0
  32. {buildz-0.6.44 → buildz-0.6.46}/buildz/argx.py +0 -0
  33. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/__init__.py +0 -0
  34. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/evalx.py +0 -0
  35. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/test.py +0 -0
  36. {buildz-0.6.44 → buildz-0.6.46}/buildz/argz/test_obj.py +0 -0
  37. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/__init__.py +0 -0
  38. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/cache.py +0 -0
  39. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/config.py +0 -0
  40. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/dbs.py +0 -0
  41. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/deal.py +0 -0
  42. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/deal_list.py +0 -0
  43. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/deal_type.py +0 -0
  44. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/defs.py +0 -0
  45. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/factory.py +0 -0
  46. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/init.py +0 -0
  47. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/log.py +0 -0
  48. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/request.py +0 -0
  49. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/run.py +0 -0
  50. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/save.py +0 -0
  51. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/cache/cache.js +0 -0
  52. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/config/base.js +0 -0
  53. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/config/config.js +0 -0
  54. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/data/fp.js +0 -0
  55. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/data/item1.js +0 -0
  56. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/data/item2.js +0 -0
  57. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/res/data/test.js +0 -0
  58. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/test.py +0 -0
  59. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/test/xtest.py +0 -0
  60. {buildz-0.6.44 → buildz-0.6.46}/buildz/auto/verify.py +0 -0
  61. {buildz-0.6.44 → buildz-0.6.46}/buildz/cachez/__init__.py +0 -0
  62. {buildz-0.6.44 → buildz-0.6.46}/buildz/cachez/cache.py +0 -0
  63. {buildz-0.6.44 → buildz-0.6.46}/buildz/cmd.py +0 -0
  64. {buildz-0.6.44 → buildz-0.6.46}/buildz/confz.py +0 -0
  65. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/__init__.py +0 -0
  66. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/__main__.py +0 -0
  67. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/__init__.py +0 -0
  68. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/basez.py +0 -0
  69. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/clickhousez.py +0 -0
  70. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/lib/readme +0 -0
  71. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/mysqlz.py +0 -0
  72. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/oraclez.py +0 -0
  73. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/orm.py +0 -0
  74. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/postgresqlz.py +0 -0
  75. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/sqlite3z.py +0 -0
  76. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/dv/structz.py +0 -0
  77. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/install.txt +0 -0
  78. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/run.conf +0 -0
  79. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/runz.py +0 -0
  80. {buildz-0.6.44 → buildz-0.6.46}/buildz/db/tls.py +0 -0
  81. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/ioc/deal.py +0 -0
  82. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/ioc/help.py +0 -0
  83. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/myers/deal.py +0 -0
  84. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/myers/help.py +0 -0
  85. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/conf/ioc.js +0 -0
  86. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/conf/main.js +0 -0
  87. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/conf/myers.js +0 -0
  88. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/conf/search.js +0 -0
  89. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/conf/xf.js +0 -0
  90. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/help/default.js +0 -0
  91. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/help/ioc.js +0 -0
  92. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/help/myers.js +0 -0
  93. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/help/search.js +0 -0
  94. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/help/xf.js +0 -0
  95. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/res/test.js +0 -0
  96. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/search/deal.py +0 -0
  97. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/search/help.py +0 -0
  98. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/test.py +0 -0
  99. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/xf/deal.py +0 -0
  100. {buildz-0.6.44 → buildz-0.6.46}/buildz/demo/xf/help.py +0 -0
  101. {buildz-0.6.44 → buildz-0.6.46}/buildz/evalz/__init__.py +0 -0
  102. {buildz-0.6.44 → buildz-0.6.46}/buildz/evalz/evalz.py +0 -0
  103. {buildz-0.6.44 → buildz-0.6.46}/buildz/evalz/res/default.js +0 -0
  104. {buildz-0.6.44 → buildz-0.6.46}/buildz/evalz/test.py +0 -0
  105. {buildz-0.6.44 → buildz-0.6.46}/buildz/fz/dirz.py +0 -0
  106. {buildz-0.6.44 → buildz-0.6.46}/buildz/fz/fhs.py +0 -0
  107. {buildz-0.6.44 → buildz-0.6.46}/buildz/fz/lsf.py +0 -0
  108. {buildz-0.6.44 → buildz-0.6.46}/buildz/html/__init__.py +0 -0
  109. {buildz-0.6.44 → buildz-0.6.46}/buildz/html/test/demo.html +0 -0
  110. {buildz-0.6.44 → buildz-0.6.46}/buildz/html/test/test.py +0 -0
  111. {buildz-0.6.44 → buildz-0.6.46}/buildz/html/xml.py +0 -0
  112. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/__init__.py +0 -0
  113. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/base.py +0 -0
  114. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/init.py +0 -0
  115. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/base.py +0 -0
  116. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/conf.py +0 -0
  117. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/decorator.py +0 -0
  118. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc/single.py +0 -0
  119. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/base.py +0 -0
  120. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/branch.py +0 -0
  121. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/call.py +0 -0
  122. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/calls.py +0 -0
  123. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  124. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  125. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  126. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  127. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  128. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  129. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  130. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  131. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  132. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  133. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  134. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  135. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  136. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  137. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  138. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  139. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  140. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  141. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  142. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  143. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  144. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  145. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  146. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  147. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  148. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/deal.py +0 -0
  149. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/demo.py +0 -0
  150. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/env.py +0 -0
  151. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/init.py +0 -0
  152. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/ioc.py +0 -0
  153. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/iocf.py +0 -0
  154. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/join.py +0 -0
  155. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/list.py +0 -0
  156. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/map.py +0 -0
  157. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/mcall.py +0 -0
  158. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/obj.py +0 -0
  159. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/ovar.py +0 -0
  160. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/refs.py +0 -0
  161. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/val.py +0 -0
  162. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/var.py +0 -0
  163. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/ioc_deal/xfile.py +0 -0
  164. {buildz-0.6.44 → buildz-0.6.46}/buildz/ioc/wrap.py +0 -0
  165. {buildz-0.6.44 → buildz-0.6.46}/buildz/logz.py +0 -0
  166. {buildz-0.6.44 → buildz-0.6.46}/buildz/tools.py +0 -0
  167. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/__init__.py +0 -0
  168. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/myers_diff.py +0 -0
  169. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/test_xfind.py +0 -0
  170. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/time/__init__.py +0 -0
  171. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/__init__.py +0 -0
  172. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/base.py +0 -0
  173. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/getch.py +0 -0
  174. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/lx.py +0 -0
  175. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/test.py +0 -0
  176. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/tio/win.py +0 -0
  177. {buildz-0.6.44 → buildz-0.6.46}/buildz/tz/xfind.py +0 -0
  178. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/__init__.py +0 -0
  179. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/__main__.py +0 -0
  180. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/base.py +0 -0
  181. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/code.py +0 -0
  182. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/code_modify.py +0 -0
  183. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/copy_old.py +0 -0
  184. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/file.py +0 -0
  185. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/base.py +0 -0
  186. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/buffer.py +0 -0
  187. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/listz.py +0 -0
  188. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/lr.py +0 -0
  189. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/lrval.py +0 -0
  190. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/mapz.py +0 -0
  191. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/nextz.py +0 -0
  192. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/reval.py +0 -0
  193. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/setz.py +0 -0
  194. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/spc.py +0 -0
  195. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/spt.py +0 -0
  196. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/deal/strz.py +0 -0
  197. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/exp.py +0 -0
  198. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/item.py +0 -0
  199. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/mg.py +0 -0
  200. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loader/pos.py +0 -0
  201. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/base.py +0 -0
  202. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/buffer.py +0 -0
  203. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  204. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/listz.py +0 -0
  205. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/lr.py +0 -0
  206. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/lrval.py +0 -0
  207. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/mapz.py +0 -0
  208. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/nextz.py +0 -0
  209. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/reval.py +0 -0
  210. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/setz.py +0 -0
  211. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/spc.py +0 -0
  212. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/spt.py +0 -0
  213. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz.py +0 -0
  214. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  215. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  216. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/exp.py +0 -0
  217. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/item.py +0 -0
  218. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/mg.py +0 -0
  219. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/pos.py +0 -0
  220. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/test.py +0 -0
  221. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz/test1.py +0 -0
  222. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/base.py +0 -0
  223. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/buffer.py +0 -0
  224. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
  225. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
  226. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
  227. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
  228. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
  229. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
  230. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
  231. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
  232. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/spc.py +0 -0
  233. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
  234. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
  235. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz_new.py +0 -0
  236. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz_old.py +0 -0
  237. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/exp.py +0 -0
  238. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/item.py +0 -0
  239. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/mg.py +0 -0
  240. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/pos.py +0 -0
  241. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/test.py +0 -0
  242. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/loaderz_nexp/test1.py +0 -0
  243. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/read.py +0 -0
  244. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/readz.py +0 -0
  245. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/readz_nexp.py +0 -0
  246. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/stack.py +0 -0
  247. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/write.py +0 -0
  248. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/base.py +0 -0
  249. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/conf.py +0 -0
  250. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/jsonval.py +0 -0
  251. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/listmapz.py +0 -0
  252. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/listz.py +0 -0
  253. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/mapz.py +0 -0
  254. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/reval.py +0 -0
  255. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/deal/strz.py +0 -0
  256. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/itemz.py +0 -0
  257. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writer/mg.py +0 -0
  258. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/base.py +0 -0
  259. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/conf.py +0 -0
  260. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/jsonval.py +0 -0
  261. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/listmapz.py +0 -0
  262. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/listz.py +0 -0
  263. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/mapz.py +0 -0
  264. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/reval.py +0 -0
  265. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/deal/strz.py +0 -0
  266. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/itemz.py +0 -0
  267. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/mg.py +0 -0
  268. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/test.py +0 -0
  269. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writerz/testx.py +0 -0
  270. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/writez.py +0 -0
  271. {buildz-0.6.44 → buildz-0.6.46}/buildz/xf/xargs.py +0 -0
  272. {buildz-0.6.44 → buildz-0.6.46}/buildz/xz/__init__.py +0 -0
  273. {buildz-0.6.44 → buildz-0.6.46}/buildz/xz/conf.js +0 -0
  274. {buildz-0.6.44 → buildz-0.6.46}/buildz/xz/data.js +0 -0
  275. {buildz-0.6.44 → buildz-0.6.46}/buildz/xz/test.py +0 -0
  276. {buildz-0.6.44 → buildz-0.6.46}/buildz/xz/trs.py +0 -0
  277. {buildz-0.6.44 → buildz-0.6.46}/buildz.egg-info/dependency_links.txt +0 -0
  278. {buildz-0.6.44 → buildz-0.6.46}/buildz.egg-info/top_level.txt +0 -0
  279. {buildz-0.6.44 → buildz-0.6.46}/setup.cfg +0 -0
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ recursive-include buildz *
3
+ recursive-include notes *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.44
3
+ Version: 0.6.46
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
@@ -37,33 +37,6 @@ Codes of this project are not allowed to be used for AI training or any other fo
37
37
 
38
38
  运行python -m buildz查看帮助
39
39
 
40
- 持续更新中。。。
41
- 2025/01/21:
42
- 修改xf的读写,读加上报错字符串位置,写改成递归调用减少时间开销
43
- 2025/01/17:
44
- 加了argz模块和evalz模块
45
- argz模块用于命令行参数匹配
46
- evalz模块用于可配置真假判断
47
- 命令行还差一个入参转map的
48
- 2024/12/22:
49
- 增加pathz模块,方便处理路径,修改ioc和db
50
- 2024/12/18:
51
- 增加数据映射xz,数据库db增加类似orm功能以及表和索引结构查询功能(目前只写了mysql,oracle,sqlite3的查询),配置文件读写xf的输出增加对ListMap的支持(dumpx, dumpxf)
52
- 2024/11/11:
53
- 新增buildz.tz.xfind,对json做查询用的,功能类似jsonpath,自己实现的原因是好玩,以及不想为了用jsonpath去学对应的语法
54
- 2024/10/08:
55
- 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
56
- 2024/09/25:
57
- 修复bug,增强html的搜索功能,增强auto配置功能
58
- auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
59
- 2024/09/24:
60
- 增加模块html:html页面解析
61
- 增加模块auto:自动化调用
62
-
63
- 2024/09/09
64
- ioc:
65
- 加修饰器
66
- 加配置refs
67
40
 
68
41
  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,特别慢!)
69
42
 
@@ -24,33 +24,6 @@ Codes of this project are not allowed to be used for AI training or any other fo
24
24
 
25
25
  运行python -m buildz查看帮助
26
26
 
27
- 持续更新中。。。
28
- 2025/01/21:
29
- 修改xf的读写,读加上报错字符串位置,写改成递归调用减少时间开销
30
- 2025/01/17:
31
- 加了argz模块和evalz模块
32
- argz模块用于命令行参数匹配
33
- evalz模块用于可配置真假判断
34
- 命令行还差一个入参转map的
35
- 2024/12/22:
36
- 增加pathz模块,方便处理路径,修改ioc和db
37
- 2024/12/18:
38
- 增加数据映射xz,数据库db增加类似orm功能以及表和索引结构查询功能(目前只写了mysql,oracle,sqlite3的查询),配置文件读写xf的输出增加对ListMap的支持(dumpx, dumpxf)
39
- 2024/11/11:
40
- 新增buildz.tz.xfind,对json做查询用的,功能类似jsonpath,自己实现的原因是好玩,以及不想为了用jsonpath去学对应的语法
41
- 2024/10/08:
42
- 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
43
- 2024/09/25:
44
- 修复bug,增强html的搜索功能,增强auto配置功能
45
- auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
46
- 2024/09/24:
47
- 增加模块html:html页面解析
48
- 增加模块auto:自动化调用
49
-
50
- 2024/09/09
51
- ioc:
52
- 加修饰器
53
- 加配置refs
54
27
 
55
28
  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,特别慢!)
56
29
 
@@ -103,12 +103,18 @@ class ArgItem(Base):
103
103
  find = False
104
104
  for key, vtype in self.trs:
105
105
  if vtype =="dict":
106
- if key in maps:
107
- val = maps[key]
106
+ if xf.dhas(maps, key):
107
+ val = xf.dget(maps, key)
108
108
  if self.remove:
109
- del maps[key]
110
- find = True
109
+ xf.dremove(maps, key)
110
+ find=True
111
111
  break
112
+ #if key in maps:
113
+ # val = maps[key]
114
+ # if self.remove:
115
+ # del maps[key]
116
+ # find = True
117
+ # break
112
118
  else:
113
119
  if key in set_args:
114
120
  val = args[key]
@@ -123,7 +129,8 @@ class ArgItem(Base):
123
129
  if not find and self.need:
124
130
  raise ArgExp("need", set(self.trs), self.des)
125
131
  if self.vtype == 'dict':
126
- rst_maps[self.key] = val
132
+ xf.dset(rst_maps, self.key, val)
133
+ #rst_maps[self.key] = val
127
134
  else:
128
135
  rst_args[self.key] = val
129
136
 
@@ -135,9 +142,11 @@ class ArgItemBuild(build.Build):
135
142
  value = xf.g(conf, value=None)
136
143
  des = xf.g(conf, des=None)
137
144
  remove = xf.g(conf, remove=True)
138
- src = conf['src']
139
- if type(src) not in (list, tuple):
140
- src = [src]
145
+ src = xf.g(conf, src=None)
146
+ srcs = xf.g(conf, srcs = [])
147
+ if src is not None:
148
+ srcs.append(src)
149
+ src = srcs
141
150
  item = ArgItem(key, vtype, need, default, value, des, remove)
142
151
  for s in src:
143
152
  if type(s) not in (list, tuple):
@@ -1,5 +1,5 @@
1
1
  #
2
- from buildz import Base, xf
2
+ from buildz import Base, xf,pyz
3
3
  class Build(Base):
4
4
  def init(self, *binds):
5
5
  self.builder = None
@@ -11,10 +11,11 @@ class Build(Base):
11
11
  def call(self, conf):
12
12
  assert 0, 'not impl'
13
13
  class Builder(Base):
14
- def init(self, fc = None, key_id = "id"):
14
+ def init(self, fc = None, key_id = "id", default_key = "main"):
15
15
  self.vars = {}
16
16
  self.confs = {}
17
17
  self.key_id = key_id
18
+ self.df_key = default_key
18
19
  self.set_fc(fc)
19
20
  def set_fc(self, fc):
20
21
  fc.bind(self)
@@ -34,6 +35,12 @@ class Builder(Base):
34
35
  conf = self.confs[key]
35
36
  return self.fc(conf)
36
37
  def conf(self, data):
38
+ if type(data) == dict:
39
+ tp = xf.g(data, type=None)
40
+ if tp is not None and type(tp) not in (list, tuple, dict):
41
+ if self.key_id not in data:
42
+ data[self.key_id] = self.df_key
43
+ data = [data]
37
44
  if type(data) in (list, tuple):
38
45
  rst = {}
39
46
  for it in data:
@@ -44,5 +51,6 @@ class Builder(Base):
44
51
  data = rst
45
52
  self.confs = data
46
53
  return self
47
- def call(self, data, key="main"):
54
+ def call(self, data, key=None):
55
+ key = pyz.nnull(key, self.df_key)
48
56
  return self.conf(data).get_conf(key)
@@ -14,6 +14,9 @@ class Fc(Base):
14
14
  if isinstance(fc, Fc):
15
15
  return fc
16
16
  return Fc(fc)
17
+ class RetFc(Fc):
18
+ def call(self, args, maps):
19
+ return args, maps
17
20
  class ArgsCall(Fc):
18
21
  def init(self, fc, args=None, name = None):
19
22
  fc=self.make(fc)
@@ -88,23 +91,34 @@ class FcBuild(build.Build):
88
91
  src = xf.g(conf, src = None)
89
92
  fc = self.builder.get_var(src)
90
93
  return Fc(fc)
94
+ class RetBuild(build.Build):
95
+ def call(self, conf):
96
+ ctype = xf.g(conf, type=None)
97
+ if ctype != "ret":
98
+ return None
99
+ return RetFc()
91
100
  class CallBuild(build.Build):
92
101
  def init(self):
93
102
  self.args = argz.ArrArgsBuild()
94
103
  self.eval = evalx.EvalBuild()
95
104
  self.fc = FcBuild()
96
105
  self.calls = CallsBuild()
106
+ self.ret = RetBuild()
97
107
  super().init(self.args, self.eval, self.fc, self.calls)
98
108
  def call(self, conf):
99
109
  args = self.args(conf)
100
110
  judges = self.eval(conf)
101
111
  fc = self.fc(conf)
102
112
  calls = self.calls(conf)
113
+ ret = self.ret(conf)
103
114
  bfc = fc is None
104
115
  bcls = calls is None
105
- assert (bfc+bcls)==1
116
+ bret = ret is None
117
+ assert (bfc+bcls+bret)==2
106
118
  if fc is None:
107
119
  fc = calls
120
+ if fc is None:
121
+ fc = ret
108
122
  if args is not None:
109
123
  fc = ArgsCall(fc, args)
110
124
  if judges is not None:
@@ -22,10 +22,10 @@
22
22
  }
23
23
  maps: {
24
24
  filepath: {
25
- src: [f, fp, filepath]
25
+ srcs: [f, fp, filepath]
26
26
  }
27
27
  content: {
28
- src: [c, ct, content]
28
+ srcs: [c, ct, content]
29
29
  }
30
30
  }
31
- }
31
+ }
@@ -0,0 +1,42 @@
1
+ from buildz import argz,xf,Base,evalz,pathz
2
+ import sys,os
3
+
4
+ path = pathz.Path()
5
+ path.set("res", path(path.dir(__file__), "tests"))
6
+ conf = xf.loadf(path.res("conf.js"))
7
+ conf=xf.loads(r"""
8
+ type=ret
9
+ maps={
10
+ spt: {
11
+ src: [(env, spt), d]
12
+ default: 1
13
+ value: '.'
14
+ }
15
+ eglobal: {
16
+ src: [(env, global), d]
17
+ default:1
18
+ value: true
19
+ }
20
+ }
21
+ """)
22
+
23
+ mg = argz.CallBuilder()
24
+ fc = mg(conf)
25
+
26
+ data = xf.loads(r"""
27
+ args=[]
28
+ maps={
29
+ env: {
30
+ spt: x
31
+ }
32
+ }
33
+ """)
34
+ args = xf.g(data, args=[])
35
+ maps = xf.g(data, maps={})
36
+
37
+ rst = fc(args, maps)
38
+ print(f"rst: {rst}")
39
+ '''
40
+ python -m buildz.argz.testx
41
+ python -m buildz.argz.test search /d/rootz f=asf c=test
42
+ '''
@@ -1,5 +1,33 @@
1
1
  #coding=utf-8
2
2
  from . import pyz
3
+ def fcBase(cls, lst=0, keys = tuple()):
4
+ class _Base(cls):
5
+ def str(self):
6
+ return str(self.__class__)
7
+ def repr(self):
8
+ return self.str()
9
+ def __str__(self):
10
+ return self.str()
11
+ def __repr__(self):
12
+ return self.repr()
13
+ def __call__(self, *a, **b):
14
+ return self.call(*a, **b)
15
+ def call(self, *a, **b):
16
+ return None
17
+ def init(self, *a, **b):
18
+ pass
19
+ def __init__(self, *a, **b):
20
+ sa = a[:lst]
21
+ a = a[lst:]
22
+ sb = {}
23
+ for k in keys:
24
+ if k in b:
25
+ sb[k] = b[k]
26
+ del b[k]
27
+ super().__init__(*sa, **sb)
28
+ self.init(*a, **b)
29
+ return _Base
30
+
3
31
  class Base:
4
32
  def str(self):
5
33
  return str(self.__class__)
@@ -2,7 +2,7 @@
2
2
  #author:
3
3
  from .dirz import dirs, FileDeal
4
4
  from .lsf import lists, search, searchd,searchs,_search
5
- from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs
5
+ from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs, xors, fxors, coverx, covers, fcovers
6
6
  from .fhs import fhash, fhashs
7
7
 
8
8
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -56,23 +56,37 @@ pass
56
56
 
57
57
  dirname = dirpath
58
58
 
59
- def fcover(filepath, wsize = 1024*10):
60
- st = os.stat(filepath)
61
- size = st.st_size
62
- bs = b'a'*wsize
63
- with open(filepath, 'wb') as f:
64
- for i in range(0, size, wsize):
65
- f.write(bs)
59
+ def coverx(sz, chars=None):
60
+ if chars is None:
61
+ chars = b"a"
62
+ if type(chars)==str:
63
+ chars = chars.encode("utf-8")
64
+ l = sz//len(chars)
65
+ cs = chars*l
66
+ left = sz%len(chars)
67
+ cs+=chars[:left]
68
+ return cs
69
+ def fcover(filepath, wsize = 1024*10, chars=None):
70
+ st = os.stat(filepath)
71
+ size = st.st_size
72
+ #print(f"{filepath}:{size}")
73
+ #bs = b'a'*wsize
74
+ with open(filepath, 'wb') as f:
75
+ for i in range(0, size, wsize):
76
+ sz = min(size-i, wsize)
77
+ bs = coverx(sz, chars)
78
+ #print(f"bs: {len(bs)}, sz: {sz}, i:{i}, wsize:{wsize}")
79
+ f.write(bs)
66
80
 
67
81
  pass
68
82
  cover = fcover
69
- def removes(fp, cover = False):
83
+ def removes(fp, cover = False,wsize = 1024*10,chars=None):
70
84
  if not os.path.exists(fp):
71
85
  return
72
86
  if os.path.isfile(fp):
73
87
  #print(f"remove file '{fp}'")
74
88
  if cover:
75
- fcover(fp)
89
+ fcover(fp,wsize=wsize, chars=chars)
76
90
  os.remove(fp)
77
91
  return
78
92
  fps = os.listdir(fp)
@@ -123,4 +137,36 @@ def is_abs(fp):
123
137
  return False
124
138
 
125
139
  pass
126
-
140
+
141
+ def xors(bs, codes):
142
+ if type(codes)==str:
143
+ codes = codes.encode("utf-8")
144
+ rst = b''
145
+ codes= list(codes)
146
+ for i in range(0, len(bs), len(codes)):
147
+ _bs = bs[i:i+len(codes)]
148
+ rs = bytes([a^b for a,b in zip(_bs, codes)])
149
+ rst+=rs
150
+ codes = codes[1:]+codes[:1]
151
+ return rst
152
+
153
+ def fxors(fp, codes, ofp=None):
154
+ bs = read(fp, 'rb')
155
+ bs = xors(bs, codes)
156
+ if ofp is not None:
157
+ write(bs, ofp, 'wb')
158
+ else:
159
+ return bs
160
+
161
+ pass
162
+ def covers(dp, chars=None,wsize = 1024*10,):
163
+ if not os.path.exists(dp):
164
+ return
165
+ from . import lsf
166
+ fs = lsf.search(dp)
167
+ #print(f"fs: {fs}")
168
+ for fp in fs:
169
+ fcover(fp,wsize=wsize, chars=chars)
170
+
171
+ pass
172
+ fcovers = covers
@@ -270,38 +270,44 @@ class Confs(Base):
270
270
  return self.fcs[key]
271
271
  def var_keys(self):
272
272
  return self.vars.keys()
273
- def get_var(self, key, i=-1):
273
+ def get_var(self, key, i=-1, ns = None):
274
+ key = self.gid(ns, key)
274
275
  if not self.has_var(key):
275
276
  return None, False
276
277
  return self.vars[key][i], True
277
- def set_vars(self, vars):
278
- [self.set_var(key,val) for key,val in vars.items()]
279
- def unset_vars(self, vars):
280
- [self.unset_var(key) for key in vars]
281
- def push_vars(self, vars):
278
+ def set_vars(self, vars, ns = None):
279
+ [self.set_var(key,val,ns) for key,val in vars.items()]
280
+ def unset_vars(self, vars, ns = None):
281
+ [self.unset_var(key,ns) for key in vars]
282
+ def push_vars(self, vars, ns = None):
282
283
  if vars is not None:
283
- [self.push_var(key,val) for key,val in vars.items()]
284
+ [self.push_var(key,val,ns) for key,val in vars.items()]
284
285
  return pyz.with_out(lambda :self.pop_vars(vars))
285
- def pop_vars(self, vars):
286
+ def pop_vars(self, vars, ns = None):
286
287
  if vars is not None:
287
- [self.pop_var(key) for key in vars]
288
- def set_var(self, key, val):
288
+ [self.pop_var(key,ns) for key in vars]
289
+ def set_var(self, key, val, ns = None):
289
290
  """
290
291
  will remove push datas
291
292
  """
293
+ key = self.gid(ns, key)
292
294
  self.vars[key] = [val]
293
- def unset_var(self, key):
295
+ def unset_var(self, key, ns = None):
296
+ key = self.gid(ns, key)
294
297
  if key in self.vars:
295
298
  del self.vars[key]
296
- def push_var(self, key, val):
299
+ def push_var(self, key, val, ns = None):
300
+ key = self.gid(ns, key)
297
301
  if key not in self.vars:
298
302
  self.vars[key] = []
299
303
  self.vars[key].append(val)
300
- def has_var(self, key):
304
+ def has_var(self, key, ns=None):
305
+ key = self.gid(ns, key)
301
306
  if key not in self.vars:
302
307
  return False
303
308
  return len(self.vars[key])>0
304
- def pop_var(self, key):
309
+ def pop_var(self, key, ns=None):
310
+ key = self.gid(ns, key)
305
311
  if not self.has_var(key):
306
312
  return
307
313
  self.vars[key].pop(-1)
@@ -2,11 +2,12 @@
2
2
  from buildz import Base, xf
3
3
  from ..ioc.decorator import decorator,IOCDObj
4
4
  class Loads(IOCDObj):
5
- def init(self, conf, vtype = "envs"):
5
+ def init(self, conf, vtype = "envs", flush=False):
6
6
  if type(conf)==str:
7
7
  conf = xf.loads(conf)
8
8
  self._type = vtype
9
9
  self.conf = conf
10
+ self.flush = flush
10
11
  def bind(self, wrap):
11
12
  super().bind(wrap)
12
13
  self.decorator.add_bind(self)
@@ -17,10 +18,13 @@ class Loads(IOCDObj):
17
18
  for key, val in self.conf.items():
18
19
  key = confs.gid(self.decorator.namespace, key)
19
20
  maps[key] = val
20
- if self._type == 'env':
21
- confs.flush_env(maps)
21
+ if self._type in ('env', 'envs'):
22
+ if self.flush:
23
+ confs.flush_env(maps)
22
24
  xf.deep_fill(maps, conf.envs, 1)
23
25
  else:
26
+ if self.flush:
27
+ maps = xf.unflush_maps(maps, confs.id)
24
28
  confs.push_vars(maps)
25
29
 
26
30
  pass
@@ -32,4 +36,5 @@ class Loadf(Loads):
32
36
 
33
37
  pass
34
38
  decorator.regist("load_conf", Loads)
39
+ decorator.regist("loads_conf", Loads)
35
40
  decorator.regist("loadf_conf", Loadf)
@@ -47,6 +47,7 @@ class RefDeal(FormatDeal):
47
47
  try:
48
48
  return edata.conf.get_obj(key, info = info, src = edata.src)
49
49
  except IdNotFoundError as exp:
50
+ #print(f"[testz] ref data: {data} in {edata.conf}")
50
51
  if "default" in data:
51
52
  key = data['default']
52
53
  return self.get_obj(key, edata.conf, src=edata.src)
@@ -0,0 +1,6 @@
1
+ from ..base import Base, fcBase
2
+ from .. import pathz
3
+ path = pathz.Path()
4
+ path.set('local', path.dir(__file__))
5
+ path.set('conf', path.local('conf'),curr=0)
6
+
@@ -0,0 +1,5 @@
1
+ from ..base import *
2
+ basepath = path
3
+ path = pathz.Path()
4
+ path.set("conf", basepath.local("ioc/conf"), curr=0)
5
+
@@ -0,0 +1,5 @@
1
+ from .ids import Ids
2
+ from .base import Base
3
+ class Confs(Base):
4
+ '''
5
+ '''
@@ -0,0 +1,117 @@
1
+ from .base import Base, fcBase
2
+ from buildz import xf,pyz
3
+ class EnvExp(Exception):
4
+ def __init__(self, id):
5
+ super().__init__(f"EnvExp id not found: '{id}'")
6
+ class BuildEnv(Base):
7
+ """
8
+ 3种从环境获取参数的方式:
9
+ 从系统环境获取
10
+ 从命令行输入参数获取
11
+ 从本对象环境数据获取
12
+ 2种设置环境参数方式:
13
+ 设置到系统环境
14
+ 设置到本对象环境数据
15
+ """
16
+ def init(self, conf):
17
+ self.conf = conf
18
+ self.builds = {
19
+ }
20
+ def build_args(self):
21
+ pass
22
+ def build_conf(self, ids, flush, flush_list, exp, default):
23
+ return Env(ids, None, flush, flush_list, exp, default)
24
+ def deal(self, mg, args, spt, eglobal, orders, from_args, flush, flush_list, exp, default):
25
+ envs = []
26
+ env = None
27
+ ids = ids.Ids(spt)
28
+ if 'conf' not in orders:
29
+ orders.append('conf')
30
+ for order in orders:
31
+ _env = self.builds[order](ids, flush, flush_list, exp, default)
32
+ if order == 'conf':
33
+ env = _env
34
+ envs.append(_env)
35
+ env = Envs(envs, env)
36
+ return env
37
+ def call(self, mg, conf, args):
38
+ args, maps = self.conf([], conf)
39
+ return self.deal(mg, args, **maps)
40
+
41
+ pass
42
+ class Env(Base):
43
+ def _get(self, id):
44
+ return xf.dhget(self.maps, id)
45
+ def _set(self, id, val):
46
+ return xf.dset(self.maps, id, val)
47
+ def _has(self, id):
48
+ return xf.dhas(self.maps, id)
49
+ def _del(self, id):
50
+ return xf.dremove(self.maps, id)
51
+ def _fill(self, maps):
52
+ return xf.fill(maps, self.maps)
53
+ def init(self, ids=None, maps=None, flush=True, flush_list = False):
54
+ self.flush_list = flush_list
55
+ self.ids = ids
56
+ self.flush = flush
57
+ if maps is None:
58
+ maps = {}
59
+ if flush:
60
+ maps=xf.flush_maps(maps, self.ids.ids, flush_list)
61
+ self.maps = maps
62
+ def update(self, maps, flush=None, flush_list=None):
63
+ flush = pyz.nnull(flush, self.flush)
64
+ flush_list = pyz.nnull(flush_list, self.flush_list)
65
+ if flush:
66
+ maps = xf.flush_maps(maps, self.ids.ids, flush_list)
67
+ self._fill(maps)
68
+ def has(self, id, flush=None):
69
+ flush = pyz.not_null(flush, self.flush)
70
+ full_id = id
71
+ if flush:
72
+ ids = self.ids.ids(id)
73
+ else:
74
+ ids = id
75
+ return self._has(ids)
76
+ def get(self, id, flush=None):
77
+ flush = pyz.not_null(flush, self.flush)
78
+ full_id = id
79
+ if flush:
80
+ ids = self.ids.ids(id)
81
+ else:
82
+ ids = id
83
+ return self._get(ids)
84
+ def set(self, id, val, flush=None):
85
+ flush = pyz.not_null(flush, self.flush)
86
+ if flush:
87
+ id = self.ids.ids(id)
88
+ self._set(self.maps, id, val)
89
+
90
+ class SysEnv(Env):
91
+ def _get(self, id, exp_def=None):
92
+ sysdt = os.getenv(id)
93
+ return sysdt
94
+ def _has(self, id):
95
+ dt = self._get(id)
96
+ return dt is not None
97
+ def init(self, ids):
98
+ super().init(ids, flush=False)
99
+
100
+ class Envs(Env):
101
+ def init(self, envs, env):
102
+ self.envs = envs
103
+ self.env = env
104
+ def get(self, id):
105
+ for env in self.envs:
106
+ if env.has(id):
107
+ return env.get(id)
108
+ return self.env.get(id)
109
+ def set(self, id, val, *a,**b):
110
+ return self.env.set(id, val, *a,**b)
111
+ def has(self, id):
112
+ for env in self.envs:
113
+ if env.has(id):
114
+ return True
115
+ return self.env.has(id)
116
+ def update(self, maps, *a,**b):
117
+ return self.env.update(maps,*a,**b)
@@ -0,0 +1,23 @@
1
+ from .base import Base
2
+ class Ids(Base):
3
+ '''
4
+ '''
5
+ def init(self, spt):
6
+ self.spt = spt
7
+ def id(self, *ids):
8
+ if len(ids)==0:
9
+ return None
10
+ elif len(ids)==1:
11
+ if type(ids[0]) in (list, tuple):
12
+ ids = ids[0]
13
+ return self.spt.join(ids)
14
+ def ids(self, id):
15
+ if type(id) in (list, tuple):
16
+ return id
17
+ return id.split(self.spt)
18
+ def call(self, a,b):
19
+ a = self.ids(a)
20
+ b = self.ids(b)
21
+ return self.id(a,b)
22
+ pass
23
+