buildz 0.6.45__tar.gz → 0.6.47__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 (304) hide show
  1. buildz-0.6.47/MANIFEST.in +3 -0
  2. {buildz-0.6.45/buildz.egg-info → buildz-0.6.47}/PKG-INFO +1 -1
  3. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/argz.py +17 -8
  4. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/build.py +11 -3
  5. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/callz.py +15 -1
  6. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/tests/conf.js +3 -3
  7. buildz-0.6.47/buildz/argz/testx.py +42 -0
  8. {buildz-0.6.45 → buildz-0.6.47}/buildz/base.py +28 -0
  9. buildz-0.6.47/buildz/dz/__init__.py +3 -0
  10. buildz-0.6.47/buildz/dz/mapz.py +323 -0
  11. {buildz-0.6.45 → buildz-0.6.47}/buildz/fz/__init__.py +1 -1
  12. {buildz-0.6.45 → buildz-0.6.47}/buildz/fz/fio.py +56 -10
  13. buildz-0.6.47/buildz/iocz/base.py +6 -0
  14. buildz-0.6.47/buildz/iocz/ioc/base.py +14 -0
  15. buildz-0.6.47/buildz/iocz/ioc/bind.py +14 -0
  16. buildz-0.6.47/buildz/iocz/ioc/confs.py +5 -0
  17. buildz-0.6.47/buildz/iocz/ioc/datas.py +23 -0
  18. buildz-0.6.47/buildz/iocz/ioc/dataset.py +35 -0
  19. buildz-0.6.47/buildz/iocz/ioc/deals.py +14 -0
  20. buildz-0.6.47/buildz/iocz/ioc/dm.py +28 -0
  21. buildz-0.6.47/buildz/iocz/ioc/encapes.py +26 -0
  22. buildz-0.6.47/buildz/iocz/ioc/env.py +117 -0
  23. buildz-0.6.47/buildz/iocz/ioc/envm.py +2 -0
  24. buildz-0.6.47/buildz/iocz/ioc/ids.py +24 -0
  25. buildz-0.6.47/buildz/iocz/ioc/tdata.py +42 -0
  26. buildz-0.6.47/buildz/iocz/ioc/tdict.py +32 -0
  27. buildz-0.6.47/buildz/iocz/ioc/unit.py +26 -0
  28. buildz-0.6.47/buildz/iocz/ioc_deal/obj.py +79 -0
  29. {buildz-0.6.45 → buildz-0.6.47}/buildz/logz.py +20 -2
  30. buildz-0.6.47/buildz/netz/__init__.py +0 -0
  31. buildz-0.6.47/buildz/netz/mhttp/__init__.py +5 -0
  32. buildz-0.6.47/buildz/netz/mhttp/caps.py +69 -0
  33. buildz-0.6.47/buildz/netz/mhttp/mhttp.py +243 -0
  34. buildz-0.6.47/buildz/netz/mhttp/proxy.py +161 -0
  35. buildz-0.6.47/buildz/netz/mhttp/record.py +90 -0
  36. buildz-0.6.47/buildz/netz/sslz/__init__.py +2 -0
  37. buildz-0.6.47/buildz/netz/sslz/gen.py +392 -0
  38. buildz-0.6.47/buildz/netz/sslz/gen.pyi +54 -0
  39. buildz-0.6.47/buildz/netz/test/__main__.py +2 -0
  40. buildz-0.6.47/buildz/netz/test/test.py +69 -0
  41. buildz-0.6.47/buildz/netz/test/test_cli.py +38 -0
  42. {buildz-0.6.45 → buildz-0.6.47}/buildz/pathz.py +11 -2
  43. {buildz-0.6.45 → buildz-0.6.47}/buildz/pyz.py +59 -0
  44. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/mapz.py +39 -11
  45. {buildz-0.6.45 → buildz-0.6.47/buildz.egg-info}/PKG-INFO +1 -1
  46. {buildz-0.6.45 → buildz-0.6.47}/buildz.egg-info/SOURCES.txt +33 -1
  47. buildz-0.6.47/notes/notes.txt +1 -0
  48. {buildz-0.6.45 → buildz-0.6.47}/setup.py +1 -1
  49. buildz-0.6.45/MANIFEST.in +0 -2
  50. {buildz-0.6.45 → buildz-0.6.47}/LICENSE +0 -0
  51. {buildz-0.6.45 → buildz-0.6.47}/README.md +0 -0
  52. {buildz-0.6.45 → buildz-0.6.47}/buildz/__init__.py +0 -0
  53. {buildz-0.6.45 → buildz-0.6.47}/buildz/__main__.py +0 -0
  54. {buildz-0.6.45 → buildz-0.6.47}/buildz/argx.py +0 -0
  55. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/__init__.py +0 -0
  56. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/evalx.py +0 -0
  57. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/test.py +0 -0
  58. {buildz-0.6.45 → buildz-0.6.47}/buildz/argz/test_obj.py +0 -0
  59. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/__init__.py +0 -0
  60. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/cache.py +0 -0
  61. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/config.py +0 -0
  62. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/dbs.py +0 -0
  63. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/deal.py +0 -0
  64. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/deal_list.py +0 -0
  65. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/deal_type.py +0 -0
  66. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/defs.py +0 -0
  67. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/factory.py +0 -0
  68. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/init.py +0 -0
  69. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/log.py +0 -0
  70. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/request.py +0 -0
  71. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/run.py +0 -0
  72. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/save.py +0 -0
  73. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/cache/cache.js +0 -0
  74. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/config/base.js +0 -0
  75. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/config/config.js +0 -0
  76. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/data/fp.js +0 -0
  77. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/data/item1.js +0 -0
  78. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/data/item2.js +0 -0
  79. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/res/data/test.js +0 -0
  80. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/test.py +0 -0
  81. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/test/xtest.py +0 -0
  82. {buildz-0.6.45 → buildz-0.6.47}/buildz/auto/verify.py +0 -0
  83. {buildz-0.6.45 → buildz-0.6.47}/buildz/cachez/__init__.py +0 -0
  84. {buildz-0.6.45 → buildz-0.6.47}/buildz/cachez/cache.py +0 -0
  85. {buildz-0.6.45 → buildz-0.6.47}/buildz/cmd.py +0 -0
  86. {buildz-0.6.45 → buildz-0.6.47}/buildz/confz.py +0 -0
  87. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/__init__.py +0 -0
  88. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/__main__.py +0 -0
  89. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/__init__.py +0 -0
  90. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/basez.py +0 -0
  91. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/clickhousez.py +0 -0
  92. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/lib/readme +0 -0
  93. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/mysqlz.py +0 -0
  94. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/oraclez.py +0 -0
  95. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/orm.py +0 -0
  96. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/postgresqlz.py +0 -0
  97. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/sqlite3z.py +0 -0
  98. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/dv/structz.py +0 -0
  99. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/install.txt +0 -0
  100. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/run.conf +0 -0
  101. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/runz.py +0 -0
  102. {buildz-0.6.45 → buildz-0.6.47}/buildz/db/tls.py +0 -0
  103. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/ioc/deal.py +0 -0
  104. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/ioc/help.py +0 -0
  105. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/myers/deal.py +0 -0
  106. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/myers/help.py +0 -0
  107. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/conf/ioc.js +0 -0
  108. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/conf/main.js +0 -0
  109. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/conf/myers.js +0 -0
  110. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/conf/search.js +0 -0
  111. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/conf/xf.js +0 -0
  112. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/help/default.js +0 -0
  113. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/help/ioc.js +0 -0
  114. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/help/myers.js +0 -0
  115. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/help/search.js +0 -0
  116. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/help/xf.js +0 -0
  117. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/res/test.js +0 -0
  118. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/search/deal.py +0 -0
  119. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/search/help.py +0 -0
  120. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/test.py +0 -0
  121. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/xf/deal.py +0 -0
  122. {buildz-0.6.45 → buildz-0.6.47}/buildz/demo/xf/help.py +0 -0
  123. {buildz-0.6.45 → buildz-0.6.47}/buildz/evalz/__init__.py +0 -0
  124. {buildz-0.6.45 → buildz-0.6.47}/buildz/evalz/evalz.py +0 -0
  125. {buildz-0.6.45 → buildz-0.6.47}/buildz/evalz/res/default.js +0 -0
  126. {buildz-0.6.45 → buildz-0.6.47}/buildz/evalz/test.py +0 -0
  127. {buildz-0.6.45 → buildz-0.6.47}/buildz/fz/dirz.py +0 -0
  128. {buildz-0.6.45 → buildz-0.6.47}/buildz/fz/fhs.py +0 -0
  129. {buildz-0.6.45 → buildz-0.6.47}/buildz/fz/lsf.py +0 -0
  130. {buildz-0.6.45 → buildz-0.6.47}/buildz/html/__init__.py +0 -0
  131. {buildz-0.6.45 → buildz-0.6.47}/buildz/html/test/demo.html +0 -0
  132. {buildz-0.6.45 → buildz-0.6.47}/buildz/html/test/test.py +0 -0
  133. {buildz-0.6.45 → buildz-0.6.47}/buildz/html/xml.py +0 -0
  134. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/__init__.py +0 -0
  135. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/base.py +0 -0
  136. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/init.py +0 -0
  137. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/base.py +0 -0
  138. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/conf.py +0 -0
  139. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/confs.py +0 -0
  140. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/decorator.py +0 -0
  141. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/loads.py +0 -0
  142. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc/single.py +0 -0
  143. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/base.py +0 -0
  144. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/branch.py +0 -0
  145. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/call.py +0 -0
  146. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/calls.py +0 -0
  147. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  148. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  149. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  150. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  151. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  152. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  153. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  154. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  155. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  156. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  157. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  158. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  159. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  160. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  161. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  162. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  163. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  164. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  165. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  166. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  167. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  168. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  169. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  170. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  171. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  172. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/deal.py +0 -0
  173. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/demo.py +0 -0
  174. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/env.py +0 -0
  175. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/init.py +0 -0
  176. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/ioc.py +0 -0
  177. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/iocf.py +0 -0
  178. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/join.py +0 -0
  179. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/list.py +0 -0
  180. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/map.py +0 -0
  181. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/mcall.py +0 -0
  182. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/obj.py +0 -0
  183. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/ovar.py +0 -0
  184. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/ref.py +0 -0
  185. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/refs.py +0 -0
  186. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/val.py +0 -0
  187. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/var.py +0 -0
  188. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/ioc_deal/xfile.py +0 -0
  189. {buildz-0.6.45 → buildz-0.6.47}/buildz/ioc/wrap.py +0 -0
  190. {buildz-0.6.45 → buildz-0.6.47}/buildz/tools.py +0 -0
  191. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/__init__.py +0 -0
  192. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/myers_diff.py +0 -0
  193. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/test_xfind.py +0 -0
  194. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/time/__init__.py +0 -0
  195. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/time/timez.py +0 -0
  196. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/__init__.py +0 -0
  197. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/base.py +0 -0
  198. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/getch.py +0 -0
  199. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/lx.py +0 -0
  200. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/test.py +0 -0
  201. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/tio/win.py +0 -0
  202. {buildz-0.6.45 → buildz-0.6.47}/buildz/tz/xfind.py +0 -0
  203. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/__init__.py +0 -0
  204. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/__main__.py +0 -0
  205. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/base.py +0 -0
  206. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/code.py +0 -0
  207. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/code_modify.py +0 -0
  208. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/copy_old.py +0 -0
  209. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/file.py +0 -0
  210. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/base.py +0 -0
  211. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/buffer.py +0 -0
  212. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/listz.py +0 -0
  213. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/lr.py +0 -0
  214. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/lrval.py +0 -0
  215. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/mapz.py +0 -0
  216. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/nextz.py +0 -0
  217. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/reval.py +0 -0
  218. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/setz.py +0 -0
  219. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/spc.py +0 -0
  220. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/spt.py +0 -0
  221. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/deal/strz.py +0 -0
  222. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/exp.py +0 -0
  223. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/item.py +0 -0
  224. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/mg.py +0 -0
  225. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loader/pos.py +0 -0
  226. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/base.py +0 -0
  227. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/buffer.py +0 -0
  228. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  229. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/listz.py +0 -0
  230. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/lr.py +0 -0
  231. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/lrval.py +0 -0
  232. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/mapz.py +0 -0
  233. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/nextz.py +0 -0
  234. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/reval.py +0 -0
  235. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/setz.py +0 -0
  236. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/spc.py +0 -0
  237. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/spt.py +0 -0
  238. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/strz.py +0 -0
  239. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  240. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  241. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/exp.py +0 -0
  242. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/item.py +0 -0
  243. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/mg.py +0 -0
  244. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/pos.py +0 -0
  245. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/test.py +0 -0
  246. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz/test1.py +0 -0
  247. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/base.py +0 -0
  248. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/buffer.py +0 -0
  249. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
  250. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
  251. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
  252. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
  253. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
  254. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
  255. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
  256. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
  257. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/spc.py +0 -0
  258. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
  259. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
  260. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/strz_new.py +0 -0
  261. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/deal/strz_old.py +0 -0
  262. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/exp.py +0 -0
  263. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/item.py +0 -0
  264. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/mg.py +0 -0
  265. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/pos.py +0 -0
  266. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/test.py +0 -0
  267. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/loaderz_nexp/test1.py +0 -0
  268. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/read.py +0 -0
  269. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/readz.py +0 -0
  270. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/readz_nexp.py +0 -0
  271. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/stack.py +0 -0
  272. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/write.py +0 -0
  273. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/base.py +0 -0
  274. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/conf.py +0 -0
  275. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/jsonval.py +0 -0
  276. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/listmapz.py +0 -0
  277. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/listz.py +0 -0
  278. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/mapz.py +0 -0
  279. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/reval.py +0 -0
  280. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/deal/strz.py +0 -0
  281. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/itemz.py +0 -0
  282. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writer/mg.py +0 -0
  283. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/base.py +0 -0
  284. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/conf.py +0 -0
  285. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/jsonval.py +0 -0
  286. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/listmapz.py +0 -0
  287. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/listz.py +0 -0
  288. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/mapz.py +0 -0
  289. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/reval.py +0 -0
  290. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/deal/strz.py +0 -0
  291. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/itemz.py +0 -0
  292. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/mg.py +0 -0
  293. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/test.py +0 -0
  294. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writerz/testx.py +0 -0
  295. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/writez.py +0 -0
  296. {buildz-0.6.45 → buildz-0.6.47}/buildz/xf/xargs.py +0 -0
  297. {buildz-0.6.45 → buildz-0.6.47}/buildz/xz/__init__.py +0 -0
  298. {buildz-0.6.45 → buildz-0.6.47}/buildz/xz/conf.js +0 -0
  299. {buildz-0.6.45 → buildz-0.6.47}/buildz/xz/data.js +0 -0
  300. {buildz-0.6.45 → buildz-0.6.47}/buildz/xz/test.py +0 -0
  301. {buildz-0.6.45 → buildz-0.6.47}/buildz/xz/trs.py +0 -0
  302. {buildz-0.6.45 → buildz-0.6.47}/buildz.egg-info/dependency_links.txt +0 -0
  303. {buildz-0.6.45 → buildz-0.6.47}/buildz.egg-info/top_level.txt +0 -0
  304. {buildz-0.6.45 → buildz-0.6.47}/setup.cfg +0 -0
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ recursive-include buildz *
3
+ recursive-include notes *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.45
3
+ Version: 0.6.47
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
@@ -103,12 +103,18 @@ class ArgItem(Base):
103
103
  find = False
104
104
  for key, vtype in self.trs:
105
105
  if vtype =="dict":
106
- if key in maps:
107
- val = maps[key]
106
+ if xf.dhas(maps, key):
107
+ val = xf.dget(maps, key)
108
108
  if self.remove:
109
- del maps[key]
110
- find = True
109
+ xf.dremove(maps, key)
110
+ find=True
111
111
  break
112
+ #if key in maps:
113
+ # val = maps[key]
114
+ # if self.remove:
115
+ # del maps[key]
116
+ # find = True
117
+ # break
112
118
  else:
113
119
  if key in set_args:
114
120
  val = args[key]
@@ -123,7 +129,8 @@ class ArgItem(Base):
123
129
  if not find and self.need:
124
130
  raise ArgExp("need", set(self.trs), self.des)
125
131
  if self.vtype == 'dict':
126
- rst_maps[self.key] = val
132
+ xf.dset(rst_maps, self.key, val)
133
+ #rst_maps[self.key] = val
127
134
  else:
128
135
  rst_args[self.key] = val
129
136
 
@@ -135,9 +142,11 @@ class ArgItemBuild(build.Build):
135
142
  value = xf.g(conf, value=None)
136
143
  des = xf.g(conf, des=None)
137
144
  remove = xf.g(conf, remove=True)
138
- src = conf['src']
139
- if type(src) not in (list, tuple):
140
- src = [src]
145
+ src = xf.g(conf, src=None)
146
+ srcs = xf.g(conf, srcs = [])
147
+ if src is not None:
148
+ srcs.append(src)
149
+ src = srcs
141
150
  item = ArgItem(key, vtype, need, default, value, des, remove)
142
151
  for s in src:
143
152
  if type(s) not in (list, tuple):
@@ -1,5 +1,5 @@
1
1
  #
2
- from buildz import Base, xf
2
+ from buildz import Base, xf,pyz
3
3
  class Build(Base):
4
4
  def init(self, *binds):
5
5
  self.builder = None
@@ -11,10 +11,11 @@ class Build(Base):
11
11
  def call(self, conf):
12
12
  assert 0, 'not impl'
13
13
  class Builder(Base):
14
- def init(self, fc = None, key_id = "id"):
14
+ def init(self, fc = None, key_id = "id", default_key = "main"):
15
15
  self.vars = {}
16
16
  self.confs = {}
17
17
  self.key_id = key_id
18
+ self.df_key = default_key
18
19
  self.set_fc(fc)
19
20
  def set_fc(self, fc):
20
21
  fc.bind(self)
@@ -34,6 +35,12 @@ class Builder(Base):
34
35
  conf = self.confs[key]
35
36
  return self.fc(conf)
36
37
  def conf(self, data):
38
+ if type(data) == dict:
39
+ tp = xf.g(data, type=None)
40
+ if tp is not None and type(tp) not in (list, tuple, dict):
41
+ if self.key_id not in data:
42
+ data[self.key_id] = self.df_key
43
+ data = [data]
37
44
  if type(data) in (list, tuple):
38
45
  rst = {}
39
46
  for it in data:
@@ -44,5 +51,6 @@ class Builder(Base):
44
51
  data = rst
45
52
  self.confs = data
46
53
  return self
47
- def call(self, data, key="main"):
54
+ def call(self, data, key=None):
55
+ key = pyz.nnull(key, self.df_key)
48
56
  return self.conf(data).get_conf(key)
@@ -14,6 +14,9 @@ class Fc(Base):
14
14
  if isinstance(fc, Fc):
15
15
  return fc
16
16
  return Fc(fc)
17
+ class RetFc(Fc):
18
+ def call(self, args, maps):
19
+ return args, maps
17
20
  class ArgsCall(Fc):
18
21
  def init(self, fc, args=None, name = None):
19
22
  fc=self.make(fc)
@@ -88,23 +91,34 @@ class FcBuild(build.Build):
88
91
  src = xf.g(conf, src = None)
89
92
  fc = self.builder.get_var(src)
90
93
  return Fc(fc)
94
+ class RetBuild(build.Build):
95
+ def call(self, conf):
96
+ ctype = xf.g(conf, type=None)
97
+ if ctype != "ret":
98
+ return None
99
+ return RetFc()
91
100
  class CallBuild(build.Build):
92
101
  def init(self):
93
102
  self.args = argz.ArrArgsBuild()
94
103
  self.eval = evalx.EvalBuild()
95
104
  self.fc = FcBuild()
96
105
  self.calls = CallsBuild()
106
+ self.ret = RetBuild()
97
107
  super().init(self.args, self.eval, self.fc, self.calls)
98
108
  def call(self, conf):
99
109
  args = self.args(conf)
100
110
  judges = self.eval(conf)
101
111
  fc = self.fc(conf)
102
112
  calls = self.calls(conf)
113
+ ret = self.ret(conf)
103
114
  bfc = fc is None
104
115
  bcls = calls is None
105
- assert (bfc+bcls)==1
116
+ bret = ret is None
117
+ assert (bfc+bcls+bret)==2
106
118
  if fc is None:
107
119
  fc = calls
120
+ if fc is None:
121
+ fc = ret
108
122
  if args is not None:
109
123
  fc = ArgsCall(fc, args)
110
124
  if judges is not None:
@@ -22,10 +22,10 @@
22
22
  }
23
23
  maps: {
24
24
  filepath: {
25
- src: [f, fp, filepath]
25
+ srcs: [f, fp, filepath]
26
26
  }
27
27
  content: {
28
- src: [c, ct, content]
28
+ srcs: [c, ct, content]
29
29
  }
30
30
  }
31
- }
31
+ }
@@ -0,0 +1,42 @@
1
+ from buildz import argz,xf,Base,evalz,pathz
2
+ import sys,os
3
+
4
+ path = pathz.Path()
5
+ path.set("res", path(path.dir(__file__), "tests"))
6
+ conf = xf.loadf(path.res("conf.js"))
7
+ conf=xf.loads(r"""
8
+ type=ret
9
+ maps={
10
+ spt: {
11
+ src: [(env, spt), d]
12
+ default: 1
13
+ value: '.'
14
+ }
15
+ eglobal: {
16
+ src: [(env, global), d]
17
+ default:1
18
+ value: true
19
+ }
20
+ }
21
+ """)
22
+
23
+ mg = argz.CallBuilder()
24
+ fc = mg(conf)
25
+
26
+ data = xf.loads(r"""
27
+ args=[]
28
+ maps={
29
+ env: {
30
+ spt: x
31
+ }
32
+ }
33
+ """)
34
+ args = xf.g(data, args=[])
35
+ maps = xf.g(data, maps={})
36
+
37
+ rst = fc(args, maps)
38
+ print(f"rst: {rst}")
39
+ '''
40
+ python -m buildz.argz.testx
41
+ python -m buildz.argz.test search /d/rootz f=asf c=test
42
+ '''
@@ -1,5 +1,33 @@
1
1
  #coding=utf-8
2
2
  from . import pyz
3
+ def fcBase(cls, lst=0, keys = tuple()):
4
+ class _Base(cls):
5
+ def str(self):
6
+ return str(self.__class__)
7
+ def repr(self):
8
+ return self.str()
9
+ def __str__(self):
10
+ return self.str()
11
+ def __repr__(self):
12
+ return self.repr()
13
+ def __call__(self, *a, **b):
14
+ return self.call(*a, **b)
15
+ def call(self, *a, **b):
16
+ return None
17
+ def init(self, *a, **b):
18
+ pass
19
+ def __init__(self, *a, **b):
20
+ sa = a[:lst]
21
+ a = a[lst:]
22
+ sb = {}
23
+ for k in keys:
24
+ if k in b:
25
+ sb[k] = b[k]
26
+ del b[k]
27
+ super().__init__(*sa, **sb)
28
+ self.init(*a, **b)
29
+ return _Base
30
+
3
31
  class Base:
4
32
  def str(self):
5
33
  return str(self.__class__)
@@ -0,0 +1,3 @@
1
+ #
2
+
3
+ from .mapz import *
@@ -0,0 +1,323 @@
1
+ from buildz import pyz
2
+ def get(obj, key, default=None, set = False):
3
+ if type(obj)==list:
4
+ key = int(key)
5
+ if len(obj)<=key:
6
+ return default
7
+ return obj[key]
8
+ else:
9
+ if key not in obj:
10
+ if set:
11
+ obj[key] = default
12
+ return default
13
+ return obj[key]
14
+
15
+ pass
16
+ def getf(obj, key, fc):
17
+ if key not in obj:
18
+ return fc()
19
+ return obj[key]
20
+
21
+ pass
22
+ def gfn(obj, **maps):
23
+ rst = []
24
+ for k in maps:
25
+ if k in obj and obj[k] is not None:
26
+ v = obj[k]
27
+ else:
28
+ v = maps[k]()
29
+ rst.append(v)
30
+ if len(rst)==1:
31
+ rst = rst[0]
32
+ return rst
33
+
34
+ pass
35
+ def gf(obj, **maps):
36
+ rst = []
37
+ for k in maps:
38
+ if k in obj:
39
+ v = obj[k]
40
+ else:
41
+ v = maps[k]()
42
+ rst.append(v)
43
+ if len(rst)==1:
44
+ rst = rst[0]
45
+ return rst
46
+
47
+ pass
48
+ def get_first(obj, *keys):
49
+ for k in keys:
50
+ if k in obj:
51
+ return obj[k]
52
+ raise KeyError(keys[0])
53
+
54
+ pass
55
+ def get_one(obj, keys, default = None):
56
+ for k in keys:
57
+ if k in obj:
58
+ return obj[k]
59
+ return default
60
+
61
+ pass
62
+ def g1(obj, **maps):
63
+ v = None
64
+ for k in maps:
65
+ v = maps[k]
66
+ if k in obj:
67
+ v = obj[k]
68
+ return v
69
+ return v
70
+
71
+ pass
72
+ def g(obj, **maps):
73
+ rst = []
74
+ if obj is None:
75
+ return maps.values()
76
+ for k in maps:
77
+ v = maps[k]
78
+ if k in obj:
79
+ v = obj[k]
80
+ rst.append(v)
81
+ if len(rst)==1:
82
+ rst = rst[0]
83
+ return rst
84
+
85
+ pass
86
+ def c(obj, **maps):
87
+ for k in maps:
88
+ v = maps[k]
89
+ if k not in obj:
90
+ return False
91
+ vo = obj[k]
92
+ if vo!=v:
93
+ return False
94
+ return True
95
+ def gs(obj, **maps):
96
+ rst = []
97
+ for k in maps:
98
+ v = maps[k]
99
+ if k in obj:
100
+ v = obj[k]
101
+ else:
102
+ obj[k] = v
103
+ rst.append(v)
104
+ if len(rst)==1:
105
+ rst = rst[0]
106
+ return rst
107
+
108
+ pass
109
+ def get_set(obj, key, val):
110
+ if key not in obj:
111
+ obj[key]=val
112
+ return obj[key]
113
+ def s(obj, **maps):
114
+ for k in maps:
115
+ v = maps[k]
116
+ obj[k] = v
117
+
118
+ pass
119
+ def fill_fc(maps, fc):
120
+ for k in maps:
121
+ v = maps[k]
122
+ if type(v) == dict:
123
+ fill_fc(v, fc)
124
+ continue
125
+ maps[k] = fc(v)
126
+ return maps
127
+
128
+ pass
129
+ def im2l(maps):
130
+ if type(maps)!=dict:
131
+ return maps
132
+ mx = 0
133
+ for k in maps:
134
+ if type(k)==str:
135
+ k = int(k)
136
+ if type(k)!=int or k<0:
137
+ raise Exception(f"args key only can be int and bigger than 0, but {type(k)}:{k} found")
138
+ mx = max(k+1, mx)
139
+ arr = [None]*mx
140
+ for k, v in maps.items():
141
+ arr[k] = v
142
+ return arr
143
+
144
+ pass
145
+
146
+ def dset(maps, keys, val):
147
+ if type(keys) not in (list,tuple):
148
+ keys = [keys]
149
+ for key in keys[:-1]:
150
+ if type(maps)==dict:
151
+ if key not in maps:
152
+ maps[key] = {}
153
+ else:
154
+ key = int(key)
155
+ maps = maps[key]
156
+ maps[keys[-1]] = val
157
+
158
+ pass
159
+ def dhas(maps, keys):
160
+ if type(keys) not in (list,tuple):
161
+ keys = [keys]
162
+ for key in keys:
163
+ if type(maps)==dict:
164
+ if key not in maps:
165
+ return False
166
+ else:
167
+ key = int(key)
168
+ if key>=len(maps):
169
+ return default
170
+ maps = maps[key]
171
+ return True
172
+
173
+ pass
174
+
175
+ def dget(maps, keys):
176
+ if type(keys) not in (list,tuple):
177
+ keys = [keys]
178
+ for key in keys:
179
+ find = 1
180
+ if type(maps)==dict:
181
+ find = key in maps
182
+ elif type(maps) in (list, tuple):
183
+ try:
184
+ key = int(key)
185
+ except:
186
+ key = len(maps)
187
+ find = key<len(maps)
188
+ else:
189
+ find = False
190
+ if not find:
191
+ return None,0
192
+ maps = maps[key]
193
+ return maps,1
194
+
195
+ pass
196
+ def dremove(maps, keys):
197
+ if type(keys) not in (list,tuple):
198
+ keys = [keys]
199
+ arr = []
200
+ for key in keys:
201
+ if key not in maps:
202
+ break
203
+ arr.append([maps, key])
204
+ maps = maps[key]
205
+ arr.reverse()
206
+ first=1
207
+ for maps,key in arr:
208
+ if first or len(maps[key])==0:
209
+ del maps[key]
210
+ first=0
211
+ return None
212
+
213
+ pass
214
+
215
+ def dhget(maps, keys):
216
+ if type(keys) not in (list,tuple):
217
+ keys = [keys]
218
+ for key in keys:
219
+ find = 1
220
+ if type(maps)==dict:
221
+ find = key in maps
222
+ elif type(maps) in (list, tuple):
223
+ try:
224
+ key = int(key)
225
+ except:
226
+ key = len(maps)
227
+ find = key<len(maps)
228
+ else:
229
+ find = False
230
+ if not find:
231
+ return None, find
232
+ maps = maps[key]
233
+ return maps, True
234
+
235
+ pass
236
+ def l2m(arr, **maps):
237
+ rst = {}
238
+ i = 0
239
+ for k in maps:
240
+ if i<len(arr):
241
+ val = arr[i]
242
+ else:
243
+ val = maps[k]
244
+ rst[k] = val
245
+ i+=1
246
+ return rst
247
+
248
+ pass
249
+
250
+ def deep_update(target, src, replace=1):
251
+ """
252
+ dict深层更新,src[key]是dict就深入更新,否则:
253
+ src有而target没有就替换,否则:
254
+ replace=1就替换
255
+ """
256
+ for k in src:
257
+ val = src[k]
258
+ if k not in target:
259
+ target[k] = val
260
+ continue
261
+ mval = target[k]
262
+ if type(mval) == dict and type(val)==dict:
263
+ deep_update(mval, val, replace)
264
+ else:
265
+ if replace:
266
+ target[k] = val
267
+
268
+ pass
269
+ update = deep_update
270
+ def deep_fill(src, target, replace=1):
271
+ return deep_update(target, src, replace)
272
+
273
+ pass
274
+ def deep_clone(obj):
275
+ if type(obj)==list:
276
+ rst = []
277
+ for it in obj:
278
+ rst.append(deep_clone(it))
279
+ elif type(obj)==dict:
280
+ rst = {}
281
+ for k,v in obj.items():
282
+ rst[k] = deep_clone(v)
283
+ else:
284
+ rst = obj
285
+ return rst
286
+ pass
287
+ fill=deep_fill
288
+
289
+ def maps(**kv):
290
+ return kv
291
+
292
+ pass
293
+
294
+ def flush_maps(maps, fc_key = lambda x:x.split(".") if type(x)==str else [x], visit_list=False):
295
+ if type(maps)==list:
296
+ if not visit_list:
297
+ return maps
298
+ rst = [flush_maps(it, fc_key, visit_list) for it in maps]
299
+ return rst
300
+ if type(maps)!=dict:
301
+ return maps
302
+ rst = {}
303
+ for k,v in maps.items():
304
+ ks = fc_key(k)
305
+ v = flush_maps(v, fc_key, visit_list)
306
+ sets(rst, ks, v)
307
+ return rst
308
+
309
+ pass
310
+ def unflush_maps_item(rst, keys, val, fc_key):
311
+ if type(val)!=dict:
312
+ key = fc_key(keys)
313
+ rst[key] = val
314
+ return
315
+ for k, v in val.items():
316
+ unflush_maps_item(rst, keys+[k], v, fc_key)
317
+ def unflush_maps(maps, fc_key = lambda x:".".join([str(k) for k in x]) if type(x) in (list, tuple) else str(x)):
318
+ if type(maps)!=dict:
319
+ return maps
320
+ rst = {}
321
+ for k,v in maps.items():
322
+ unflush_maps_item(rst, [k], v, fc_key)
323
+ return rst
@@ -2,7 +2,7 @@
2
2
  #author:
3
3
  from .dirz import dirs, FileDeal
4
4
  from .lsf import lists, search, searchd,searchs,_search
5
- from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs
5
+ from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs, xors, fxors, coverx, covers, fcovers
6
6
  from .fhs import fhash, fhashs
7
7
 
8
8
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -56,23 +56,37 @@ pass
56
56
 
57
57
  dirname = dirpath
58
58
 
59
- def fcover(filepath, wsize = 1024*10):
60
- st = os.stat(filepath)
61
- size = st.st_size
62
- bs = b'a'*wsize
63
- with open(filepath, 'wb') as f:
64
- for i in range(0, size, wsize):
65
- f.write(bs)
59
+ def coverx(sz, chars=None):
60
+ if chars is None:
61
+ chars = b"a"
62
+ if type(chars)==str:
63
+ chars = chars.encode("utf-8")
64
+ l = sz//len(chars)
65
+ cs = chars*l
66
+ left = sz%len(chars)
67
+ cs+=chars[:left]
68
+ return cs
69
+ def fcover(filepath, wsize = 1024*10, chars=None):
70
+ st = os.stat(filepath)
71
+ size = st.st_size
72
+ #print(f"{filepath}:{size}")
73
+ #bs = b'a'*wsize
74
+ with open(filepath, 'wb') as f:
75
+ for i in range(0, size, wsize):
76
+ sz = min(size-i, wsize)
77
+ bs = coverx(sz, chars)
78
+ #print(f"bs: {len(bs)}, sz: {sz}, i:{i}, wsize:{wsize}")
79
+ f.write(bs)
66
80
 
67
81
  pass
68
82
  cover = fcover
69
- def removes(fp, cover = False):
83
+ def removes(fp, cover = False,wsize = 1024*10,chars=None):
70
84
  if not os.path.exists(fp):
71
85
  return
72
86
  if os.path.isfile(fp):
73
87
  #print(f"remove file '{fp}'")
74
88
  if cover:
75
- fcover(fp)
89
+ fcover(fp,wsize=wsize, chars=chars)
76
90
  os.remove(fp)
77
91
  return
78
92
  fps = os.listdir(fp)
@@ -123,4 +137,36 @@ def is_abs(fp):
123
137
  return False
124
138
 
125
139
  pass
126
-
140
+
141
+ def xors(bs, codes):
142
+ if type(codes)==str:
143
+ codes = codes.encode("utf-8")
144
+ rst = b''
145
+ codes= list(codes)
146
+ for i in range(0, len(bs), len(codes)):
147
+ _bs = bs[i:i+len(codes)]
148
+ rs = bytes([a^b for a,b in zip(_bs, codes)])
149
+ rst+=rs
150
+ codes = codes[1:]+codes[:1]
151
+ return rst
152
+
153
+ def fxors(fp, codes, ofp=None):
154
+ bs = read(fp, 'rb')
155
+ bs = xors(bs, codes)
156
+ if ofp is not None:
157
+ write(bs, ofp, 'wb')
158
+ else:
159
+ return bs
160
+
161
+ pass
162
+ def covers(dp, chars=None,wsize = 1024*10,):
163
+ if not os.path.exists(dp):
164
+ return
165
+ from . import lsf
166
+ fs = lsf.search(dp)
167
+ #print(f"fs: {fs}")
168
+ for fp in fs:
169
+ fcover(fp,wsize=wsize, chars=chars)
170
+
171
+ pass
172
+ fcovers = covers
@@ -0,0 +1,6 @@
1
+ from ..base import Base, fcBase
2
+ from .. import pathz
3
+ path = pathz.Path()
4
+ path.set('local', path.dir(__file__))
5
+ path.set('conf', path.local('conf'),curr=0)
6
+
@@ -0,0 +1,14 @@
1
+ from ..base import *
2
+ basepath = path
3
+ path = pathz.Path()
4
+ path.set("conf", basepath.local("ioc/conf"), curr=0)
5
+
6
+ class Creater(Base):
7
+ def init(self):
8
+ self.mg = None
9
+ def bind(self, mg):
10
+ self.mg = mg
11
+ def call(self, *a, **b):
12
+ return None
13
+
14
+ pass
@@ -0,0 +1,14 @@
1
+ #
2
+ from buildz import Base
3
+
4
+ class Bind(Base):
5
+ def init(self):
6
+ self.mg = None
7
+ self.binds = []
8
+ def add_bind(self, fc):
9
+ self.binds.append(fc)
10
+ def bind(self, mg):
11
+ self.mg = mg
12
+ _ = [fc(mg) for fc in self.binds]
13
+
14
+ pass