buildz 0.9.10__tar.gz → 0.9.12__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 (471) hide show
  1. {buildz-0.9.10/buildz.egg-info → buildz-0.9.12}/PKG-INFO +2 -1
  2. {buildz-0.9.10 → buildz-0.9.12}/README.md +1 -0
  3. {buildz-0.9.10 → buildz-0.9.12}/buildz/_dz/conf.py +11 -0
  4. buildz-0.9.12/buildz/_dz/confx.py +300 -0
  5. {buildz-0.9.10 → buildz-0.9.12}/buildz/argx.py +9 -1
  6. {buildz-0.9.10 → buildz-0.9.12}/buildz/base.py +13 -1
  7. buildz-0.9.12/buildz/confx.py +102 -0
  8. {buildz-0.9.10 → buildz-0.9.12}/buildz/dz.py +1 -0
  9. {buildz-0.9.10 → buildz-0.9.12}/buildz/fz/__init__.py +1 -1
  10. buildz-0.9.12/buildz/fz/csv.py +159 -0
  11. buildz-0.9.12/buildz/log.py +251 -0
  12. buildz-0.9.12/buildz/netz/nodes/codes/deal.py +24 -0
  13. buildz-0.9.12/buildz/netz/nodes/codes/node.py +35 -0
  14. buildz-0.9.12/buildz/netz/nodes/node.py +12 -0
  15. {buildz-0.9.10 → buildz-0.9.12}/buildz/pyz.py +10 -9
  16. {buildz-0.9.10 → buildz-0.9.12}/buildz/tools.py +1 -1
  17. buildz-0.9.12/buildz/xf/cpp/pcxf.cp311-win_amd64.pyd +0 -0
  18. {buildz-0.9.10 → buildz-0.9.12/buildz.egg-info}/PKG-INFO +2 -1
  19. {buildz-0.9.10 → buildz-0.9.12}/buildz.egg-info/SOURCES.txt +7 -0
  20. {buildz-0.9.10 → buildz-0.9.12}/setup.py +1 -1
  21. buildz-0.9.10/buildz/fz/csv.py +0 -36
  22. {buildz-0.9.10 → buildz-0.9.12}/LICENSE +0 -0
  23. {buildz-0.9.10 → buildz-0.9.12}/MANIFEST.in +0 -0
  24. {buildz-0.9.10 → buildz-0.9.12}/buildz/__init__.py +0 -0
  25. {buildz-0.9.10 → buildz-0.9.12}/buildz/__main__.py +0 -0
  26. {buildz-0.9.10 → buildz-0.9.12}/buildz/_dz/mapz.py +0 -0
  27. {buildz-0.9.10 → buildz-0.9.12}/buildz/_dz/oconf.py +0 -0
  28. {buildz-0.9.10 → buildz-0.9.12}/buildz/_dz/omapz.py +0 -0
  29. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/__init__.py +0 -0
  30. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/argz.py +0 -0
  31. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/callz.py +0 -0
  32. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/conf_argz.py +0 -0
  33. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/conf_callz.py +0 -0
  34. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/evalx.py +0 -0
  35. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/init.py +0 -0
  36. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/test.py +0 -0
  37. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz/test_call.py +0 -0
  38. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/__init__.py +0 -0
  39. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/argz.py +0 -0
  40. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/build.py +0 -0
  41. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/callz.py +0 -0
  42. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/evalx.py +0 -0
  43. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/test.py +0 -0
  44. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/test_obj.py +0 -0
  45. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/tests/conf.js +0 -0
  46. {buildz-0.9.10 → buildz-0.9.12}/buildz/argz_bk/testx.py +0 -0
  47. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/__init__.py +0 -0
  48. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/cache.py +0 -0
  49. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/config.py +0 -0
  50. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/dbs.py +0 -0
  51. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/deal.py +0 -0
  52. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/deal_list.py +0 -0
  53. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/deal_type.py +0 -0
  54. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/defs.py +0 -0
  55. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/factory.py +0 -0
  56. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/init.py +0 -0
  57. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/log.py +0 -0
  58. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/request.py +0 -0
  59. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/run.py +0 -0
  60. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/save.py +0 -0
  61. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/cache/cache.js +0 -0
  62. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/config/base.js +0 -0
  63. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/config/config.js +0 -0
  64. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/data/fp.js +0 -0
  65. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/data/item1.js +0 -0
  66. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/data/item2.js +0 -0
  67. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/res/data/test.js +0 -0
  68. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/test.py +0 -0
  69. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/test/xtest.py +0 -0
  70. {buildz-0.9.10 → buildz-0.9.12}/buildz/auto/verify.py +0 -0
  71. {buildz-0.9.10 → buildz-0.9.12}/buildz/cachez/__init__.py +0 -0
  72. {buildz-0.9.10 → buildz-0.9.12}/buildz/cachez/cache.py +0 -0
  73. {buildz-0.9.10 → buildz-0.9.12}/buildz/cmd.py +0 -0
  74. {buildz-0.9.10 → buildz-0.9.12}/buildz/confz.py +0 -0
  75. {buildz-0.9.10 → buildz-0.9.12}/buildz/confz_test/argx.js +0 -0
  76. {buildz-0.9.10 → buildz-0.9.12}/buildz/confz_test/conf.js +0 -0
  77. {buildz-0.9.10 → buildz-0.9.12}/buildz/confz_test/test.js +0 -0
  78. {buildz-0.9.10 → buildz-0.9.12}/buildz/confz_test/test.py +0 -0
  79. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/__init__.py +0 -0
  80. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/__main__.py +0 -0
  81. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/__init__.py +0 -0
  82. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/basez.py +0 -0
  83. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/clickhousez.py +0 -0
  84. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/lib/readme +0 -0
  85. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/mysqlz.py +0 -0
  86. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/oraclez.py +0 -0
  87. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/orm.py +0 -0
  88. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/postgresqlz.py +0 -0
  89. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/sqlite3z.py +0 -0
  90. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/dv/structz.py +0 -0
  91. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/install.txt +0 -0
  92. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/run.conf +0 -0
  93. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/runz.py +0 -0
  94. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/sc.py +0 -0
  95. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/subrun.py +0 -0
  96. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/subsc.py +0 -0
  97. {buildz-0.9.10 → buildz-0.9.12}/buildz/db/tls.py +0 -0
  98. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/ioc/deal.py +0 -0
  99. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/ioc/help.py +0 -0
  100. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/myers/deal.py +0 -0
  101. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/myers/help.py +0 -0
  102. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/conf/ioc.js +0 -0
  103. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/conf/main.js +0 -0
  104. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/conf/myers.js +0 -0
  105. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/conf/search.js +0 -0
  106. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/conf/xf.js +0 -0
  107. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/help/default.js +0 -0
  108. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/help/ioc.js +0 -0
  109. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/help/myers.js +0 -0
  110. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/help/search.js +0 -0
  111. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/help/xf.js +0 -0
  112. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/res/test.js +0 -0
  113. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/search/deal.py +0 -0
  114. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/search/help.py +0 -0
  115. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/test.py +0 -0
  116. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/xf/deal.py +0 -0
  117. {buildz-0.9.10 → buildz-0.9.12}/buildz/demo/xf/help.py +0 -0
  118. {buildz-0.9.10 → buildz-0.9.12}/buildz/evalz/__init__.py +0 -0
  119. {buildz-0.9.10 → buildz-0.9.12}/buildz/evalz/evalz.py +0 -0
  120. {buildz-0.9.10 → buildz-0.9.12}/buildz/evalz/res/default.js +0 -0
  121. {buildz-0.9.10 → buildz-0.9.12}/buildz/evalz/test.py +0 -0
  122. {buildz-0.9.10 → buildz-0.9.12}/buildz/fz/dirz.py +0 -0
  123. {buildz-0.9.10 → buildz-0.9.12}/buildz/fz/fhs.py +0 -0
  124. {buildz-0.9.10 → buildz-0.9.12}/buildz/fz/fio.py +0 -0
  125. {buildz-0.9.10 → buildz-0.9.12}/buildz/fz/lsf.py +0 -0
  126. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/analyze.py +0 -0
  127. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/demo.py +0 -0
  128. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/dm.py +0 -0
  129. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/dm1.py +0 -0
  130. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/report.txt +0 -0
  131. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/take_gpu_mem.py +0 -0
  132. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/test_atten_demo.py +0 -0
  133. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/test_linear_demo.py +0 -0
  134. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/test_multi_demo.py +0 -0
  135. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/test/test_resnet_demo.py +0 -0
  136. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/__init__.py +0 -0
  137. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/dict_middle.py +0 -0
  138. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/middle_base.py +0 -0
  139. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/middle_cache.py +0 -0
  140. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/multi_dict_middle.py +0 -0
  141. {buildz-0.9.10 → buildz-0.9.12}/buildz/gpuz/torch/seq_middle.py +0 -0
  142. {buildz-0.9.10 → buildz-0.9.12}/buildz/html/__init__.py +0 -0
  143. {buildz-0.9.10 → buildz-0.9.12}/buildz/html/test/demo.html +0 -0
  144. {buildz-0.9.10 → buildz-0.9.12}/buildz/html/test/test.py +0 -0
  145. {buildz-0.9.10 → buildz-0.9.12}/buildz/html/xml.py +0 -0
  146. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/__init__.py +0 -0
  147. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/base.py +0 -0
  148. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/init.py +0 -0
  149. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/base.py +0 -0
  150. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/conf.py +0 -0
  151. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/confs.py +0 -0
  152. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/decorator.py +0 -0
  153. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/loads.py +0 -0
  154. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc/single.py +0 -0
  155. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/base.py +0 -0
  156. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/branch.py +0 -0
  157. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/call.py +0 -0
  158. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/calls.py +0 -0
  159. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  160. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  161. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  162. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  163. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  164. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  165. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  166. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  167. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  168. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  169. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  170. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  171. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  172. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  173. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  174. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  175. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  176. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  177. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  178. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  179. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  180. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  181. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  182. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  183. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  184. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/deal.py +0 -0
  185. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/demo.py +0 -0
  186. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/env.py +0 -0
  187. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/init.py +0 -0
  188. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/ioc.py +0 -0
  189. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/iocf.py +0 -0
  190. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/join.py +0 -0
  191. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/list.py +0 -0
  192. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/map.py +0 -0
  193. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/mcall.py +0 -0
  194. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/obj.py +0 -0
  195. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/ovar.py +0 -0
  196. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/ref.py +0 -0
  197. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/refs.py +0 -0
  198. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/val.py +0 -0
  199. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/var.py +0 -0
  200. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/ioc_deal/xfile.py +0 -0
  201. {buildz-0.9.10 → buildz-0.9.12}/buildz/ioc/wrap.py +0 -0
  202. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/__init__.py +0 -0
  203. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/base.py +0 -0
  204. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf/base.py +0 -0
  205. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf/conf.py +0 -0
  206. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf/mg.py +0 -0
  207. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf/unit.py +0 -0
  208. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf/up.py +0 -0
  209. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/attr.py +0 -0
  210. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/base.py +0 -0
  211. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/call.py +0 -0
  212. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/cvar.py +0 -0
  213. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/deal.py +0 -0
  214. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/env.py +0 -0
  215. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/ioc.py +0 -0
  216. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/method.py +0 -0
  217. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/obj.py +0 -0
  218. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/ref.py +0 -0
  219. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/conf_deal/val.py +0 -0
  220. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/init.py +0 -0
  221. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/__init__.py +0 -0
  222. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/base.py +0 -0
  223. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/builds.py +0 -0
  224. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/confs.py +0 -0
  225. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/datas.py +0 -0
  226. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/dataset.py +0 -0
  227. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/encapes.py +0 -0
  228. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/envs.py +0 -0
  229. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/ids.py +0 -0
  230. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/init.py +0 -0
  231. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/mg.py +0 -0
  232. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/single.py +0 -0
  233. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/sys_envs.py +0 -0
  234. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/tdata.py +0 -0
  235. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/tdict.py +0 -0
  236. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/unit.py +0 -0
  237. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc/vars.py +0 -0
  238. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/base.py +0 -0
  239. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/deal.py +0 -0
  240. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/ioc.py +0 -0
  241. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/obj.py +0 -0
  242. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/ref.py +0 -0
  243. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/ioc_deal/val.py +0 -0
  244. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/test/test.py +0 -0
  245. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/wrap/base.py +0 -0
  246. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/wrap/default_wraps.py +0 -0
  247. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/wrap/env.py +0 -0
  248. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/wrap/obj.py +0 -0
  249. {buildz-0.9.10 → buildz-0.9.12}/buildz/iocz/wrap/wraps.py +0 -0
  250. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/Test.javap +0 -0
  251. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/build +0 -0
  252. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/build.bat +0 -0
  253. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/clean +0 -0
  254. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/clean.bat +0 -0
  255. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/com/buildz/Conf.javap +0 -0
  256. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/com/buildz/ConfUtil.javap +0 -0
  257. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/com/buildz/Confz.javap +0 -0
  258. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/com/buildz/Utils.javap +0 -0
  259. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/fps.js +0 -0
  260. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/jv +0 -0
  261. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/jv.bat +0 -0
  262. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/jvc +0 -0
  263. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/jvc.bat +0 -0
  264. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/run +0 -0
  265. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/run.bat +0 -0
  266. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/confz/test.js +0 -0
  267. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/defs.py +0 -0
  268. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/dm.py +0 -0
  269. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/fcs.py +0 -0
  270. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/jsc.py +0 -0
  271. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/main.py +0 -0
  272. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/rn.py +0 -0
  273. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/jvp/util.py +0 -0
  274. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/note +0 -0
  275. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/Test.java +0 -0
  276. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/all.sh +0 -0
  277. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/com/buildz/xf/Args.java +0 -0
  278. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/com/buildz/xf/Loader.java +0 -0
  279. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/com/buildz/xf/LoaderJNI.java +0 -0
  280. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/com/buildz/xf/cpp/com_buildz_xf_LoaderJNI.h +0 -0
  281. {buildz-0.9.10 → buildz-0.9.12}/buildz/jv/xf/com/buildz/xf/cpp/jxf.cpp +0 -0
  282. {buildz-0.9.10 → buildz-0.9.12}/buildz/logz.py +0 -0
  283. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/__init__.py +0 -0
  284. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/__init__.py +0 -0
  285. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/caps.py +0 -0
  286. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/gateway.py +0 -0
  287. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/mhttp.py +0 -0
  288. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/mhttps.py +0 -0
  289. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/proxy.py +0 -0
  290. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/mhttp/record.py +0 -0
  291. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/sslz/__init__.py +0 -0
  292. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/sslz/gen.py +0 -0
  293. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/sslz/gen.pyi +0 -0
  294. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/tcp/__init__.py +0 -0
  295. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/tcp/__main__.py +0 -0
  296. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/tcp/middle.py +0 -0
  297. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/test/__main__.py +0 -0
  298. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/test/test.py +0 -0
  299. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/test/test_cli.py +0 -0
  300. {buildz-0.9.10 → buildz-0.9.12}/buildz/netz/test/test_gw.py +0 -0
  301. {buildz-0.9.10 → buildz-0.9.12}/buildz/path.py +0 -0
  302. {buildz-0.9.10 → buildz-0.9.12}/buildz/pathz.py +0 -0
  303. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/__main__.py +0 -0
  304. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/lst.py +0 -0
  305. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/oldversion/run.py +0 -0
  306. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/oldversion/thrun.py +0 -0
  307. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/subchild.py +0 -0
  308. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/subrun.py +0 -0
  309. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/test/inc.py +0 -0
  310. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/test/x.js +0 -0
  311. {buildz-0.9.10 → buildz-0.9.12}/buildz/sc/test/x.py +0 -0
  312. {buildz-0.9.10 → buildz-0.9.12}/buildz/threads/__init__.py +0 -0
  313. {buildz-0.9.10 → buildz-0.9.12}/buildz/threads/impl.py +0 -0
  314. {buildz-0.9.10 → buildz-0.9.12}/buildz/threads/pool.py +0 -0
  315. {buildz-0.9.10 → buildz-0.9.12}/buildz/threads/test.py +0 -0
  316. {buildz-0.9.10 → buildz-0.9.12}/buildz/tls.py +0 -0
  317. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/__init__.py +0 -0
  318. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/code.py +0 -0
  319. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/filediff.py +0 -0
  320. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/myers_diff.py +0 -0
  321. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/test_xfind.py +0 -0
  322. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/time/__init__.py +0 -0
  323. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/time/timez.py +0 -0
  324. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/__init__.py +0 -0
  325. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/base.py +0 -0
  326. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/getch.py +0 -0
  327. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/lx.py +0 -0
  328. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/test.py +0 -0
  329. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/tio/win.py +0 -0
  330. {buildz-0.9.10 → buildz-0.9.12}/buildz/tz/xfind.py +0 -0
  331. {buildz-0.9.10 → buildz-0.9.12}/buildz/unittest/__init__.py +0 -0
  332. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/__init__.py +0 -0
  333. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/__main__.py +0 -0
  334. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/base.py +0 -0
  335. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/code.py +0 -0
  336. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/Makefile +0 -0
  337. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/README.txt +0 -0
  338. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/clean.py +0 -0
  339. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/base.h +0 -0
  340. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/base_deal.h +0 -0
  341. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/buffer.cpp +0 -0
  342. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/buffer.h +0 -0
  343. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/callback.h +0 -0
  344. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/callback_demo.cpp +0 -0
  345. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/callback_demo.h +0 -0
  346. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/code.cpp +0 -0
  347. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/code.h +0 -0
  348. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/cxf.h +0 -0
  349. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/dict.cpp +0 -0
  350. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/dict.h +0 -0
  351. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/kv.h +0 -0
  352. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/list.cpp +0 -0
  353. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/list.h +0 -0
  354. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/listdict.cpp +0 -0
  355. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/listdict.h +0 -0
  356. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/lr.cpp +0 -0
  357. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/lr.h +0 -0
  358. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/lrval.cpp +0 -0
  359. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/lrval.h +0 -0
  360. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/next.cpp +0 -0
  361. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/next.h +0 -0
  362. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/reval.h +0 -0
  363. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/spt.cpp +0 -0
  364. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/spt.h +0 -0
  365. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/str.cpp +0 -0
  366. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/deal/str.h +0 -0
  367. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/exp.h +0 -0
  368. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/init.cpp +0 -0
  369. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/init.h +0 -0
  370. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/item.h +0 -0
  371. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/mg.cpp +0 -0
  372. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/mg.h +0 -0
  373. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/loaderz/test.cpp +0 -0
  374. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/pc.cpp +0 -0
  375. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/pc.h +0 -0
  376. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/pcxf.pyx +0 -0
  377. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/setup.py +0 -0
  378. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/setup_mingw32.py +0 -0
  379. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/cpp/tstcxf.py +0 -0
  380. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/file.py +0 -0
  381. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/base.py +0 -0
  382. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/buffer.py +0 -0
  383. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/listz.py +0 -0
  384. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/lr.py +0 -0
  385. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/lrval.py +0 -0
  386. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/mapz.py +0 -0
  387. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/nextz.py +0 -0
  388. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/reval.py +0 -0
  389. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/setz.py +0 -0
  390. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/spc.py +0 -0
  391. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/spt.py +0 -0
  392. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/deal/strz.py +0 -0
  393. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/exp.py +0 -0
  394. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/item.py +0 -0
  395. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/mg.py +0 -0
  396. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loader/pos.py +0 -0
  397. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/base.py +0 -0
  398. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/buffer.py +0 -0
  399. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  400. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/listz.py +0 -0
  401. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/lr.py +0 -0
  402. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/lrval.py +0 -0
  403. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/mapz.py +0 -0
  404. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/nextz.py +0 -0
  405. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/reval.py +0 -0
  406. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/setz.py +0 -0
  407. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/spt.py +0 -0
  408. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/deal/strz.py +0 -0
  409. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/exp.py +0 -0
  410. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/item.py +0 -0
  411. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/mg.py +0 -0
  412. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/pos.py +0 -0
  413. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/test.py +0 -0
  414. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz/test1.py +0 -0
  415. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/base.py +0 -0
  416. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/buffer.py +0 -0
  417. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
  418. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
  419. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
  420. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
  421. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
  422. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
  423. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
  424. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
  425. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
  426. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
  427. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/exp.py +0 -0
  428. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/item.py +0 -0
  429. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/mg.py +0 -0
  430. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/pos.py +0 -0
  431. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/test.py +0 -0
  432. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/loaderz_nexp/test1.py +0 -0
  433. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/mapz.py +0 -0
  434. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/read.py +0 -0
  435. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/readz.py +0 -0
  436. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/readz_nexp.py +0 -0
  437. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/stack.py +0 -0
  438. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/write.py +0 -0
  439. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/base.py +0 -0
  440. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/conf.py +0 -0
  441. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/jsonval.py +0 -0
  442. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/listmapz.py +0 -0
  443. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/listz.py +0 -0
  444. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/mapz.py +0 -0
  445. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/reval.py +0 -0
  446. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/deal/strz.py +0 -0
  447. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/itemz.py +0 -0
  448. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writer/mg.py +0 -0
  449. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/base.py +0 -0
  450. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/conf.py +0 -0
  451. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/jsonval.py +0 -0
  452. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/listmapz.py +0 -0
  453. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/listz.py +0 -0
  454. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/mapz.py +0 -0
  455. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/reval.py +0 -0
  456. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/deal/strz.py +0 -0
  457. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/itemz.py +0 -0
  458. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/mg.py +0 -0
  459. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/test.py +0 -0
  460. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writerz/testx.py +0 -0
  461. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/writez.py +0 -0
  462. {buildz-0.9.10 → buildz-0.9.12}/buildz/xf/xargs.py +0 -0
  463. {buildz-0.9.10 → buildz-0.9.12}/buildz/xz/__init__.py +0 -0
  464. {buildz-0.9.10 → buildz-0.9.12}/buildz/xz/conf.js +0 -0
  465. {buildz-0.9.10 → buildz-0.9.12}/buildz/xz/data.js +0 -0
  466. {buildz-0.9.10 → buildz-0.9.12}/buildz/xz/test.py +0 -0
  467. {buildz-0.9.10 → buildz-0.9.12}/buildz/xz/trs.py +0 -0
  468. {buildz-0.9.10 → buildz-0.9.12}/buildz.egg-info/dependency_links.txt +0 -0
  469. {buildz-0.9.10 → buildz-0.9.12}/buildz.egg-info/top_level.txt +0 -0
  470. {buildz-0.9.10 → buildz-0.9.12}/notes/notes.txt +0 -0
  471. {buildz-0.9.10 → buildz-0.9.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.9.10
3
+ Version: 0.9.12
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
@@ -28,6 +28,7 @@ Codes of this project are not allowed to be used for AI training or any other fo
28
28
  2,基于xf格式写了个ioc控制反转配置文件读取的程序,模块在buildz.ioc下
29
29
  3,其他工具模块:
30
30
  buildz.fz: 文件夹查找
31
+ buildz.log: 日志工具
31
32
  buildz.pyz: 简化python __import__调用
32
33
  buildz.argx: 按格式读命令行参数
33
34
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
@@ -15,6 +15,7 @@ Codes of this project are not allowed to be used for AI training or any other fo
15
15
  2,基于xf格式写了个ioc控制反转配置文件读取的程序,模块在buildz.ioc下
16
16
  3,其他工具模块:
17
17
  buildz.fz: 文件夹查找
18
+ buildz.log: 日志工具
18
19
  buildz.pyz: 简化python __import__调用
19
20
  buildz.argx: 按格式读命令行参数
20
21
  buildz.tz: 加些工具,目前只有myerse diff字符串比较算法
@@ -51,6 +51,17 @@ class BindKey(Base):
51
51
  return conf(self.key)
52
52
 
53
53
  pass
54
+ '''
55
+
56
+ 实际数据:
57
+ src: Conf对象,最底层,只读
58
+ conf: dict数据,实际数据,可读可写
59
+ history: dict里是list,每个key在push前,把当前key对应的数据存入history中,后面pop的时候,删除当前数据,把之前的数据重新更新
60
+ _links: link对象,搜索方式是搜最长的有link的节点,返回link目标key拼接剩余key作为key的取值
61
+ link对象:[{子集}, 当前节点link目标, 是否有link(1是,0否)],初始化为[{}, None, 0]
62
+
63
+
64
+ '''
54
65
  class Conf(Base):
55
66
  @staticmethod
56
67
  def bind_key(key, abs=True, up = None):
@@ -0,0 +1,300 @@
1
+ #
2
+
3
+ '''
4
+ 简单的方便读取配置文件的类
5
+ 没安全措施
6
+ 每个Conf里有当前的数据conf,和数据是否存在exist
7
+ 可以执行的操作:
8
+ 读取,循环读取,修改,删除,修改和删除不会通知其他节点
9
+
10
+ push和pop操作(耗时高)
11
+ push修改当前conf的key
12
+ 生成修改记录
13
+
14
+ pop的时候全改回来
15
+ 因为没用到,暂时不实现,只保留接口和数据
16
+
17
+ gets可以获取多个key,返回队列
18
+ top(domain)回到根节点的domain下
19
+ call(domain)到当前节点的domain下,不存在或没有数据就报错
20
+
21
+ Conf包含数据:
22
+ conf: 实际数据
23
+ exist: 数据是否存在
24
+ domain: 根节点到当前节点的路径字符串
25
+ spt,spts: 分割字符串
26
+ src: 只读配置,默认为空
27
+ root: 根节点
28
+
29
+
30
+
31
+ '''
32
+
33
+ from . import mapz
34
+ from buildz import xf
35
+ from ..base import Base
36
+ import os
37
+ def dzkeys(key, spt):
38
+ if key is None:
39
+ return []
40
+ elif type(key)==str:
41
+ key = key.split(spt)
42
+ elif type(key) not in (list, tuple):
43
+ key = [key]
44
+ return key
45
+
46
+ class Conf(Base):
47
+ def len(self):
48
+ return len(self.conf)
49
+ def items(self, as_conf=True):
50
+ rst = []
51
+ for i in range(self.len()):
52
+ rst.append(self.list(i, as_conf))
53
+ return rst
54
+ def list(self, i, as_conf=True):
55
+ conf = self.conf[i]
56
+ if as_conf:
57
+ domain = self.domain+self.spt+str(i)
58
+ val = conf
59
+ src = self.src_list(i, as_conf)
60
+ obj = self.root or self
61
+ find = True
62
+ conf = Conf(self.spt, self.spts, domain, obj, src, val, find)
63
+ return conf
64
+ def lhget(self, key, default=None, loop=-1):
65
+ '''
66
+ 循环读取,直到读取到的不是字符串或loop==0或没有对应的key了
67
+ '''
68
+ a,b = self._hget(key, default)
69
+ bak = a, b
70
+ obj = self.root or self
71
+ while b and type(a)==str and loop!=0:
72
+ a,b = obj._hget(a, default)
73
+ if b:
74
+ bak = a,b
75
+ loop-=1
76
+ if loop>0:
77
+ bak = a,b
78
+ return bak
79
+ def key(self, ks):
80
+ return self.spt.join(ks)
81
+ def src_list(self, i, as_conf = True):
82
+ if self.src is None:
83
+ return None
84
+ if self.src.get_type()!=list:
85
+ return None
86
+ if self.src.len()<=i:
87
+ return None
88
+ return self.src.list(i, as_conf)
89
+ def src_hget(self, key, default):
90
+ if self.src is None:
91
+ return default, 0
92
+ return self.src.hget(key, default, loop)
93
+ def src_dm(self, domain):
94
+ if self.src is None:
95
+ return None
96
+ return self.src(domain,0)
97
+ def src_top(self, domain):
98
+ if self.src is None:
99
+ return None
100
+ return self.src.top(domain, 0)
101
+ def lget(self, key, default=None, loop=-1):
102
+ return self.lhget(key, default, loop)[0]
103
+ def hget(self, key, default=None):
104
+ '''
105
+ 最基本的读取方法
106
+ 先从conf拿,没有则从src拿
107
+ '''
108
+ val, find = default, 0
109
+ keys = dzkeys(key, self.spt)
110
+ if self.exist and type(self.conf)==dict:
111
+ val, find = mapz.dget(self.conf, keys, default)
112
+ if find:
113
+ return val, find
114
+ return self.src_hget(keys, default)
115
+ def get(self, key, default=None):
116
+ val = self.hget(key, default)[0]
117
+ #print(f"get {key} = {val}")
118
+ return val
119
+ def has(self, key):
120
+ return self.hget(key, None)[1]
121
+ def remove(self, key):
122
+ if not self.exist or type(self.conf)!=dict:
123
+ return
124
+ keys = dzkeys(key, self.spt)
125
+ return mapz.dremove(self.conf, keys)
126
+ def spts_ks(self, keys):
127
+ '''
128
+ 一堆key组成的字符串拆分成key的列表
129
+ '''
130
+ keys = dzkeys(keys, self.spts)
131
+ keys = [k.strip() if type(k) == str else k for k in keys]
132
+ return keys
133
+ def set(self, key, val):
134
+ keys = dzkeys(key, self.spt)
135
+ mapz.dset(self.conf, keys, val)
136
+ def top(self, domain = None, loop=0):
137
+ root = self.root or self
138
+ if domain is not None:
139
+ root = root(domain, loop)
140
+ return root
141
+ def l(self, domain=None, loop=-1):
142
+ return self(domain,loop)
143
+ def call(self, domain=None, loop=0):
144
+ '''
145
+ 获取子域下的数据作为Conf
146
+ '''
147
+ if domain is None:
148
+ return self.root or self
149
+ val,find = self.hget(domain)
150
+ src = self.src_dm(domain)
151
+ if self.domain:
152
+ domain = self.domain+self.spt+domain
153
+ obj = self.root or self
154
+ bak = domain, val, find, src
155
+ while loop!=0 and find and type(val)==str:
156
+ bak = domain, val, find, src
157
+ val,find = obj.hget(domain)
158
+ src = self.src_top(domain)
159
+ loop-=1
160
+ domain,val,find,src=bak
161
+ return Conf(self.spt, self.spts, domain, obj, src, val, find)
162
+ def val(self):
163
+ return self.conf
164
+ def get_type(self):
165
+ return type(self.val())
166
+ def has_val(self):
167
+ return self.exist
168
+ def get_conf(self):
169
+ return self.conf
170
+ def str(self):
171
+ return str(self.get_conf())
172
+ def init(self, spt='.', spts=',', domain=None, root = None, src = None, conf=None, exist=1):
173
+ self.spt = spt
174
+ self.spts = spts
175
+ self.domain = domain
176
+ self.root = root
177
+ self.src = src
178
+ if conf is None:
179
+ conf = {}
180
+ self.conf = conf
181
+ self.exist = exist
182
+ self.history = {}
183
+ def clean(self):
184
+ '''
185
+ 清空当前数据
186
+ '''
187
+ if self.get_type()!=dict:
188
+ return
189
+ self.history = {}
190
+ for key in self.conf:
191
+ del self.conf[key]
192
+ return self
193
+ def dkey(self, key):
194
+ if self.domain:
195
+ key = self.domain+self.spt+key
196
+ return key
197
+ def update(self, conf, flush = 1, replace=1, visit_list=0):
198
+ if flush:
199
+ conf = xf.flush_maps(conf, lambda x:x.split(self.spt) if type(x)==str else [x], visit_list)
200
+ #print(f"update with {conf}")
201
+ xf.fill(conf, self.conf, replace=replace)
202
+ return self
203
+ def push(self, key, value, flush = 1, update=0, clean_history = 0):
204
+ if self.get_type()!=dict:
205
+ return None
206
+ keys = dzkeys(key, self.spt)
207
+ val, find = mapz.dget(self.conf, keys)
208
+ val = mapz.deep_clone(val)
209
+ if clean_history or key not in self.history:
210
+ self.history[key] = []
211
+ self.history[key].append([val, find, update])
212
+ if flush and type(value)==dict:
213
+ value = xf.flush_maps(value, lambda x:x.split(self.spt) if type(x)==str else [x], 0)
214
+ if find and type(value)==dict and type(val)==dict and update:
215
+ self(key).update(value,flush=0)
216
+ else:
217
+ self.set(key, value)
218
+ return key
219
+ def pop(self, key, clean_history = 0):
220
+ if key not in self.history:
221
+ return False
222
+ lst = self.history[key]
223
+ if len(lst)==0:
224
+ return False
225
+ rst = lst.pop(-1)
226
+ if clean_history:
227
+ self.history[key] = []
228
+ if not rst[1]:
229
+ self.remove(key)
230
+ return True
231
+ self.set(key, rst[0])
232
+ return True
233
+ def pops(self, keys, *a, **b):
234
+ keys = self.spts_ks(keys)
235
+ keys.reverse()
236
+ for key in keys:
237
+ self.pop(key)
238
+ def with_push(self, key, *a, **b):
239
+ self.push(key, *a, **b)
240
+ def out():
241
+ self.pop(key)
242
+ return pyz.with_out(out)
243
+ def with_pushs(self, keys, *a, **b):
244
+ self.pushs(keys, *a, **b)
245
+ def out():
246
+ self.pops(keys)
247
+ return pyz.with_out(out)
248
+ def g(self, **maps):
249
+ rst = [self.get(k, v) for k,v in maps.items()]
250
+ if len(rst)==1:
251
+ rst = rst[0]
252
+ return rst
253
+ def s(self, **maps):
254
+ [self.set(k,v) for k,v in maps.items()]
255
+ def has_all(self, keys):
256
+ keys = self.spts_ks(keys)
257
+ rst = [1-self.has(key) for key in keys]
258
+ return sum(rst)==0
259
+ def has_any(self, keys):
260
+ keys = self.spts_ks(keys)
261
+ for key in keys:
262
+ if self.has(key):
263
+ return True
264
+ return False
265
+ @staticmethod
266
+ def fcs_bind(fn, wfn, align=False, null_default= False):
267
+ def wfc(self, keys, *objs, **maps):
268
+ #print(f"[[[[[]]]]]{wfn} call by {id(self)}")
269
+ keys = self.spts_ks(keys)
270
+ fc = getattr(self, fn)
271
+ rst = []
272
+ for i in range(len(keys)):
273
+ if i<len(objs):
274
+ val = fc(keys[i], objs[i], **maps)
275
+ else:
276
+ if align:
277
+ raise Exception(f"not val[{i}]")
278
+ if null_default:
279
+ val = fc(keys[i], None, **maps)
280
+ else:
281
+ val = fc(keys[i], **maps)
282
+ rst.append(val)
283
+ return rst
284
+ setattr(Conf, wfn, wfc)
285
+
286
+ pass
287
+ maps = xf.loads(r"""
288
+ (get,0,1)
289
+ (lget,0,1)
290
+ (set,1)
291
+ (remove)
292
+ (push,1)
293
+ """)
294
+ for item in maps:
295
+ k = item[0]
296
+ ks = k+"s"
297
+ item = item[:1]+[ks]+item[1:]
298
+ Conf.fcs_bind(*item)
299
+
300
+ pass
@@ -56,8 +56,16 @@ class Fetch:
56
56
  for rkey in rkeys:
57
57
  assert rkey!=key, f'error rkey==key: {key}'
58
58
  val = rst[key]
59
- rst[rkey] = val
59
+ if rkey not in rst:
60
+ rst[rkey] = val
61
+ else:
62
+ tmp = rst[rkey]
63
+ if type(tmp)!=list:
64
+ tmp = [tmp]
65
+ rst[rkey] = tmp
66
+ tmp.append(val)
60
67
  keys.append(rkey)
68
+ keys = list(set(keys))
61
69
  del rst[key]
62
70
  # for key in keys:
63
71
  # while key in self.maps:
@@ -60,7 +60,19 @@ class Base:
60
60
  return None
61
61
 
62
62
  pass
63
-
63
+ class BaseX(Base):
64
+ def __iter__(self):
65
+ return self.iter()
66
+ def iter(self):
67
+ assert False
68
+ def __getattr__(self, key):
69
+ return self.get(key)
70
+ def get(self, key):
71
+ assert False
72
+ def set(self, key,val):
73
+ assert False
74
+ def __setattr__(self, key, val):
75
+ return self.set(key, val)
64
76
  class WBase(Base):
65
77
  def _open(self):
66
78
  pass
@@ -0,0 +1,102 @@
1
+ #
2
+ from .base import Base
3
+ class Confz(Base):
4
+ def init(self, fc_key = "fc", fn_key = "fn", objs="__confz.objs", fns = "__confz.fns", caches = "__confz.caches", fcs = "__confz.fcs", default_fn = "calls", obj_prefix = "", save_key = "save", default_save = True):
5
+ self.fc_key = fc_key
6
+ self.fn_key = fn_key
7
+ self.objs = objs
8
+ self.fns = fns
9
+ self.fcs = fcs
10
+ self.caches = caches
11
+ self.default_fn = default_fn
12
+ self.obj_prefix= obj_prefix
13
+ self.default_save = default_save
14
+ self.save_key = save_key
15
+ def set(self, conf, id, obj, prefix=True):
16
+ '''
17
+ 存放创建好的对象
18
+ '''
19
+ if prefix:
20
+ id = self.obj_prefix+id
21
+ conf(self.objs).set(id, obj)
22
+ def get(self, conf, id):
23
+ id = self.obj_prefix+id
24
+ objs = conf(self.objs)
25
+ obj = objs.get(id)
26
+ if obj is None:
27
+ obj = self.simple(conf, id)
28
+ return obj
29
+ def regist(self, curr, conf):
30
+ '''
31
+ fn: regist/reg
32
+ name: fn_name
33
+ path: fc_path
34
+ call: false
35
+ '''
36
+ name, path, call = curr.gets("name, path, call")
37
+ if not call:
38
+ fns = conf(self.fns)
39
+ fns.set(name, path)
40
+ return
41
+ fc = pyz.load(path)
42
+ fc = fc(curr, conf)
43
+ conf(self.fcs).set(name, fc)
44
+ def calls(self, curr, conf):
45
+ """
46
+ fn: calls
47
+ calls: [key1, key2, key3]
48
+ """
49
+ calls = curr.get("calls", [])
50
+ rst = [self.simple(conf, k) for k in calls]
51
+ return rst
52
+ def init(self, conf):
53
+ fcs = conf(self.fcs)
54
+ fcs.set("regist", self.regist)
55
+ fcs.set("reg", self.regist)
56
+ fcs.set("calls", self.calls)
57
+ def get_fc(self, curr, conf, default_fc):
58
+ s_fc = curr.get(self.fc_key, None)
59
+ if s_fc is not None:
60
+ return pyz.load(s_fc)
61
+ if default_fc is not None:
62
+ return default_fc
63
+ fn = curr.get(self,fn_key, self.default_fn)
64
+ fcs = conf(self.fcs)
65
+ fc = fcs.get(fn)
66
+ if fc is not None:
67
+ return fc
68
+ fns = conf(self.fns)
69
+ s_fc = fns.get(fn)
70
+ if s_fc is None:
71
+ return None
72
+ fc = pyz.load(s_fc)
73
+ fcs.set(fn, fc)
74
+ return fc
75
+ def simple(self, conf, key, default_fc = None):
76
+ curr = conf(key)
77
+ fc = self.get_fc(curr, conf, default_fc)
78
+ obj = fc(curr, conf)
79
+ if curr.get(self.save_key, self.default_save):
80
+ self.set(key, obj,False)
81
+ return obj
82
+ def call(self, conf, key, default_fc=None):
83
+ return self.simple(conf, key, default_fc)
84
+
85
+ pass
86
+
87
+ def wrap(fc, to_dict=0, unwrap=0, put_conf=1):
88
+ if unwrap:
89
+ assert to_dict==1
90
+ assert put_conf==0
91
+ def wfc(curr, conf):
92
+ if to_dict:
93
+ curr = curr.dict()
94
+ if unwrap:
95
+ return fc(**curr)
96
+ elif not put_conf:
97
+ return fc(curr)
98
+ else:
99
+ return fc(curr, conf)
100
+ return wfc
101
+
102
+ pass
@@ -2,4 +2,5 @@
2
2
  from ._dz.mapz import *
3
3
  from ._dz.omapz import Mapz
4
4
  from ._dz.conf import Conf, BindKey
5
+ from ._dz.confx import Conf as Confx
5
6
  from ._dz.oconf import ObjConf, ObjTypeConf
@@ -4,6 +4,6 @@ from .dirz import dirs, FileDeal
4
4
  from .lsf import lists, search, searchd,searchs,_search
5
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
- from .csv import to_csv, from_csv
7
+ from .csv import to_csv, from_csv, merge_in
8
8
 
9
9
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -0,0 +1,159 @@
1
+ #
2
+ from . import fio
3
+ """
4
+ col=1,as_map = 1
5
+ {
6
+ a: [a1,a2,a3,...]
7
+ b: [b1,b2,b3,...]
8
+ ...
9
+ }
10
+
11
+ col=1, as_map=0
12
+ [
13
+ [a1,a2,a3,...]
14
+ [b1,b2,b3,...]
15
+ ...
16
+ ]
17
+
18
+ col=0,as_map = 1
19
+ [
20
+ {a:a1,b:b1,...},
21
+ {a:a2,b:b2,...},
22
+ ...
23
+ ]
24
+
25
+ col=0,as_map=0
26
+ [
27
+ [a1,b1,...],
28
+ [a2,b2,...],
29
+ ...
30
+ ]
31
+ """
32
+ def to_csv(keys, datas, fp, col = True, as_map = False,coding="utf-8"):
33
+ fio.makefdir(fp)
34
+ rst = []
35
+ if col:
36
+ if as_map:
37
+ datas = [datas[k] for k in keys]
38
+ datas = list(zip(*datas))
39
+ else:
40
+ if as_map:
41
+ datas = [[dt[k] for k in keys] for dt in datas]
42
+ datas = [", ".join([str(v) for v in dt]) for dt in datas]
43
+ rst = [", ".join(keys)]+datas
44
+ rs = "\n".join(rst)
45
+ fio.write(rs.encode(coding), fp)
46
+
47
+ pass
48
+
49
+ def from_csv(fp, col=True, as_map = False,coding="utf-8"):
50
+ s = fio.read(fp).decode(coding)
51
+ arr = s.split("\n")
52
+ arr = [[v.strip() for v in k.split(",")] for k in arr if k.strip()!=""]
53
+ keys = arr[0]
54
+ datas = arr[1:]
55
+ if col:
56
+ outs = []
57
+ for i in range(len(keys)):
58
+ tmp = [k[i] for k in datas]
59
+ outs.append(tmp)
60
+ if as_map:
61
+ outs = {k:arr for k,arr in zip(keys, datas)}
62
+ datas = outs
63
+ elif as_map:
64
+ datas = [{k:v for k,v in zip(keys, dt)} for dt in datas]
65
+ return keys, datas
66
+
67
+ pass
68
+ def wrap_cols(keys, cols):
69
+ rst = {}
70
+ for key, col in zip(keys, cols):
71
+ rst[key] = col
72
+ return rst
73
+
74
+ def init_merge_keys(keys_a, keys_b):
75
+ rst = {}
76
+ keys_b = {k:k for k in keys_b}
77
+ for k in keys_a:
78
+ rst[k] = []
79
+ keys_b_ = {}
80
+ for k,v in keys_b.items():
81
+ while v in rst:
82
+ v = v+"_"
83
+ rst[v] = []
84
+ keys_b_[k] = v
85
+ keys_b = keys_b_
86
+ return rst, keys_b
87
+ def merge_col_in(datas_a, datas_b, keys, keys_a = None, keys_b = None):
88
+ if type(keys)==str:
89
+ keys = [keys]
90
+ if keys_a is None:
91
+ keys_a = list(datas_a.keys())
92
+ bak_a = keys_a
93
+ keys_a = set(keys_a)
94
+ if keys_b is None:
95
+ keys_b = list(datas_b.keys())
96
+ bak_b = keys_b
97
+ keys_b = set(keys_b)
98
+ l = len(datas_b[keys[0]])
99
+ indexes = {}
100
+ for i in range(l):
101
+ vs = tuple([datas_b[k][i] for k in keys])
102
+ indexes[vs] = i
103
+ rst, keys_b = init_merge_keys(keys_a, keys_b)
104
+ l = len(datas_a[keys[0]])
105
+ for i in range(l):
106
+ vs = tuple([datas_a[k][i] for k in keys])
107
+ if vs not in indexes:
108
+ continue
109
+ j = indexes[vs]
110
+ for k in keys_a:
111
+ rst[k].append(datas_a[k][i])
112
+ for k, k_ in keys_b.items():
113
+ rst[k_].apepnd(datas_b[k][j])
114
+ return rst, [keys_a, keys_b]
115
+
116
+ def merge_row_in(datas_a, datas_b, keys, keys_a = None, keys_b = None):
117
+ if type(keys)==str:
118
+ keys = [keys]
119
+ if len(datas_a)*len(datas_b)==0:
120
+ return []
121
+ if keys_a is None:
122
+ keys_a = list(datas_a[0].keys())
123
+ bak_a = keys_a
124
+ keys_a = set(keys_a)
125
+ if keys_b is None:
126
+ keys_b = list(datas_b[0].keys())
127
+ bak_b = keys_b
128
+ keys_b = set(keys_b)
129
+ rst, keys_b = init_merge_keys(keys_a, keys_b)
130
+ rst = []
131
+ l = len(datas_b)
132
+ indexes = {}
133
+ for i in range(l):
134
+ dt = datas_b[i]
135
+ vs = tuple([dt[k] for k in keys])
136
+ indexes[vs] = i
137
+ l = len(datas_a)
138
+ for i in range(l):
139
+ dt = datas_a[i]
140
+ vs = tuple([dt[k] for k in keys])
141
+ if vs not in indexes:
142
+ continue
143
+ j = indexes[vs]
144
+ tmp = {}
145
+ for k in keys_a:
146
+ tmp[k] = dt[k]
147
+ dt = datas_b[j]
148
+ for k, k_ in keys_b.items():
149
+ tmp[k_] = dt[k]
150
+ rst.append(tmp)
151
+ keys_b = [v for k,v in keys_b.items()]
152
+ return rst, [keys_a, keys_b]
153
+
154
+
155
+ def merge_in(datas_a, datas_b, keys, col = True, keys_a = None, keys_b = None):
156
+ if col:
157
+ return merge_col_in(datas_a, datas_b, keys, keys_a, keys_b)
158
+ return merge_row_in(datas_a, datas_b, keys, keys_a, keys_b)
159
+