buildz 0.6.29__tar.gz → 0.6.30__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 (208) hide show
  1. {buildz-0.6.29/buildz.egg-info → buildz-0.6.30}/PKG-INFO +3 -1
  2. {buildz-0.6.29 → buildz-0.6.30}/README.md +2 -0
  3. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/wrap.py +3 -2
  4. buildz-0.6.30/buildz/tz/test_xfind.py +74 -0
  5. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/time/timez.py +1 -1
  6. buildz-0.6.30/buildz/tz/xfind.py +232 -0
  7. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/mapz.py +22 -0
  8. {buildz-0.6.29 → buildz-0.6.30/buildz.egg-info}/PKG-INFO +3 -1
  9. {buildz-0.6.29 → buildz-0.6.30}/buildz.egg-info/SOURCES.txt +2 -0
  10. {buildz-0.6.29 → buildz-0.6.30}/setup.py +1 -1
  11. {buildz-0.6.29 → buildz-0.6.30}/LICENSE +0 -0
  12. {buildz-0.6.29 → buildz-0.6.30}/MANIFEST.in +0 -0
  13. {buildz-0.6.29 → buildz-0.6.30}/buildz/__init__.py +0 -0
  14. {buildz-0.6.29 → buildz-0.6.30}/buildz/__main__.py +0 -0
  15. {buildz-0.6.29 → buildz-0.6.30}/buildz/argx.py +0 -0
  16. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/__init__.py +0 -0
  17. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/cache.py +0 -0
  18. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/config.py +0 -0
  19. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/dbs.py +0 -0
  20. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/deal.py +0 -0
  21. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/deal_list.py +0 -0
  22. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/deal_type.py +0 -0
  23. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/defs.py +0 -0
  24. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/factory.py +0 -0
  25. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/init.py +0 -0
  26. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/log.py +0 -0
  27. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/request.py +0 -0
  28. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/run.py +0 -0
  29. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/save.py +0 -0
  30. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/cache/cache.js +0 -0
  31. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/config/base.js +0 -0
  32. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/config/config.js +0 -0
  33. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/data/fp.js +0 -0
  34. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/data/item1.js +0 -0
  35. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/data/item2.js +0 -0
  36. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/res/data/test.js +0 -0
  37. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/test.py +0 -0
  38. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/test/xtest.py +0 -0
  39. {buildz-0.6.29 → buildz-0.6.30}/buildz/auto/verify.py +0 -0
  40. {buildz-0.6.29 → buildz-0.6.30}/buildz/base.py +0 -0
  41. {buildz-0.6.29 → buildz-0.6.30}/buildz/cmd.py +0 -0
  42. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/__main__.py +0 -0
  43. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/__init__.py +0 -0
  44. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/basez.py +0 -0
  45. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/clickhousez.py +0 -0
  46. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/lib/readme +0 -0
  47. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/mysqlz.py +0 -0
  48. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/oraclez.py +0 -0
  49. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/postgresqlz.py +0 -0
  50. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/dv/structz.py +0 -0
  51. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/install.txt +0 -0
  52. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/run.conf +0 -0
  53. {buildz-0.6.29 → buildz-0.6.30}/buildz/db/runz.py +0 -0
  54. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/ioc/deal.py +0 -0
  55. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/ioc/help.py +0 -0
  56. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/myers/deal.py +0 -0
  57. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/myers/help.py +0 -0
  58. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/conf/ioc.js +0 -0
  59. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/conf/main.js +0 -0
  60. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/conf/myers.js +0 -0
  61. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/conf/search.js +0 -0
  62. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/conf/xf.js +0 -0
  63. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/help/default.js +0 -0
  64. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/help/ioc.js +0 -0
  65. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/help/myers.js +0 -0
  66. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/help/search.js +0 -0
  67. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/help/xf.js +0 -0
  68. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/res/test.js +0 -0
  69. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/search/deal.py +0 -0
  70. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/search/help.py +0 -0
  71. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/test.py +0 -0
  72. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/xf/deal.py +0 -0
  73. {buildz-0.6.29 → buildz-0.6.30}/buildz/demo/xf/help.py +0 -0
  74. {buildz-0.6.29 → buildz-0.6.30}/buildz/fz/__init__.py +0 -0
  75. {buildz-0.6.29 → buildz-0.6.30}/buildz/fz/dirz.py +0 -0
  76. {buildz-0.6.29 → buildz-0.6.30}/buildz/fz/fhs.py +0 -0
  77. {buildz-0.6.29 → buildz-0.6.30}/buildz/fz/fio.py +0 -0
  78. {buildz-0.6.29 → buildz-0.6.30}/buildz/fz/lsf.py +0 -0
  79. {buildz-0.6.29 → buildz-0.6.30}/buildz/html/__init__.py +0 -0
  80. {buildz-0.6.29 → buildz-0.6.30}/buildz/html/test/demo.html +0 -0
  81. {buildz-0.6.29 → buildz-0.6.30}/buildz/html/test/test.py +0 -0
  82. {buildz-0.6.29 → buildz-0.6.30}/buildz/html/xml.py +0 -0
  83. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/__init__.py +0 -0
  84. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/base.py +0 -0
  85. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/init.py +0 -0
  86. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc/base.py +0 -0
  87. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc/conf.py +0 -0
  88. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc/confs.py +0 -0
  89. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc/decorator.py +0 -0
  90. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc/single.py +0 -0
  91. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/base.py +0 -0
  92. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/branch.py +0 -0
  93. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/call.py +0 -0
  94. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/calls.py +0 -0
  95. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  96. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  97. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  98. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  99. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  100. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  101. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  102. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  103. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  104. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  105. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  106. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  107. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  108. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  109. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  110. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  111. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  112. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  113. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  114. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  115. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  116. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  117. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  118. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  119. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  120. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/deal.py +0 -0
  121. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/demo.py +0 -0
  122. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/env.py +0 -0
  123. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/init.py +0 -0
  124. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/ioc.py +0 -0
  125. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/iocf.py +0 -0
  126. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/join.py +0 -0
  127. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/list.py +0 -0
  128. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/map.py +0 -0
  129. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/mcall.py +0 -0
  130. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/obj.py +0 -0
  131. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/ovar.py +0 -0
  132. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/ref.py +0 -0
  133. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/refs.py +0 -0
  134. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/val.py +0 -0
  135. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/var.py +0 -0
  136. {buildz-0.6.29 → buildz-0.6.30}/buildz/ioc/ioc_deal/xfile.py +0 -0
  137. {buildz-0.6.29 → buildz-0.6.30}/buildz/pyz.py +0 -0
  138. {buildz-0.6.29 → buildz-0.6.30}/buildz/tools.py +0 -0
  139. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/__init__.py +0 -0
  140. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/log.py +0 -0
  141. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/myers_diff.py +0 -0
  142. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/time/__init__.py +0 -0
  143. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/__init__.py +0 -0
  144. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/base.py +0 -0
  145. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/getch.py +0 -0
  146. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/lx.py +0 -0
  147. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/test.py +0 -0
  148. {buildz-0.6.29 → buildz-0.6.30}/buildz/tz/tio/win.py +0 -0
  149. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/__init__.py +0 -0
  150. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/__main__.py +0 -0
  151. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/code.py +0 -0
  152. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/code_modify.py +0 -0
  153. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/copy_old.py +0 -0
  154. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/file.py +0 -0
  155. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/base.py +0 -0
  156. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/buffer.py +0 -0
  157. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/listz.py +0 -0
  158. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/lr.py +0 -0
  159. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/lrval.py +0 -0
  160. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/mapz.py +0 -0
  161. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/nextz.py +0 -0
  162. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/reval.py +0 -0
  163. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/setz.py +0 -0
  164. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/spc.py +0 -0
  165. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/spt.py +0 -0
  166. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/deal/strz.py +0 -0
  167. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/exp.py +0 -0
  168. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/item.py +0 -0
  169. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/mg.py +0 -0
  170. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loader/pos.py +0 -0
  171. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/base.py +0 -0
  172. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/buffer.py +0 -0
  173. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  174. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/listz.py +0 -0
  175. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/lr.py +0 -0
  176. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/lrval.py +0 -0
  177. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/mapz.py +0 -0
  178. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/nextz.py +0 -0
  179. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/reval.py +0 -0
  180. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/setz.py +0 -0
  181. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/spc.py +0 -0
  182. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/spt.py +0 -0
  183. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/strz.py +0 -0
  184. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  185. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  186. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/exp.py +0 -0
  187. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/item.py +0 -0
  188. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/mg.py +0 -0
  189. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/pos.py +0 -0
  190. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/test.py +0 -0
  191. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/loaderz/test1.py +0 -0
  192. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/read.py +0 -0
  193. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/readz.py +0 -0
  194. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/stack.py +0 -0
  195. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/write.py +0 -0
  196. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/base.py +0 -0
  197. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/conf.py +0 -0
  198. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/deal/jsonval.py +0 -0
  199. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/deal/listz.py +0 -0
  200. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/deal/mapz.py +0 -0
  201. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/deal/reval.py +0 -0
  202. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/deal/strz.py +0 -0
  203. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/itemz.py +0 -0
  204. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/writer/mg.py +0 -0
  205. {buildz-0.6.29 → buildz-0.6.30}/buildz/xf/xargs.py +0 -0
  206. {buildz-0.6.29 → buildz-0.6.30}/buildz.egg-info/dependency_links.txt +0 -0
  207. {buildz-0.6.29 → buildz-0.6.30}/buildz.egg-info/top_level.txt +0 -0
  208. {buildz-0.6.29 → buildz-0.6.30}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.29
3
+ Version: 0.6.30
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/11/11:
38
+ 新增buildz.tz.xfind,对json做查询用的,功能类似jsonpath,自己实现的原因是好玩,以及不想为了用jsonpath去学对应的语法
37
39
  2024/10/08:
38
40
  增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
39
41
  2024/09/25:
@@ -21,6 +21,8 @@
21
21
  运行python -m buildz查看帮助
22
22
 
23
23
  持续更新中。。。
24
+ 2024/11/11:
25
+ 新增buildz.tz.xfind,对json做查询用的,功能类似jsonpath,自己实现的原因是好玩,以及不想为了用jsonpath去学对应的语法
24
26
  2024/10/08:
25
27
  增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
26
28
  2024/09/25:
@@ -17,7 +17,7 @@ def pkg(fp):
17
17
  __import__(fp)
18
18
 
19
19
  pass
20
- def imports(dp, pts, pfx=""):
20
+ def imports(dp, pts=".*\.py$", pfx=""):
21
21
  """
22
22
  find filepath by dirpath(dp) and pattern(pts),
23
23
  import:
@@ -31,4 +31,5 @@ def imports(dp, pts, pfx=""):
31
31
  for fp in fps:
32
32
  pkg(fp)
33
33
 
34
- pass
34
+ pass
35
+ includes=imports
@@ -0,0 +1,74 @@
1
+ #
2
+
3
+ from buildz.tz import xfind as sh
4
+ from buildz import xf
5
+ s = r"""
6
+ name=zero
7
+ age=12000
8
+ datas = [
9
+ {
10
+ name=notebook
11
+ price=6500
12
+ power=200w
13
+ contains=[buildz,pyz]
14
+ }
15
+ {
16
+ name=buildz
17
+ function='easy coding'
18
+ contains = [
19
+ {
20
+ name=xf
21
+ function = 'json-like easier format'
22
+ }
23
+ {
24
+ name=ioc
25
+ function = 'factory build items by profile or wrap'
26
+ }
27
+ {
28
+ name=auto
29
+ function = 'easy to make auto functions'
30
+ }
31
+ ]
32
+ }
33
+ {
34
+ name=pyz
35
+ function = 'tools'
36
+ contains = [
37
+ {
38
+ name=nxf
39
+ function = 'safely transfer data by devices'
40
+ }
41
+ {
42
+ name=netx
43
+ function = 'both side RPC support'
44
+ }
45
+ {
46
+ name=logz
47
+ function = 'log recoding'
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ """
53
+ """
54
+
55
+ python test_xfind.py
56
+
57
+ """
58
+ data = xf.loads(s)
59
+ print(xf.dumps(data, format=1))
60
+ node = sh.Node.parse(data)
61
+ arr = sh.SearchArray.single(node)
62
+ pts = r"""
63
+ [
64
+ [
65
+ or,
66
+ (mkv, name, nxf)
67
+ (mkv, name, xf)
68
+ ]
69
+ [re, key, "[f].*"]
70
+ ]
71
+ """
72
+ arr = arr.searchs_dfc(pts)
73
+ print("Rst:", arr.datas())
74
+ print("Vals:", arr.vals())
@@ -3,7 +3,7 @@ from ... import Base
3
3
  from ..log import FpLog
4
4
  class Clock(Base):
5
5
  def default(self, cost, fc, rst, *a, **b):
6
- print(f"cost {cost} sec on {fc}(*{a}, **{b})")
6
+ print(f"cost {cost} sec on {fc}")
7
7
  def init(self, fc=None):
8
8
  if fc is None:
9
9
  fc = self.default
@@ -0,0 +1,232 @@
1
+ from .. import xf
2
+ from ..base import Base
3
+ import re
4
+
5
+ def default_update(node, args, up):
6
+ """
7
+ 默认args是patterns, deep形式
8
+ """
9
+ deep = args[1]
10
+ if deep == 0:
11
+ return None
12
+ if deep>0:
13
+ deep -= 1
14
+ return [args[0], deep]
15
+
16
+ pass
17
+ class DefaultSearch:
18
+ """
19
+ 默认args是patterns, deep形式
20
+ patterns:
21
+ [or, [re, key, 'a.*'], ['=', key, ]]
22
+ """
23
+ def __init__(self):
24
+ self.opts = {}
25
+ self.opts['or'] = self.fc_or
26
+ self.opts['and'] = self.fc_and
27
+ self.opts['not'] = self.fc_not
28
+ self.opts['xor'] = self.fc_xor
29
+ self.sets(("=", "eq"), self.make_logic(lambda data, val:data==val))
30
+ self.sets((">", "bg"), self.make_logic(lambda data, val:data>val))
31
+ self.sets((">=", "be"), self.make_logic(lambda data, val:data>=val))
32
+ self.sets(("<", "lt"), self.make_logic(lambda data, val:data<val))
33
+ self.sets(("<=", "le"), self.make_logic(lambda data, val:data<=val))
34
+ self.sets("in", self.make_logic(lambda data, val:data in val))
35
+ self.sets("re", self.make_logic(lambda data, val:len(re.findall(val, str(data)))>0))
36
+ self.sets(["$", "eval"], self.fc_eval)
37
+ self.sets(["*", "exec"], self.fc_exec)
38
+ self.sets("mkv", self.fc_mkv)
39
+ def fc_eval(self, node, args, curr):
40
+ cmd = args[0]
41
+ return eval(cmd)
42
+ def fc_exec(self, node, args, curr):
43
+ """
44
+ exec(cmd)
45
+ return self.rst
46
+ """
47
+ cmd = args[0]
48
+ exec(cmd)
49
+ return self.rst
50
+ def sets(self, keys, fc):
51
+ if type(keys) not in (list, tuple):
52
+ keys = [keys]
53
+ for k in keys:
54
+ self.opts[k] = fc
55
+ def fc_mkv(self, node, args, curr):
56
+ data = node.data
57
+ if type(data)!=dict:
58
+ return False
59
+ key = args[0]
60
+ val = args[1]
61
+ if key not in data:
62
+ return False
63
+ return data[key].to_data()==val
64
+ @staticmethod
65
+ def fetch_judge_by(judge_by, node, curr):
66
+ #print(f"[TESTZ] fetch_judge_by: {judge_by}, {node}, {curr}")
67
+ if judge_by in ('key', 'k'):
68
+ if curr is None:
69
+ return None, False
70
+ key = curr[0]
71
+ return key,True
72
+ elif judge_by in ('index', 'i'):
73
+ if curr is None:
74
+ return None, False
75
+ key = curr[0]
76
+ return int(key),True
77
+ elif judge_by in ('value', 'val', 'v'):
78
+ return node.to_data(),True
79
+ else:
80
+ assert False, f"unsupport judge_by: {judge_by}"
81
+ def make_logic(self, fc):
82
+ def check(node, args, curr):
83
+ judge_by = args[0]
84
+ data, get = self.fetch_judge_by(judge_by, node, curr)
85
+ if not get:
86
+ return False
87
+ val = args[1]
88
+ return fc(data, val)
89
+ return check
90
+ def fc_xor(self, node, args, curr):
91
+ a = self.fc(node, args[0], curr)
92
+ b = self.fc(node, args[1], curr)
93
+ return a^b
94
+ def fc_not(self, node, args, curr):
95
+ return not self.fc(node, args[0], curr)
96
+ def fc_or(self, node, args, curr):
97
+ for pattern in args:
98
+ if self.fc(node, pattern, curr):
99
+ return True
100
+ return False
101
+ def fc_and(self, node, args, curr):
102
+ for pattern in args:
103
+ if not self.fc(node, pattern, curr):
104
+ return False
105
+ return True
106
+ def fc(self, node, args, curr):
107
+ opt = args[0]
108
+ #print(f"[TESTZ] opt: {opt}, {type(opt)}, args: {args}")
109
+ assert opt in self.opts, f"unkonwn opt {opt} in {list(self.opts.keys())}"
110
+ return self.opts[opt](node, args[1:], curr)
111
+ def __call__(self, node, args, curr):
112
+ args = args[0]
113
+ jg = self.fc(node, args, curr)
114
+ if not jg:
115
+ return []
116
+ return [[curr, node]]
117
+
118
+ pass
119
+ default_search = DefaultSearch()
120
+ class SearchArray(Base):
121
+ @staticmethod
122
+ def parse(data):
123
+ return SearchArray.single(Node.parse(data))
124
+ @staticmethod
125
+ def single(data):
126
+ return SearchArray([[None, data]])
127
+ def str(self):
128
+ return str(self.arr)
129
+ def init(self, arr):
130
+ self.arr = arr
131
+ self.size = len(arr)
132
+ def expand(self, ks):
133
+ if ks is None:
134
+ return []
135
+ return self.expand(ks[1]) + [ks[0]]
136
+ def datas(self):
137
+ rst = [[self.expand(ks), nd.to_data()] for ks, nd in self.arr]
138
+ return rst
139
+ def vals(self):
140
+ rst = [nd.to_data() for ks, nd in self.arr]
141
+ return rst
142
+ def keys(self):
143
+ rst = [self.expand(ks) for ks, nd in self.arr]
144
+ return rst
145
+ def searchs(self, args):
146
+ """
147
+ array.searchs((patterns, fc_search, fc_update), (patterns, fc_search, fc_update), ...)
148
+ """
149
+ rst = self.arr
150
+ for patterns, fc_search, fc_update in args:
151
+ tmp = []
152
+ for ks, node in rst:
153
+ tmp += node.search(patterns, fc_search, fc_update, ks)
154
+ rst = tmp
155
+ return SearchArray(rst)
156
+ def searchs_fc(self, args, fc_search=None, fc_update=None):
157
+ rst = self.arr
158
+ if type(args)==str:
159
+ args = xf.loads(args)
160
+ for patterns in args:
161
+ tmp = []
162
+ for ks, node in rst:
163
+ tmp += node.search(patterns, fc_search, fc_update, ks)
164
+ rst = tmp
165
+ return SearchArray(rst)
166
+ def searchs_dfc(self, args, deep=-1, fc_search=None, fc_update=None):
167
+ rst = self.arr
168
+ if type(args)==str:
169
+ args = xf.loads(args)
170
+ for patterns in args:
171
+ tmp = []
172
+ for ks, node in rst:
173
+ tmp += node.search([patterns,deep], fc_search, fc_update, ks)
174
+ rst = tmp
175
+ return SearchArray(rst)
176
+
177
+ pass
178
+ class Node:
179
+ @staticmethod
180
+ def parse(data):
181
+ if type(data)==list:
182
+ rst = [Node.parse(it) for it in data]
183
+ elif type(data)==dict:
184
+ rst = {k:Node.parse(v) for k,v in data.items()}
185
+ else:
186
+ rst = data
187
+ return Node(rst)
188
+ def to_data(self):
189
+ if type(self.data)==list:
190
+ rst = [it.to_data() for it in self.data]
191
+ elif type(self.data)==dict:
192
+ rst = {k:v.to_data() for k,v in self.data.items()}
193
+ else:
194
+ rst = self.data
195
+ return rst
196
+ def __str__(self):
197
+ return xf.dumps(self.to_data())
198
+ def __repr__(self):
199
+ return self.__str__()
200
+ def __init__(self, data):
201
+ self.data = data
202
+ def search(self, args, fc_search=None, fc_update = None, curr = None):
203
+ """
204
+ args: 匹配条件
205
+ 返回:
206
+ SearchArray(rst)
207
+ rst: [
208
+ [keys, val],
209
+ ...
210
+ ]
211
+ SearchArray(node).searchs(...)
212
+ """
213
+ if fc_update is None:
214
+ fc_update = default_update
215
+ if fc_search is None:
216
+ fc_search = default_search
217
+ args = fc_update(self, args, curr)
218
+ if args is None:
219
+ return []
220
+ rst = fc_search(self, args, curr)
221
+ if type(self.data)==list:
222
+ for i in range(len(self.data)):
223
+ it = self.data[i]
224
+ crr = [i, curr]
225
+ rst += it.search(args, fc_search, fc_update, crr)
226
+ elif type(self.data)==dict:
227
+ for k,v in self.data.items():
228
+ crr = [k, curr]
229
+ rst += v.search(args, fc_search, fc_update, crr)
230
+ return rst
231
+
232
+ pass
@@ -75,6 +75,15 @@ def g(obj, **maps):
75
75
  return rst
76
76
 
77
77
  pass
78
+ def c(obj, **maps):
79
+ for k in maps:
80
+ v = maps[k]
81
+ if k not in obj:
82
+ return False
83
+ vo = obj[k]
84
+ if vo!=v:
85
+ return False
86
+ return True
78
87
  def gs(obj, **maps):
79
88
  rst = []
80
89
  for k in maps:
@@ -222,6 +231,19 @@ def deep_fill(src, target, replace=1):
222
231
  return deep_update(target, src, replace)
223
232
 
224
233
  pass
234
+ def deep_clone(obj):
235
+ if type(obj)==list:
236
+ rst = []
237
+ for it in obj:
238
+ rst.append(deep_clone(it))
239
+ elif type(obj)==dict:
240
+ rst = {}
241
+ for k,v in obj.items():
242
+ rst[k] = deep_clone(v)
243
+ else:
244
+ rst = obj
245
+ return rst
246
+ pass
225
247
  fill=deep_fill
226
248
 
227
249
  def maps(**kv):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.29
3
+ Version: 0.6.30
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/11/11:
38
+ 新增buildz.tz.xfind,对json做查询用的,功能类似jsonpath,自己实现的原因是好玩,以及不想为了用jsonpath去学对应的语法
37
39
  2024/10/08:
38
40
  增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
39
41
  2024/09/25:
@@ -136,6 +136,8 @@ buildz/ioc/ioc_deal/conf/xfile_lists.js
136
136
  buildz/tz/__init__.py
137
137
  buildz/tz/log.py
138
138
  buildz/tz/myers_diff.py
139
+ buildz/tz/test_xfind.py
140
+ buildz/tz/xfind.py
139
141
  buildz/tz/time/__init__.py
140
142
  buildz/tz/time/timez.py
141
143
  buildz/tz/tio/__init__.py
@@ -7,7 +7,7 @@ from setuptools import setup, find_packages
7
7
 
8
8
  setup(
9
9
  name = 'buildz',
10
- version = '0.6.29',
10
+ version = '0.6.30',
11
11
  keywords='buildz',
12
12
  long_description=open('README.md', 'r', encoding="utf-8").read(),
13
13
  long_description_content_type='text/markdown',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes