buildz 0.6.19__tar.gz → 0.6.20__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 (209) hide show
  1. {buildz-0.6.19/buildz.egg-info → buildz-0.6.20}/PKG-INFO +7 -2
  2. {buildz-0.6.19 → buildz-0.6.20}/README.md +6 -1
  3. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/cache.py +59 -9
  4. buildz-0.6.20/buildz/auto/dbs.py +24 -0
  5. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/deal.py +4 -0
  6. buildz-0.6.20/buildz/auto/deal_list.py +32 -0
  7. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/deal_type.py +2 -1
  8. buildz-0.6.20/buildz/auto/factory.py +31 -0
  9. buildz-0.6.20/buildz/auto/init.py +13 -0
  10. buildz-0.6.20/buildz/auto/log.py +22 -0
  11. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/request.py +6 -0
  12. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/test/cache/cache.js +10 -10
  13. buildz-0.6.20/buildz/auto/test/cache/save.js +27 -0
  14. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/test/config/config.js +4 -3
  15. buildz-0.6.19/buildz/auto/test/data/test.js → buildz-0.6.20/buildz/auto/test/data/fp.js +3 -0
  16. buildz-0.6.20/buildz/auto/test/data/test.js +31 -0
  17. buildz-0.6.20/buildz/auto/test/log/20240930_log.txt +24 -0
  18. buildz-0.6.20/buildz/auto/test/log/20241008_log.txt +126 -0
  19. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/test/test.py +2 -0
  20. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/verify.py +0 -1
  21. buildz-0.6.20/buildz/db/dv/__init__.py +14 -0
  22. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/clickhousez.py +3 -1
  23. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/mysqlz.py +3 -1
  24. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/oraclez.py +3 -1
  25. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/runz.py +3 -1
  26. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc/base.py +4 -1
  27. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc/conf.py +1 -1
  28. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc/confs.py +2 -1
  29. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/obj.py +25 -9
  30. buildz-0.6.20/buildz/tools.py +4 -0
  31. {buildz-0.6.19/buildz/auto → buildz-0.6.20/buildz/tz}/log.py +20 -20
  32. buildz-0.6.20/buildz/tz/time/__init__.py +1 -0
  33. buildz-0.6.20/buildz/tz/time/timez.py +24 -0
  34. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/write.py +1 -1
  35. {buildz-0.6.19 → buildz-0.6.20/buildz.egg-info}/PKG-INFO +7 -2
  36. {buildz-0.6.19 → buildz-0.6.20}/buildz.egg-info/SOURCES.txt +10 -0
  37. {buildz-0.6.19 → buildz-0.6.20}/setup.py +1 -1
  38. buildz-0.6.19/buildz/auto/factory.py +0 -28
  39. buildz-0.6.19/buildz/auto/init.py +0 -13
  40. buildz-0.6.19/buildz/tools.py +0 -3
  41. {buildz-0.6.19 → buildz-0.6.20}/LICENSE +0 -0
  42. {buildz-0.6.19 → buildz-0.6.20}/MANIFEST.in +0 -0
  43. {buildz-0.6.19 → buildz-0.6.20}/buildz/__init__.py +0 -0
  44. {buildz-0.6.19 → buildz-0.6.20}/buildz/__main__.py +0 -0
  45. {buildz-0.6.19 → buildz-0.6.20}/buildz/argx.py +0 -0
  46. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/__init__.py +0 -0
  47. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/config.py +0 -0
  48. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/defs.py +0 -0
  49. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/run.py +0 -0
  50. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/save.py +0 -0
  51. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/test/data/item1.js +0 -0
  52. {buildz-0.6.19 → buildz-0.6.20}/buildz/auto/test/data/item2.js +0 -0
  53. {buildz-0.6.19 → buildz-0.6.20}/buildz/base.py +0 -0
  54. {buildz-0.6.19 → buildz-0.6.20}/buildz/cmd.py +0 -0
  55. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/__main__.py +0 -0
  56. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/basez.py +0 -0
  57. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/lib/readme +0 -0
  58. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/dv/structz.py +0 -0
  59. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/install.txt +0 -0
  60. {buildz-0.6.19 → buildz-0.6.20}/buildz/db/run.conf +0 -0
  61. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/ioc/deal.py +0 -0
  62. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/ioc/help.py +0 -0
  63. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/myers/deal.py +0 -0
  64. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/myers/help.py +0 -0
  65. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/conf/ioc.js +0 -0
  66. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/conf/main.js +0 -0
  67. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/conf/myers.js +0 -0
  68. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/conf/search.js +0 -0
  69. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/conf/xf.js +0 -0
  70. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/help/default.js +0 -0
  71. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/help/ioc.js +0 -0
  72. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/help/myers.js +0 -0
  73. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/help/search.js +0 -0
  74. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/help/xf.js +0 -0
  75. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/res/test.js +0 -0
  76. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/search/deal.py +0 -0
  77. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/search/help.py +0 -0
  78. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/test.py +0 -0
  79. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/xf/deal.py +0 -0
  80. {buildz-0.6.19 → buildz-0.6.20}/buildz/demo/xf/help.py +0 -0
  81. {buildz-0.6.19 → buildz-0.6.20}/buildz/fz/__init__.py +0 -0
  82. {buildz-0.6.19 → buildz-0.6.20}/buildz/fz/dirz.py +0 -0
  83. {buildz-0.6.19 → buildz-0.6.20}/buildz/fz/fhs.py +0 -0
  84. {buildz-0.6.19 → buildz-0.6.20}/buildz/fz/fio.py +0 -0
  85. {buildz-0.6.19 → buildz-0.6.20}/buildz/fz/lsf.py +0 -0
  86. {buildz-0.6.19 → buildz-0.6.20}/buildz/html/__init__.py +0 -0
  87. {buildz-0.6.19 → buildz-0.6.20}/buildz/html/test/demo.html +0 -0
  88. {buildz-0.6.19 → buildz-0.6.20}/buildz/html/test/test.py +0 -0
  89. {buildz-0.6.19 → buildz-0.6.20}/buildz/html/xml.py +0 -0
  90. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/__init__.py +0 -0
  91. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/base.py +0 -0
  92. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/init.py +0 -0
  93. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc/decorator.py +0 -0
  94. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc/single.py +0 -0
  95. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/base.py +0 -0
  96. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/branch.py +0 -0
  97. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/call.py +0 -0
  98. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/calls.py +0 -0
  99. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  100. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  101. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  102. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  103. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  104. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  105. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  106. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  107. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  108. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  109. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  110. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  111. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  112. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  113. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  114. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  115. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  116. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  117. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  118. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  119. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  120. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  121. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  122. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  123. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  124. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/deal.py +0 -0
  125. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/demo.py +0 -0
  126. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/env.py +0 -0
  127. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/init.py +0 -0
  128. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/ioc.py +0 -0
  129. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/iocf.py +0 -0
  130. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/join.py +0 -0
  131. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/list.py +0 -0
  132. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/map.py +0 -0
  133. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/mcall.py +0 -0
  134. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/ovar.py +0 -0
  135. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/ref.py +0 -0
  136. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/refs.py +0 -0
  137. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/val.py +0 -0
  138. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/var.py +0 -0
  139. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/ioc_deal/xfile.py +0 -0
  140. {buildz-0.6.19 → buildz-0.6.20}/buildz/ioc/wrap.py +0 -0
  141. {buildz-0.6.19 → buildz-0.6.20}/buildz/pyz.py +0 -0
  142. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/__init__.py +0 -0
  143. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/myers_diff.py +0 -0
  144. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/__init__.py +0 -0
  145. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/base.py +0 -0
  146. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/getch.py +0 -0
  147. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/lx.py +0 -0
  148. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/test.py +0 -0
  149. {buildz-0.6.19 → buildz-0.6.20}/buildz/tz/tio/win.py +0 -0
  150. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/__init__.py +0 -0
  151. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/__main__.py +0 -0
  152. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/code.py +0 -0
  153. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/code_modify.py +0 -0
  154. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/copy_old.py +0 -0
  155. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/file.py +0 -0
  156. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/base.py +0 -0
  157. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/buffer.py +0 -0
  158. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/listz.py +0 -0
  159. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/lr.py +0 -0
  160. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/lrval.py +0 -0
  161. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/mapz.py +0 -0
  162. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/nextz.py +0 -0
  163. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/reval.py +0 -0
  164. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/setz.py +0 -0
  165. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/spc.py +0 -0
  166. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/spt.py +0 -0
  167. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/deal/strz.py +0 -0
  168. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/exp.py +0 -0
  169. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/item.py +0 -0
  170. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/mg.py +0 -0
  171. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loader/pos.py +0 -0
  172. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/base.py +0 -0
  173. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/buffer.py +0 -0
  174. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  175. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/listz.py +0 -0
  176. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/lr.py +0 -0
  177. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/lrval.py +0 -0
  178. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/mapz.py +0 -0
  179. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/nextz.py +0 -0
  180. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/reval.py +0 -0
  181. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/setz.py +0 -0
  182. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/spc.py +0 -0
  183. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/spt.py +0 -0
  184. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/strz.py +0 -0
  185. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  186. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  187. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/exp.py +0 -0
  188. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/item.py +0 -0
  189. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/mg.py +0 -0
  190. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/pos.py +0 -0
  191. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/test.py +0 -0
  192. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/loaderz/test1.py +0 -0
  193. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/mapz.py +0 -0
  194. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/read.py +0 -0
  195. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/readz.py +0 -0
  196. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/stack.py +0 -0
  197. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/base.py +0 -0
  198. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/conf.py +0 -0
  199. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/deal/jsonval.py +0 -0
  200. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/deal/listz.py +0 -0
  201. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/deal/mapz.py +0 -0
  202. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/deal/reval.py +0 -0
  203. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/deal/strz.py +0 -0
  204. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/itemz.py +0 -0
  205. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/writer/mg.py +0 -0
  206. {buildz-0.6.19 → buildz-0.6.20}/buildz/xf/xargs.py +0 -0
  207. {buildz-0.6.19 → buildz-0.6.20}/buildz.egg-info/dependency_links.txt +0 -0
  208. {buildz-0.6.19 → buildz-0.6.20}/buildz.egg-info/top_level.txt +0 -0
  209. {buildz-0.6.19 → buildz-0.6.20}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.19
3
+ Version: 0.6.20
4
4
  Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
5
5
  Home-page: https://github.com/buildCodeZ/buildz
6
6
  Author: Zzz
@@ -22,6 +22,9 @@ License-File: LICENSE
22
22
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
23
23
  buildz.demo: 使用参考,运行"python -m buildz"会用这个模块
24
24
  buildz.db: sql集成工具,自用,里面import了其他sql库,使用运行"python -m buildz.db 配置文件路径"
25
+ buildz.base: 封装了一个基础类,继承它可以少写一些代码
26
+ buildz.html: xml(html)内容读取和解析
27
+ buildz.auto: 自动化操作(主要是做自动化测试方便些,如果不怕写一堆配置文件的话)
25
28
  代码关系:
26
29
  buildz.xf, buildz.pyz, buildz.argx, buildz.fz, buildz.tz都是独立的模块
27
30
  buildz.ioc需要buildz.xf和buildz.pyz
@@ -31,6 +34,8 @@ License-File: LICENSE
31
34
  运行python -m buildz查看帮助
32
35
 
33
36
  持续更新中。。。
37
+ 2024/10/08:
38
+ 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
34
39
  2024/09/25:
35
40
  修复bug,增强html的搜索功能,增强auto配置功能
36
41
  auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
@@ -43,7 +48,7 @@ ioc:
43
48
  加修饰器
44
49
  加配置refs
45
50
 
46
- PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销
51
+ PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销(获得的经验教训是别直接用python的列表list当堆栈做append和pop,特别慢!)
47
52
 
48
53
  1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
49
54
  2, a ioc profile file read function base on xf format, module is in buildz.ioc
@@ -9,6 +9,9 @@
9
9
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
10
10
  buildz.demo: 使用参考,运行"python -m buildz"会用这个模块
11
11
  buildz.db: sql集成工具,自用,里面import了其他sql库,使用运行"python -m buildz.db 配置文件路径"
12
+ buildz.base: 封装了一个基础类,继承它可以少写一些代码
13
+ buildz.html: xml(html)内容读取和解析
14
+ buildz.auto: 自动化操作(主要是做自动化测试方便些,如果不怕写一堆配置文件的话)
12
15
  代码关系:
13
16
  buildz.xf, buildz.pyz, buildz.argx, buildz.fz, buildz.tz都是独立的模块
14
17
  buildz.ioc需要buildz.xf和buildz.pyz
@@ -18,6 +21,8 @@
18
21
  运行python -m buildz查看帮助
19
22
 
20
23
  持续更新中。。。
24
+ 2024/10/08:
25
+ 增强auto配置功能,在auto增加数据库使用的封装,后续考虑出文档。。。如果有时间
21
26
  2024/09/25:
22
27
  修复bug,增强html的搜索功能,增强auto配置功能
23
28
  auto里加了个request的demo,里面用的requests库,可以直接配置来进行http调用
@@ -30,7 +35,7 @@ ioc:
30
35
  加修饰器
31
36
  加配置refs
32
37
 
33
- PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销
38
+ PS: 对比了下json.loads(修改了下json的scanner.py,让它在纯python下运行,不然json.loads会更快)和目前的xf.loads(buildz.xf.readz.loads)的速度,xf.loads比json.loads慢7倍,可能是读字符串更频繁,方法调用更多(为了代码更结构化和容易修改),其实有一版更慢(buildz.xf.read.loads,废弃代码,后面看情况删掉),慢100倍,因为只考虑结构化,没考虑列表增减开销(获得的经验教训是别直接用python的列表list当堆栈做append和pop,特别慢!)
34
39
 
35
40
  1, a profile file format base on json, make it easy to write profile file, module is in buildz.xf
36
41
  2, a ioc profile file read function base on xf format, module is in buildz.ioc
@@ -49,13 +49,14 @@ pass
49
49
 
50
50
 
51
51
  @wrap.obj(id="cache.save")
52
- @wrap.obj_args("ref, cache", "ref, log")
52
+ @wrap.obj_args("ref, cache.file", "ref, log")
53
53
  class Save(Base):
54
- def init(self, cache, log):
54
+ def init(self, cache, log, fkey = "cache.save"):
55
+ self.fkey = fkey
55
56
  self.cache = cache
56
57
  self.log = log
57
58
  def call(self, maps, fp):
58
- fp = xf.get(maps, "cache.save", None)
59
+ fp = xf.get(maps, self.fkey, None)
59
60
  if fp is None:
60
61
  self.log.warn(f"cache not save cause 'cache.save' is None")
61
62
  return
@@ -66,7 +67,7 @@ class Save(Base):
66
67
  return True
67
68
 
68
69
  pass
69
- @wrap.obj(id="cache")
70
+ @wrap.obj(id="cache.file")
70
71
  @wrap.obj_args("ref, log", "env, cache.rfp.current.first, false")
71
72
  class Cache(Base):
72
73
  def get(self, key):
@@ -76,7 +77,8 @@ class Cache(Base):
76
77
  xf.sets(self.data, key.split("."), val)
77
78
  def remove(self, key):
78
79
  xf.removes(self.data, key.split("."))
79
- def init(self, log, current_first=False):
80
+ def init(self, log, current_first=False, fkey = "cache"):
81
+ self.fkey = fkey
80
82
  self.current_first = current_first
81
83
  self.log = log
82
84
  self.data = {}
@@ -113,12 +115,60 @@ class Cache(Base):
113
115
  return _fp
114
116
  return fp
115
117
  def call(self, maps, fp):
116
- fp = xf.g(maps, cache="cache.js")
118
+ fp = xf.get(maps, self.fkey, "cache.js")
119
+ if type(fp)!=list:
120
+ fp = [fp]
121
+ fps=fp
117
122
  data = {}
118
- if os.path.isfile(fp):
119
- self.log.info(f"load cache from {fp}")
120
- data = xf.flush_maps(xf.loadf(fp),visit_list=True)
123
+ for fp in fps:
124
+ fp = self.rfp(fp)
125
+ if os.path.isfile(fp):
126
+ self.log.info(f"load cache from {fp}")
127
+ xdata = xf.flush_maps(xf.loadf(fp),visit_list=True)
128
+ xf.fill(xdata, data, replace=1)
121
129
  xf.fill(data, self.data, replace=0)
122
130
  return True
123
131
 
124
132
  pass
133
+
134
+ @wrap.obj(id="cache.mem")
135
+ @wrap.obj_args("ref, log")
136
+ class Mem(Cache):
137
+ def init(self, log, current_first=False, fkey = "mem"):
138
+ super().init(log)
139
+
140
+ pass
141
+ @wrap.obj(id="cache")
142
+ @wrap.obj_args("ref, cache.file", "ref, cache.mem")
143
+ class Caches(Base):
144
+ def init(self, cache, mem):
145
+ self.cache = cache
146
+ self.mem = mem
147
+ self.caches = [cache, mem]
148
+ self.set = cache.set
149
+ self.remove = cache.remove
150
+ self.call=cache.call
151
+ self.rfp = cache.rfp
152
+ self.get_current = cache.get_current
153
+ self.add_current = cache.add_current
154
+ self.set_current = cache.set_current
155
+ def get_file(self, key):
156
+ return self.cache.get(key)
157
+ def get_mem(self, key):
158
+ return self.mem.get(key)
159
+ def set_file(self, key, val):
160
+ self.cache.set(key,val)
161
+ def set_mem(self, key, val):
162
+ self.mem.set(key, val)
163
+ def remove_file(self, key):
164
+ self.cache.remove(key)
165
+ def remove_mem(self, key):
166
+ self.mem.remove(key)
167
+ def get(self, key):
168
+ for cache in self.caches:
169
+ v = cache.get(key)
170
+ if v is not None:
171
+ return v
172
+ return None
173
+
174
+ pass
@@ -0,0 +1,24 @@
1
+ #
2
+ from ..tools import *
3
+ from buildz.ioc import wrap
4
+ import os
5
+ from buildz.db.dv import build
6
+ @wrap.obj(id="dbs")
7
+ @wrap.obj_args("ref, cache", "ref, log")
8
+ class Dbs(Base):
9
+ def init(self, cache, log):
10
+ self.cache = cache
11
+ self.log = log
12
+ self.dbs = {}
13
+ def call(self, maps, fp):
14
+ confs = xf.g(maps, dbs={})
15
+ for key,conf in confs.items():
16
+ url,user,pwd,dv = xf.g(conf, url=None, user=None, pwd=None, device=key)
17
+ dv = build(dv, [url, user, pwd], val)
18
+ self.dbs[key] = dv
19
+ self.cache.set_mem("dbs", self.dbs)
20
+ return True
21
+
22
+ pass
23
+
24
+
@@ -9,7 +9,10 @@ from ..ioc import wrap
9
9
  class List(Base):
10
10
  def init(self, deal, mg):
11
11
  self.deal = deal
12
+ self.curr_deal = deal
12
13
  self.mg = mg
14
+ def curr(self):
15
+ return self.curr_deal
13
16
  def call(self, maps, fp):
14
17
  datas = xf.g(maps, datas = [])
15
18
  sdeal = xf.g(maps, deal = None)
@@ -19,6 +22,7 @@ class List(Base):
19
22
  deal = deal_obj
20
23
  elif sdeal is not None:
21
24
  deal = self.mg.get(sdeal)
25
+ self.curr_deal = deal
22
26
  for data in datas:
23
27
  if not deal(data):
24
28
  return False
@@ -0,0 +1,32 @@
1
+ #
2
+ from ..tools import *
3
+ from buildz.ioc import wrap
4
+ import os
5
+ @wrap.obj(id="deal.list")
6
+ @wrap.obj_args("ref, cache", "ref, log", "ref, cache.modify", "ref, list")
7
+ class List(Base):
8
+ def init(self, cache, log, upd, lst):
9
+ self.cache = cache
10
+ self.log = log
11
+ self.upd = upd
12
+ self.lst = lst
13
+ def call(self, data, fc):
14
+ data = self.upd(data)
15
+ fp = xf.g(data, file = None)
16
+ if fp is not None:
17
+ fp = self.cache.rfp(fp)
18
+ datas = xf.g(data, datas=[])
19
+ if fp is not None and os.path.isfile(fp):
20
+ datas = xf.loadf(fp)
21
+ if type(datas)==dict:
22
+ datas = xf.g(datas, datas=[])
23
+ deal = self.lst.curr()
24
+ print(f"List.datas: {xf.dumps(datas,format=1,deep=1)}")
25
+ for data in datas:
26
+ if not deal(data):
27
+ return False
28
+ return True
29
+
30
+ pass
31
+
32
+
@@ -20,6 +20,7 @@ pass
20
20
 
21
21
  @wrap.obj(id = "def.deal.type")
22
22
  @wrap.obj_args("ioc, confs")
23
+ @wrap.obj_set(cache="ref, cache")
23
24
  class DefDeal(Base):
24
25
  def init(self, mg):
25
26
  self.mg = mg
@@ -30,7 +31,7 @@ class DefDeal(Base):
30
31
  data = xf.g(conf, types={})
31
32
  rst = {}
32
33
  for _type, calls in data.items():
33
- rst[_type] = factory(calls)
34
+ rst[_type] = factory(calls, True)
34
35
  obj = DealType(rst, self.mg.get("cache"))
35
36
  maps['deal_obj'] = obj
36
37
  return True
@@ -0,0 +1,31 @@
1
+ #
2
+
3
+ from .. import xf
4
+ from .. import ioc
5
+ from ..base import Base
6
+ from ..ioc import wrap
7
+
8
+ class DeepFc(Base):
9
+ def init(self, fcs, default = None):
10
+ self.default = default
11
+ self.fc = None
12
+ self.next=None
13
+ if len(fcs)>0:
14
+ self.fc = fcs[0]
15
+ self.next = DeepFc(fcs[1:], default)
16
+ def call(self, data):
17
+ if self.fc is None:
18
+ return self.default
19
+ return self.fc(data, self.next)
20
+
21
+ pass
22
+ @wrap.obj(id = "buildz.auto.deal.fill")
23
+ @wrap.obj_args("ioc, confs")
24
+ class Fill(Base):
25
+ def init(self, mg):
26
+ self.mg = mg
27
+ def call(self, orders, default=None):
28
+ fcs = [self.mg.get(id) for id in orders]
29
+ return DeepFc(fcs,default)
30
+
31
+ pass
@@ -0,0 +1,13 @@
1
+ #
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ from . import deal, deal_type, factory, cache, log, config, dbs
13
+ from . import verify, save, request, defs, deal_list
@@ -0,0 +1,22 @@
1
+ #
2
+
3
+
4
+ from .. import xf
5
+ from .. import ioc
6
+ from ..base import Base
7
+ from ..ioc import wrap
8
+ from ..tools import *
9
+ import time, sys
10
+ from ..tz.log import FpLog
11
+ @wrap.obj(id="log")
12
+ class AutoLog(FpLog):
13
+ def call(self, maps, fp):
14
+ fp = xf.g(maps, log = None)
15
+ self.fp = fp
16
+ shows = xf.get(maps, "log.shows")
17
+ if shows is None:
18
+ shows = ["info", "warn", "error"]
19
+ self.shows = shows
20
+ return True
21
+
22
+ pass
@@ -58,10 +58,13 @@ class Request(Base):
58
58
  xf.s(data, result_code = rp.status_code)
59
59
  if self.debug:
60
60
  self.log.debug(f"request url '{url}' return code: {rp.status_code}")
61
+ show_obj = None
61
62
  try:
63
+ show_obj = rp.content
62
64
  xf.s(data, result_content=rp.content)
63
65
  debug_ct = rp.content
64
66
  s = xf.decode(rp.content, "utf-8")
67
+ show_obj = s
65
68
  if self.debug:
66
69
  self.log.debug(f"request url '{url}' return msg:{s}")
67
70
  xf.s(data, result_text=s)
@@ -69,10 +72,13 @@ class Request(Base):
69
72
  self.log.warn(f"exp in deal response on '{url}': {exp}")
70
73
  try:
71
74
  obj = json.loads(s)
75
+ show_obj = xf.dumps(obj,format=1,deepp=1)
72
76
  xf.s(data, result=obj)
73
77
  except Exception as exp:
74
78
  #self.log.warn(f"exp in deal response on '{url}': {exp}")
75
79
  pass
80
+ if self.debug:
81
+ self.log.debug(f"request '{url}' response: {show_obj}")
76
82
  try:
77
83
  xf.s(data, result_cookies=dict(rp.cookies))
78
84
  except Exception as exp:
@@ -1,11 +1,11 @@
1
- {
2
- request: {
3
- debug: false
4
- },
5
- host: www.baidu.com,
6
- test: {
7
- url: tmpurl,
8
- val: 1,
9
- code: 1.99
10
- },
1
+ {
2
+ request: {
3
+ debug: false
4
+ },
5
+ host: www.baidu.com,
6
+ test: {
7
+ url: tmpurl,
8
+ val: 1,
9
+ code: 1.99
10
+ },
11
11
  }
@@ -0,0 +1,27 @@
1
+ {
2
+ cache: {
3
+ path: {
4
+ current: [
5
+ null,
6
+ "D:\\rootz\\python\\gits\\buildz_upd\\buildz\\auto\\test\\data"
7
+ ]
8
+ }
9
+ },
10
+ request: {
11
+ debug: false
12
+ },
13
+ host: www.baidu.com,
14
+ test: {
15
+ url: tmpurl,
16
+ val: 1,
17
+ code: 1.99
18
+ },
19
+ result: {
20
+ code: 1.99
21
+ },
22
+ test2: {
23
+ headers: {
24
+ content_type: "text/html"
25
+ }
26
+ }
27
+ }
@@ -1,11 +1,12 @@
1
- calls: [log, cache, def.deal.type, list, cache.save]
2
- cache: cache/cache.js
3
- cache.save: cache/cache.js
1
+ calls: [log, cache, dbs, def.deal.type, list, cache.save]
2
+ cache: [cache/cache.js,cache/save.js]
3
+ cache.save: cache/save.js
4
4
  log: log/%Y%m%d_log.txt
5
5
  log.shows: [info, warn, debug, error]
6
6
  def.deal: {
7
7
  types: {
8
8
  http.get: [defs, request, verify, save]
9
9
  get: [defs, request.get, verify, save]
10
+ list: [defs, deal.list]
10
11
  }
11
12
  }
@@ -24,4 +24,7 @@ datas: [
24
24
  // 或者配置所在的文件
25
25
  item1.js
26
26
  item2.js
27
+ {
28
+ type: list
29
+ }
27
30
  ]
@@ -0,0 +1,31 @@
1
+ configs: config/config.js
2
+ datas: [
3
+ //写一个配置
4
+ {
5
+ note: test
6
+ url: test
7
+ type: http.get
8
+ data: {
9
+ url: "#{test.url}"
10
+ }
11
+ save: {
12
+ test.url: data.url
13
+ }
14
+ result: {
15
+ code: 1.99
16
+ }
17
+ verify: [
18
+ "result.code, [>, 1]"
19
+ ]
20
+ save: {
21
+ result.code: result.code
22
+ }
23
+ }
24
+ // 或者配置所在的文件
25
+ item1.js
26
+ item2.js
27
+ {
28
+ type: list
29
+ file: fp.js
30
+ }
31
+ ]
@@ -0,0 +1,24 @@
1
+ [INFO] 2024-09-30 12:18:42 load cache from cache/cache.js
2
+ [DEBUG] 2024-09-30 12:18:42 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
3
+ [DEBUG] 2024-09-30 12:18:42 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
4
+ [INFO] 2024-09-30 12:19:00 load cache from cache/cache.js
5
+ [INFO] 2024-09-30 12:19:00 load cache from cache/save.js
6
+ [DEBUG] 2024-09-30 12:19:00 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
7
+ [DEBUG] 2024-09-30 12:19:00 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
8
+ [INFO] 2024-09-30 20:22:25 load cache from cache/cache.js
9
+ [INFO] 2024-09-30 20:22:25 load cache from cache/save.js
10
+ [DEBUG] 2024-09-30 20:22:25 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
11
+ [DEBUG] 2024-09-30 20:22:25 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
12
+ [ERROR] 2024-09-30 20:22:25 error in request 'https://www.baidu.com/' with method get: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002247FE3AF10>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
13
+ [INFO] 2024-09-30 20:22:38 load cache from cache/cache.js
14
+ [INFO] 2024-09-30 20:22:38 load cache from cache/save.js
15
+ [DEBUG] 2024-09-30 20:22:38 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
16
+ [DEBUG] 2024-09-30 20:22:38 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
17
+ [INFO] 2024-09-30 20:26:22 load cache from cache/cache.js
18
+ [INFO] 2024-09-30 20:26:22 load cache from cache/save.js
19
+ [DEBUG] 2024-09-30 20:26:23 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
20
+ [DEBUG] 2024-09-30 20:26:23 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
21
+ [INFO] 2024-09-30 20:40:14 load cache from cache/cache.js
22
+ [INFO] 2024-09-30 20:40:14 load cache from cache/save.js
23
+ [DEBUG] 2024-09-30 20:40:14 test data: {'note': 'test', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl'}, 'save': {'result.code': 'result.code'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}
24
+ [DEBUG] 2024-09-30 20:40:14 test data: {'note': 'test1', 'url': 'test', 'type': 'http.get', 'data': {'url': 'tmpurl', 'val': 1}, 'save': {'test.url': 'data.url'}, 'result': {'code': 1.99}, 'verify': ['result.code, [>, 1]']}