buildz 0.6.45__tar.gz → 0.6.46__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. buildz-0.6.46/MANIFEST.in +3 -0
  2. {buildz-0.6.45/buildz.egg-info → buildz-0.6.46}/PKG-INFO +1 -1
  3. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/argz.py +17 -8
  4. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/build.py +11 -3
  5. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/callz.py +15 -1
  6. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/tests/conf.js +3 -3
  7. buildz-0.6.46/buildz/argz/testx.py +42 -0
  8. {buildz-0.6.45 → buildz-0.6.46}/buildz/base.py +28 -0
  9. {buildz-0.6.45 → buildz-0.6.46}/buildz/fz/__init__.py +1 -1
  10. {buildz-0.6.45 → buildz-0.6.46}/buildz/fz/fio.py +56 -10
  11. buildz-0.6.46/buildz/iocz/base.py +6 -0
  12. buildz-0.6.46/buildz/iocz/ioc/base.py +5 -0
  13. buildz-0.6.46/buildz/iocz/ioc/confs.py +5 -0
  14. buildz-0.6.46/buildz/iocz/ioc/env.py +117 -0
  15. buildz-0.6.46/buildz/iocz/ioc/ids.py +23 -0
  16. {buildz-0.6.45 → buildz-0.6.46}/buildz/pathz.py +11 -2
  17. {buildz-0.6.45 → buildz-0.6.46}/buildz/pyz.py +59 -0
  18. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/mapz.py +39 -11
  19. {buildz-0.6.45 → buildz-0.6.46/buildz.egg-info}/PKG-INFO +1 -1
  20. {buildz-0.6.45 → buildz-0.6.46}/buildz.egg-info/SOURCES.txt +8 -1
  21. buildz-0.6.46/notes/notes.txt +1 -0
  22. {buildz-0.6.45 → buildz-0.6.46}/setup.py +1 -1
  23. buildz-0.6.45/MANIFEST.in +0 -2
  24. {buildz-0.6.45 → buildz-0.6.46}/LICENSE +0 -0
  25. {buildz-0.6.45 → buildz-0.6.46}/README.md +0 -0
  26. {buildz-0.6.45 → buildz-0.6.46}/buildz/__init__.py +0 -0
  27. {buildz-0.6.45 → buildz-0.6.46}/buildz/__main__.py +0 -0
  28. {buildz-0.6.45 → buildz-0.6.46}/buildz/argx.py +0 -0
  29. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/__init__.py +0 -0
  30. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/evalx.py +0 -0
  31. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/test.py +0 -0
  32. {buildz-0.6.45 → buildz-0.6.46}/buildz/argz/test_obj.py +0 -0
  33. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/__init__.py +0 -0
  34. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/cache.py +0 -0
  35. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/config.py +0 -0
  36. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/dbs.py +0 -0
  37. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/deal.py +0 -0
  38. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/deal_list.py +0 -0
  39. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/deal_type.py +0 -0
  40. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/defs.py +0 -0
  41. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/factory.py +0 -0
  42. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/init.py +0 -0
  43. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/log.py +0 -0
  44. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/request.py +0 -0
  45. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/run.py +0 -0
  46. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/save.py +0 -0
  47. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/cache/cache.js +0 -0
  48. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/config/base.js +0 -0
  49. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/config/config.js +0 -0
  50. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/data/fp.js +0 -0
  51. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/data/item1.js +0 -0
  52. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/data/item2.js +0 -0
  53. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/res/data/test.js +0 -0
  54. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/test.py +0 -0
  55. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/test/xtest.py +0 -0
  56. {buildz-0.6.45 → buildz-0.6.46}/buildz/auto/verify.py +0 -0
  57. {buildz-0.6.45 → buildz-0.6.46}/buildz/cachez/__init__.py +0 -0
  58. {buildz-0.6.45 → buildz-0.6.46}/buildz/cachez/cache.py +0 -0
  59. {buildz-0.6.45 → buildz-0.6.46}/buildz/cmd.py +0 -0
  60. {buildz-0.6.45 → buildz-0.6.46}/buildz/confz.py +0 -0
  61. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/__init__.py +0 -0
  62. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/__main__.py +0 -0
  63. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/__init__.py +0 -0
  64. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/basez.py +0 -0
  65. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/clickhousez.py +0 -0
  66. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/lib/readme +0 -0
  67. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/mysqlz.py +0 -0
  68. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/oraclez.py +0 -0
  69. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/orm.py +0 -0
  70. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/postgresqlz.py +0 -0
  71. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/sqlite3z.py +0 -0
  72. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/dv/structz.py +0 -0
  73. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/install.txt +0 -0
  74. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/run.conf +0 -0
  75. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/runz.py +0 -0
  76. {buildz-0.6.45 → buildz-0.6.46}/buildz/db/tls.py +0 -0
  77. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/ioc/deal.py +0 -0
  78. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/ioc/help.py +0 -0
  79. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/myers/deal.py +0 -0
  80. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/myers/help.py +0 -0
  81. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/conf/ioc.js +0 -0
  82. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/conf/main.js +0 -0
  83. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/conf/myers.js +0 -0
  84. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/conf/search.js +0 -0
  85. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/conf/xf.js +0 -0
  86. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/help/default.js +0 -0
  87. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/help/ioc.js +0 -0
  88. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/help/myers.js +0 -0
  89. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/help/search.js +0 -0
  90. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/help/xf.js +0 -0
  91. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/res/test.js +0 -0
  92. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/search/deal.py +0 -0
  93. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/search/help.py +0 -0
  94. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/test.py +0 -0
  95. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/xf/deal.py +0 -0
  96. {buildz-0.6.45 → buildz-0.6.46}/buildz/demo/xf/help.py +0 -0
  97. {buildz-0.6.45 → buildz-0.6.46}/buildz/evalz/__init__.py +0 -0
  98. {buildz-0.6.45 → buildz-0.6.46}/buildz/evalz/evalz.py +0 -0
  99. {buildz-0.6.45 → buildz-0.6.46}/buildz/evalz/res/default.js +0 -0
  100. {buildz-0.6.45 → buildz-0.6.46}/buildz/evalz/test.py +0 -0
  101. {buildz-0.6.45 → buildz-0.6.46}/buildz/fz/dirz.py +0 -0
  102. {buildz-0.6.45 → buildz-0.6.46}/buildz/fz/fhs.py +0 -0
  103. {buildz-0.6.45 → buildz-0.6.46}/buildz/fz/lsf.py +0 -0
  104. {buildz-0.6.45 → buildz-0.6.46}/buildz/html/__init__.py +0 -0
  105. {buildz-0.6.45 → buildz-0.6.46}/buildz/html/test/demo.html +0 -0
  106. {buildz-0.6.45 → buildz-0.6.46}/buildz/html/test/test.py +0 -0
  107. {buildz-0.6.45 → buildz-0.6.46}/buildz/html/xml.py +0 -0
  108. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/__init__.py +0 -0
  109. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/base.py +0 -0
  110. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/init.py +0 -0
  111. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/base.py +0 -0
  112. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/conf.py +0 -0
  113. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/confs.py +0 -0
  114. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/decorator.py +0 -0
  115. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/loads.py +0 -0
  116. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc/single.py +0 -0
  117. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/base.py +0 -0
  118. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/branch.py +0 -0
  119. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/call.py +0 -0
  120. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/calls.py +0 -0
  121. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  122. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  123. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  124. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  125. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  126. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  127. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  128. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  129. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  130. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  131. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  132. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  133. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  134. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  135. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  136. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  137. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  138. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  139. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  140. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  141. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  142. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  143. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  144. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  145. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  146. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/deal.py +0 -0
  147. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/demo.py +0 -0
  148. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/env.py +0 -0
  149. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/init.py +0 -0
  150. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/ioc.py +0 -0
  151. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/iocf.py +0 -0
  152. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/join.py +0 -0
  153. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/list.py +0 -0
  154. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/map.py +0 -0
  155. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/mcall.py +0 -0
  156. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/obj.py +0 -0
  157. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/ovar.py +0 -0
  158. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/ref.py +0 -0
  159. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/refs.py +0 -0
  160. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/val.py +0 -0
  161. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/var.py +0 -0
  162. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/ioc_deal/xfile.py +0 -0
  163. {buildz-0.6.45 → buildz-0.6.46}/buildz/ioc/wrap.py +0 -0
  164. {buildz-0.6.45 → buildz-0.6.46}/buildz/logz.py +0 -0
  165. {buildz-0.6.45 → buildz-0.6.46}/buildz/tools.py +0 -0
  166. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/__init__.py +0 -0
  167. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/myers_diff.py +0 -0
  168. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/test_xfind.py +0 -0
  169. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/time/__init__.py +0 -0
  170. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/time/timez.py +0 -0
  171. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/__init__.py +0 -0
  172. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/base.py +0 -0
  173. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/getch.py +0 -0
  174. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/lx.py +0 -0
  175. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/test.py +0 -0
  176. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/tio/win.py +0 -0
  177. {buildz-0.6.45 → buildz-0.6.46}/buildz/tz/xfind.py +0 -0
  178. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/__init__.py +0 -0
  179. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/__main__.py +0 -0
  180. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/base.py +0 -0
  181. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/code.py +0 -0
  182. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/code_modify.py +0 -0
  183. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/copy_old.py +0 -0
  184. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/file.py +0 -0
  185. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/base.py +0 -0
  186. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/buffer.py +0 -0
  187. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/listz.py +0 -0
  188. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/lr.py +0 -0
  189. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/lrval.py +0 -0
  190. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/mapz.py +0 -0
  191. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/nextz.py +0 -0
  192. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/reval.py +0 -0
  193. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/setz.py +0 -0
  194. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/spc.py +0 -0
  195. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/spt.py +0 -0
  196. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/deal/strz.py +0 -0
  197. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/exp.py +0 -0
  198. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/item.py +0 -0
  199. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/mg.py +0 -0
  200. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loader/pos.py +0 -0
  201. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/base.py +0 -0
  202. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/buffer.py +0 -0
  203. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/listmapz.py +0 -0
  204. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/listz.py +0 -0
  205. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/lr.py +0 -0
  206. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/lrval.py +0 -0
  207. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/mapz.py +0 -0
  208. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/nextz.py +0 -0
  209. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/reval.py +0 -0
  210. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/setz.py +0 -0
  211. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/spc.py +0 -0
  212. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/spt.py +0 -0
  213. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz.py +0 -0
  214. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  215. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  216. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/exp.py +0 -0
  217. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/item.py +0 -0
  218. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/mg.py +0 -0
  219. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/pos.py +0 -0
  220. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/test.py +0 -0
  221. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz/test1.py +0 -0
  222. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/base.py +0 -0
  223. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/buffer.py +0 -0
  224. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/listmapz.py +0 -0
  225. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/listz.py +0 -0
  226. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/lr.py +0 -0
  227. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/lrval.py +0 -0
  228. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/mapz.py +0 -0
  229. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/nextz.py +0 -0
  230. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/reval.py +0 -0
  231. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/setz.py +0 -0
  232. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/spc.py +0 -0
  233. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/spt.py +0 -0
  234. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz.py +0 -0
  235. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz_new.py +0 -0
  236. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/deal/strz_old.py +0 -0
  237. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/exp.py +0 -0
  238. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/item.py +0 -0
  239. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/mg.py +0 -0
  240. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/pos.py +0 -0
  241. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/test.py +0 -0
  242. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/loaderz_nexp/test1.py +0 -0
  243. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/read.py +0 -0
  244. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/readz.py +0 -0
  245. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/readz_nexp.py +0 -0
  246. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/stack.py +0 -0
  247. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/write.py +0 -0
  248. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/base.py +0 -0
  249. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/conf.py +0 -0
  250. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/jsonval.py +0 -0
  251. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/listmapz.py +0 -0
  252. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/listz.py +0 -0
  253. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/mapz.py +0 -0
  254. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/reval.py +0 -0
  255. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/deal/strz.py +0 -0
  256. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/itemz.py +0 -0
  257. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writer/mg.py +0 -0
  258. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/base.py +0 -0
  259. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/conf.py +0 -0
  260. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/jsonval.py +0 -0
  261. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/listmapz.py +0 -0
  262. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/listz.py +0 -0
  263. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/mapz.py +0 -0
  264. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/reval.py +0 -0
  265. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/deal/strz.py +0 -0
  266. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/itemz.py +0 -0
  267. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/mg.py +0 -0
  268. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/test.py +0 -0
  269. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writerz/testx.py +0 -0
  270. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/writez.py +0 -0
  271. {buildz-0.6.45 → buildz-0.6.46}/buildz/xf/xargs.py +0 -0
  272. {buildz-0.6.45 → buildz-0.6.46}/buildz/xz/__init__.py +0 -0
  273. {buildz-0.6.45 → buildz-0.6.46}/buildz/xz/conf.js +0 -0
  274. {buildz-0.6.45 → buildz-0.6.46}/buildz/xz/data.js +0 -0
  275. {buildz-0.6.45 → buildz-0.6.46}/buildz/xz/test.py +0 -0
  276. {buildz-0.6.45 → buildz-0.6.46}/buildz/xz/trs.py +0 -0
  277. {buildz-0.6.45 → buildz-0.6.46}/buildz.egg-info/dependency_links.txt +0 -0
  278. {buildz-0.6.45 → buildz-0.6.46}/buildz.egg-info/top_level.txt +0 -0
  279. {buildz-0.6.45 → buildz-0.6.46}/setup.cfg +0 -0
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ recursive-include buildz *
3
+ recursive-include notes *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.45
3
+ Version: 0.6.46
4
4
  Summary: 配置读写(基于json格式进行简化)、ioc、以及其他工具代码。a json-base file format's read and write code by python, and codes to read and product object from configure file in such format(ioc), and other tool codes
5
5
  Home-page: https://github.com/buildCodeZ/buildz
6
6
  Author: Zzz
@@ -103,12 +103,18 @@ class ArgItem(Base):
103
103
  find = False
104
104
  for key, vtype in self.trs:
105
105
  if vtype =="dict":
106
- if key in maps:
107
- val = maps[key]
106
+ if xf.dhas(maps, key):
107
+ val = xf.dget(maps, key)
108
108
  if self.remove:
109
- del maps[key]
110
- find = True
109
+ xf.dremove(maps, key)
110
+ find=True
111
111
  break
112
+ #if key in maps:
113
+ # val = maps[key]
114
+ # if self.remove:
115
+ # del maps[key]
116
+ # find = True
117
+ # break
112
118
  else:
113
119
  if key in set_args:
114
120
  val = args[key]
@@ -123,7 +129,8 @@ class ArgItem(Base):
123
129
  if not find and self.need:
124
130
  raise ArgExp("need", set(self.trs), self.des)
125
131
  if self.vtype == 'dict':
126
- rst_maps[self.key] = val
132
+ xf.dset(rst_maps, self.key, val)
133
+ #rst_maps[self.key] = val
127
134
  else:
128
135
  rst_args[self.key] = val
129
136
 
@@ -135,9 +142,11 @@ class ArgItemBuild(build.Build):
135
142
  value = xf.g(conf, value=None)
136
143
  des = xf.g(conf, des=None)
137
144
  remove = xf.g(conf, remove=True)
138
- src = conf['src']
139
- if type(src) not in (list, tuple):
140
- src = [src]
145
+ src = xf.g(conf, src=None)
146
+ srcs = xf.g(conf, srcs = [])
147
+ if src is not None:
148
+ srcs.append(src)
149
+ src = srcs
141
150
  item = ArgItem(key, vtype, need, default, value, des, remove)
142
151
  for s in src:
143
152
  if type(s) not in (list, tuple):
@@ -1,5 +1,5 @@
1
1
  #
2
- from buildz import Base, xf
2
+ from buildz import Base, xf,pyz
3
3
  class Build(Base):
4
4
  def init(self, *binds):
5
5
  self.builder = None
@@ -11,10 +11,11 @@ class Build(Base):
11
11
  def call(self, conf):
12
12
  assert 0, 'not impl'
13
13
  class Builder(Base):
14
- def init(self, fc = None, key_id = "id"):
14
+ def init(self, fc = None, key_id = "id", default_key = "main"):
15
15
  self.vars = {}
16
16
  self.confs = {}
17
17
  self.key_id = key_id
18
+ self.df_key = default_key
18
19
  self.set_fc(fc)
19
20
  def set_fc(self, fc):
20
21
  fc.bind(self)
@@ -34,6 +35,12 @@ class Builder(Base):
34
35
  conf = self.confs[key]
35
36
  return self.fc(conf)
36
37
  def conf(self, data):
38
+ if type(data) == dict:
39
+ tp = xf.g(data, type=None)
40
+ if tp is not None and type(tp) not in (list, tuple, dict):
41
+ if self.key_id not in data:
42
+ data[self.key_id] = self.df_key
43
+ data = [data]
37
44
  if type(data) in (list, tuple):
38
45
  rst = {}
39
46
  for it in data:
@@ -44,5 +51,6 @@ class Builder(Base):
44
51
  data = rst
45
52
  self.confs = data
46
53
  return self
47
- def call(self, data, key="main"):
54
+ def call(self, data, key=None):
55
+ key = pyz.nnull(key, self.df_key)
48
56
  return self.conf(data).get_conf(key)
@@ -14,6 +14,9 @@ class Fc(Base):
14
14
  if isinstance(fc, Fc):
15
15
  return fc
16
16
  return Fc(fc)
17
+ class RetFc(Fc):
18
+ def call(self, args, maps):
19
+ return args, maps
17
20
  class ArgsCall(Fc):
18
21
  def init(self, fc, args=None, name = None):
19
22
  fc=self.make(fc)
@@ -88,23 +91,34 @@ class FcBuild(build.Build):
88
91
  src = xf.g(conf, src = None)
89
92
  fc = self.builder.get_var(src)
90
93
  return Fc(fc)
94
+ class RetBuild(build.Build):
95
+ def call(self, conf):
96
+ ctype = xf.g(conf, type=None)
97
+ if ctype != "ret":
98
+ return None
99
+ return RetFc()
91
100
  class CallBuild(build.Build):
92
101
  def init(self):
93
102
  self.args = argz.ArrArgsBuild()
94
103
  self.eval = evalx.EvalBuild()
95
104
  self.fc = FcBuild()
96
105
  self.calls = CallsBuild()
106
+ self.ret = RetBuild()
97
107
  super().init(self.args, self.eval, self.fc, self.calls)
98
108
  def call(self, conf):
99
109
  args = self.args(conf)
100
110
  judges = self.eval(conf)
101
111
  fc = self.fc(conf)
102
112
  calls = self.calls(conf)
113
+ ret = self.ret(conf)
103
114
  bfc = fc is None
104
115
  bcls = calls is None
105
- assert (bfc+bcls)==1
116
+ bret = ret is None
117
+ assert (bfc+bcls+bret)==2
106
118
  if fc is None:
107
119
  fc = calls
120
+ if fc is None:
121
+ fc = ret
108
122
  if args is not None:
109
123
  fc = ArgsCall(fc, args)
110
124
  if judges is not None:
@@ -22,10 +22,10 @@
22
22
  }
23
23
  maps: {
24
24
  filepath: {
25
- src: [f, fp, filepath]
25
+ srcs: [f, fp, filepath]
26
26
  }
27
27
  content: {
28
- src: [c, ct, content]
28
+ srcs: [c, ct, content]
29
29
  }
30
30
  }
31
- }
31
+ }
@@ -0,0 +1,42 @@
1
+ from buildz import argz,xf,Base,evalz,pathz
2
+ import sys,os
3
+
4
+ path = pathz.Path()
5
+ path.set("res", path(path.dir(__file__), "tests"))
6
+ conf = xf.loadf(path.res("conf.js"))
7
+ conf=xf.loads(r"""
8
+ type=ret
9
+ maps={
10
+ spt: {
11
+ src: [(env, spt), d]
12
+ default: 1
13
+ value: '.'
14
+ }
15
+ eglobal: {
16
+ src: [(env, global), d]
17
+ default:1
18
+ value: true
19
+ }
20
+ }
21
+ """)
22
+
23
+ mg = argz.CallBuilder()
24
+ fc = mg(conf)
25
+
26
+ data = xf.loads(r"""
27
+ args=[]
28
+ maps={
29
+ env: {
30
+ spt: x
31
+ }
32
+ }
33
+ """)
34
+ args = xf.g(data, args=[])
35
+ maps = xf.g(data, maps={})
36
+
37
+ rst = fc(args, maps)
38
+ print(f"rst: {rst}")
39
+ '''
40
+ python -m buildz.argz.testx
41
+ python -m buildz.argz.test search /d/rootz f=asf c=test
42
+ '''
@@ -1,5 +1,33 @@
1
1
  #coding=utf-8
2
2
  from . import pyz
3
+ def fcBase(cls, lst=0, keys = tuple()):
4
+ class _Base(cls):
5
+ def str(self):
6
+ return str(self.__class__)
7
+ def repr(self):
8
+ return self.str()
9
+ def __str__(self):
10
+ return self.str()
11
+ def __repr__(self):
12
+ return self.repr()
13
+ def __call__(self, *a, **b):
14
+ return self.call(*a, **b)
15
+ def call(self, *a, **b):
16
+ return None
17
+ def init(self, *a, **b):
18
+ pass
19
+ def __init__(self, *a, **b):
20
+ sa = a[:lst]
21
+ a = a[lst:]
22
+ sb = {}
23
+ for k in keys:
24
+ if k in b:
25
+ sb[k] = b[k]
26
+ del b[k]
27
+ super().__init__(*sa, **sb)
28
+ self.init(*a, **b)
29
+ return _Base
30
+
3
31
  class Base:
4
32
  def str(self):
5
33
  return str(self.__class__)
@@ -2,7 +2,7 @@
2
2
  #author:
3
3
  from .dirz import dirs, FileDeal
4
4
  from .lsf import lists, search, searchd,searchs,_search
5
- from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs
5
+ from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs, xors, fxors, coverx, covers, fcovers
6
6
  from .fhs import fhash, fhashs
7
7
 
8
8
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -56,23 +56,37 @@ pass
56
56
 
57
57
  dirname = dirpath
58
58
 
59
- def fcover(filepath, wsize = 1024*10):
60
- st = os.stat(filepath)
61
- size = st.st_size
62
- bs = b'a'*wsize
63
- with open(filepath, 'wb') as f:
64
- for i in range(0, size, wsize):
65
- f.write(bs)
59
+ def coverx(sz, chars=None):
60
+ if chars is None:
61
+ chars = b"a"
62
+ if type(chars)==str:
63
+ chars = chars.encode("utf-8")
64
+ l = sz//len(chars)
65
+ cs = chars*l
66
+ left = sz%len(chars)
67
+ cs+=chars[:left]
68
+ return cs
69
+ def fcover(filepath, wsize = 1024*10, chars=None):
70
+ st = os.stat(filepath)
71
+ size = st.st_size
72
+ #print(f"{filepath}:{size}")
73
+ #bs = b'a'*wsize
74
+ with open(filepath, 'wb') as f:
75
+ for i in range(0, size, wsize):
76
+ sz = min(size-i, wsize)
77
+ bs = coverx(sz, chars)
78
+ #print(f"bs: {len(bs)}, sz: {sz}, i:{i}, wsize:{wsize}")
79
+ f.write(bs)
66
80
 
67
81
  pass
68
82
  cover = fcover
69
- def removes(fp, cover = False):
83
+ def removes(fp, cover = False,wsize = 1024*10,chars=None):
70
84
  if not os.path.exists(fp):
71
85
  return
72
86
  if os.path.isfile(fp):
73
87
  #print(f"remove file '{fp}'")
74
88
  if cover:
75
- fcover(fp)
89
+ fcover(fp,wsize=wsize, chars=chars)
76
90
  os.remove(fp)
77
91
  return
78
92
  fps = os.listdir(fp)
@@ -123,4 +137,36 @@ def is_abs(fp):
123
137
  return False
124
138
 
125
139
  pass
126
-
140
+
141
+ def xors(bs, codes):
142
+ if type(codes)==str:
143
+ codes = codes.encode("utf-8")
144
+ rst = b''
145
+ codes= list(codes)
146
+ for i in range(0, len(bs), len(codes)):
147
+ _bs = bs[i:i+len(codes)]
148
+ rs = bytes([a^b for a,b in zip(_bs, codes)])
149
+ rst+=rs
150
+ codes = codes[1:]+codes[:1]
151
+ return rst
152
+
153
+ def fxors(fp, codes, ofp=None):
154
+ bs = read(fp, 'rb')
155
+ bs = xors(bs, codes)
156
+ if ofp is not None:
157
+ write(bs, ofp, 'wb')
158
+ else:
159
+ return bs
160
+
161
+ pass
162
+ def covers(dp, chars=None,wsize = 1024*10,):
163
+ if not os.path.exists(dp):
164
+ return
165
+ from . import lsf
166
+ fs = lsf.search(dp)
167
+ #print(f"fs: {fs}")
168
+ for fp in fs:
169
+ fcover(fp,wsize=wsize, chars=chars)
170
+
171
+ pass
172
+ fcovers = covers
@@ -0,0 +1,6 @@
1
+ from ..base import Base, fcBase
2
+ from .. import pathz
3
+ path = pathz.Path()
4
+ path.set('local', path.dir(__file__))
5
+ path.set('conf', path.local('conf'),curr=0)
6
+
@@ -0,0 +1,5 @@
1
+ from ..base import *
2
+ basepath = path
3
+ path = pathz.Path()
4
+ path.set("conf", basepath.local("ioc/conf"), curr=0)
5
+
@@ -0,0 +1,5 @@
1
+ from .ids import Ids
2
+ from .base import Base
3
+ class Confs(Base):
4
+ '''
5
+ '''
@@ -0,0 +1,117 @@
1
+ from .base import Base, fcBase
2
+ from buildz import xf,pyz
3
+ class EnvExp(Exception):
4
+ def __init__(self, id):
5
+ super().__init__(f"EnvExp id not found: '{id}'")
6
+ class BuildEnv(Base):
7
+ """
8
+ 3种从环境获取参数的方式:
9
+ 从系统环境获取
10
+ 从命令行输入参数获取
11
+ 从本对象环境数据获取
12
+ 2种设置环境参数方式:
13
+ 设置到系统环境
14
+ 设置到本对象环境数据
15
+ """
16
+ def init(self, conf):
17
+ self.conf = conf
18
+ self.builds = {
19
+ }
20
+ def build_args(self):
21
+ pass
22
+ def build_conf(self, ids, flush, flush_list, exp, default):
23
+ return Env(ids, None, flush, flush_list, exp, default)
24
+ def deal(self, mg, args, spt, eglobal, orders, from_args, flush, flush_list, exp, default):
25
+ envs = []
26
+ env = None
27
+ ids = ids.Ids(spt)
28
+ if 'conf' not in orders:
29
+ orders.append('conf')
30
+ for order in orders:
31
+ _env = self.builds[order](ids, flush, flush_list, exp, default)
32
+ if order == 'conf':
33
+ env = _env
34
+ envs.append(_env)
35
+ env = Envs(envs, env)
36
+ return env
37
+ def call(self, mg, conf, args):
38
+ args, maps = self.conf([], conf)
39
+ return self.deal(mg, args, **maps)
40
+
41
+ pass
42
+ class Env(Base):
43
+ def _get(self, id):
44
+ return xf.dhget(self.maps, id)
45
+ def _set(self, id, val):
46
+ return xf.dset(self.maps, id, val)
47
+ def _has(self, id):
48
+ return xf.dhas(self.maps, id)
49
+ def _del(self, id):
50
+ return xf.dremove(self.maps, id)
51
+ def _fill(self, maps):
52
+ return xf.fill(maps, self.maps)
53
+ def init(self, ids=None, maps=None, flush=True, flush_list = False):
54
+ self.flush_list = flush_list
55
+ self.ids = ids
56
+ self.flush = flush
57
+ if maps is None:
58
+ maps = {}
59
+ if flush:
60
+ maps=xf.flush_maps(maps, self.ids.ids, flush_list)
61
+ self.maps = maps
62
+ def update(self, maps, flush=None, flush_list=None):
63
+ flush = pyz.nnull(flush, self.flush)
64
+ flush_list = pyz.nnull(flush_list, self.flush_list)
65
+ if flush:
66
+ maps = xf.flush_maps(maps, self.ids.ids, flush_list)
67
+ self._fill(maps)
68
+ def has(self, id, flush=None):
69
+ flush = pyz.not_null(flush, self.flush)
70
+ full_id = id
71
+ if flush:
72
+ ids = self.ids.ids(id)
73
+ else:
74
+ ids = id
75
+ return self._has(ids)
76
+ def get(self, id, flush=None):
77
+ flush = pyz.not_null(flush, self.flush)
78
+ full_id = id
79
+ if flush:
80
+ ids = self.ids.ids(id)
81
+ else:
82
+ ids = id
83
+ return self._get(ids)
84
+ def set(self, id, val, flush=None):
85
+ flush = pyz.not_null(flush, self.flush)
86
+ if flush:
87
+ id = self.ids.ids(id)
88
+ self._set(self.maps, id, val)
89
+
90
+ class SysEnv(Env):
91
+ def _get(self, id, exp_def=None):
92
+ sysdt = os.getenv(id)
93
+ return sysdt
94
+ def _has(self, id):
95
+ dt = self._get(id)
96
+ return dt is not None
97
+ def init(self, ids):
98
+ super().init(ids, flush=False)
99
+
100
+ class Envs(Env):
101
+ def init(self, envs, env):
102
+ self.envs = envs
103
+ self.env = env
104
+ def get(self, id):
105
+ for env in self.envs:
106
+ if env.has(id):
107
+ return env.get(id)
108
+ return self.env.get(id)
109
+ def set(self, id, val, *a,**b):
110
+ return self.env.set(id, val, *a,**b)
111
+ def has(self, id):
112
+ for env in self.envs:
113
+ if env.has(id):
114
+ return True
115
+ return self.env.has(id)
116
+ def update(self, maps, *a,**b):
117
+ return self.env.update(maps,*a,**b)
@@ -0,0 +1,23 @@
1
+ from .base import Base
2
+ class Ids(Base):
3
+ '''
4
+ '''
5
+ def init(self, spt):
6
+ self.spt = spt
7
+ def id(self, *ids):
8
+ if len(ids)==0:
9
+ return None
10
+ elif len(ids)==1:
11
+ if type(ids[0]) in (list, tuple):
12
+ ids = ids[0]
13
+ return self.spt.join(ids)
14
+ def ids(self, id):
15
+ if type(id) in (list, tuple):
16
+ return id
17
+ return id.split(self.spt)
18
+ def call(self, a,b):
19
+ a = self.ids(a)
20
+ b = self.ids(b)
21
+ return self.id(a,b)
22
+ pass
23
+
@@ -5,6 +5,11 @@ class Path(Base):
5
5
  self.paths = {}
6
6
  self.fcs = {}
7
7
  self.lasts = {}
8
+ k = "check_abs"
9
+ self.check_abs = True
10
+ if k in maps:
11
+ self.check_abs = maps[k]
12
+ del maps[k]
8
13
  for k, v in maps.items():
9
14
  self.set(k, v)
10
15
  @staticmethod
@@ -19,7 +24,11 @@ class Path(Base):
19
24
  return os.path.join(*a)
20
25
  return os.path.join(path, *a)
21
26
  @staticmethod
22
- def rfp(paths, *a, last=-1):
27
+ def rfp(paths, *a, last=-1, check_abs=False):
28
+ if check_abs and len(a)>0:
29
+ f = a[0]
30
+ if f[0]=="/" or f.find(":")>0:
31
+ return Path.join(*a)
23
32
  #print(f"[TESTZ] a: {a}, paths: {paths}")
24
33
  #fp = os.path.join(*a)
25
34
  for path in paths:
@@ -42,7 +51,7 @@ class Path(Base):
42
51
  self.paths[name] = paths
43
52
  self.lasts[name] = last
44
53
  def fc(*a):
45
- return self.rfp(paths, *a, last=last)
54
+ return self.rfp(paths, *a, last=last, check_abs=self.check_abs)
46
55
  self.fcs[name] = fc
47
56
  def __getattr__(self, name):
48
57
  return self.fcs[name]
@@ -91,6 +91,12 @@ def pypkg():
91
91
  """
92
92
  return python package path, test on linux and windows
93
93
  """
94
+ try:
95
+ import buildz
96
+ import os
97
+ return os.path.dirname(buildz.__path__[0])
98
+ except:
99
+ pass
94
100
  import site
95
101
  sites = site.getsitepackages()
96
102
  if is_windows:
@@ -155,3 +161,56 @@ def mainerr(fc, *args, **maps):
155
161
  print("not main:", st.filename)
156
162
 
157
163
  pass
164
+
165
+ def not_null(*args, exp_def=None):
166
+ for v in args:
167
+ if v is not None:
168
+ return v
169
+ return ret_exp_def(exp_def)
170
+ nnull = not_null
171
+ class exp_def_enp:
172
+ def __init__(self, exp=False, default=None, exp_fc = Exception, exp_args = [], exp_maps = {}):
173
+ self.exp_fc = exp_fc
174
+ self.exp_args = exp_args
175
+ self.exp_maps=exp_maps
176
+ self.exp = exp
177
+ self.default = default
178
+ def __call__(self, exp=None, default=None, exp_fc = None, exp_args=None, exp_maps=None):
179
+ exp = not_null(exp, self.exp)
180
+ default = not_null(default, self.default)
181
+ exp_fc = not_null(exp_fc, self.exp_fc)
182
+ exp_args=not_null(exp_args, self.exp_args)
183
+ exp_maps = not_null(exp_maps, self.exp_maps)
184
+ if exp:
185
+ raise exp_fc(*exp_args, **exp_maps)
186
+ return default
187
+ pass
188
+ def default(val):
189
+ return exp_def_enp(False, val)
190
+
191
+ exp_def = exp_def_enp
192
+ def ret_exp_def(val):
193
+ if isinstance(val, exp_def_enp):
194
+ return val()
195
+ return val
196
+
197
+ def decode(s, coding = 'utf-8'):
198
+ coding = coding.lower()
199
+ xcoding = 'utf-8'
200
+ if coding == 'utf-8':
201
+ xcoding = 'gbk'
202
+ try:
203
+ return s.decode(coding)
204
+ except:
205
+ return s.decode(xcoding)
206
+
207
+ pass
208
+ def encode(bs, coding="utf-8"):
209
+ coding = coding.lower()
210
+ xcoding = 'utf-8'
211
+ if coding == 'utf-8':
212
+ xcoding = 'gbk'
213
+ try:
214
+ return bs.encode(coding)
215
+ except:
216
+ return bs.encode(xcoding)