buildz 0.6.42__tar.gz → 0.6.43__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 (271) hide show
  1. {buildz-0.6.42/buildz.egg-info → buildz-0.6.43}/PKG-INFO +3 -1
  2. {buildz-0.6.42 → buildz-0.6.43}/README.md +2 -0
  3. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/time/timez.py +7 -2
  4. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/__init__.py +1 -1
  5. buildz-0.6.43/buildz/xf/base.py +28 -0
  6. buildz-0.6.43/buildz/xf/loaderz/base.py +40 -0
  7. buildz-0.6.43/buildz/xf/loaderz/buffer.py +165 -0
  8. buildz-0.6.43/buildz/xf/loaderz/deal/listmapz.py +58 -0
  9. buildz-0.6.43/buildz/xf/loaderz/deal/listz.py +33 -0
  10. buildz-0.6.43/buildz/xf/loaderz/deal/lr.py +70 -0
  11. buildz-0.6.43/buildz/xf/loaderz/deal/lrval.py +43 -0
  12. buildz-0.6.43/buildz/xf/loaderz/deal/mapz.py +43 -0
  13. buildz-0.6.43/buildz/xf/loaderz/deal/nextz.py +26 -0
  14. buildz-0.6.43/buildz/xf/loaderz/deal/reval.py +33 -0
  15. buildz-0.6.43/buildz/xf/loaderz/deal/spt.py +40 -0
  16. buildz-0.6.43/buildz/xf/loaderz/deal/strz.py +109 -0
  17. buildz-0.6.43/buildz/xf/loaderz/exp.py +26 -0
  18. buildz-0.6.43/buildz/xf/loaderz/item.py +70 -0
  19. buildz-0.6.43/buildz/xf/loaderz/mg.py +123 -0
  20. buildz-0.6.43/buildz/xf/loaderz/test.py +112 -0
  21. buildz-0.6.43/buildz/xf/loaderz/test1.py +11 -0
  22. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/listmapz.py +1 -27
  23. buildz-0.6.43/buildz/xf/loaderz_nexp/deal/setz.py +15 -0
  24. buildz-0.6.43/buildz/xf/loaderz_nexp/deal/spc.py +20 -0
  25. buildz-0.6.43/buildz/xf/loaderz_nexp/deal/strz_new.py +284 -0
  26. buildz-0.6.43/buildz/xf/loaderz_nexp/deal/strz_old.py +197 -0
  27. buildz-0.6.43/buildz/xf/loaderz_nexp/pos.py +51 -0
  28. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/test.py +11 -5
  29. buildz-0.6.43/buildz/xf/readz_nexp.py +179 -0
  30. buildz-0.6.43/buildz/xf/writerz/base.py +58 -0
  31. buildz-0.6.43/buildz/xf/writerz/conf.py +56 -0
  32. buildz-0.6.43/buildz/xf/writerz/deal/jsonval.py +16 -0
  33. buildz-0.6.43/buildz/xf/writerz/deal/listmapz.py +53 -0
  34. buildz-0.6.43/buildz/xf/writerz/deal/listz.py +31 -0
  35. buildz-0.6.43/buildz/xf/writerz/deal/mapz.py +39 -0
  36. buildz-0.6.43/buildz/xf/writerz/deal/reval.py +20 -0
  37. buildz-0.6.43/buildz/xf/writerz/deal/strz.py +49 -0
  38. buildz-0.6.43/buildz/xf/writerz/itemz.py +50 -0
  39. buildz-0.6.43/buildz/xf/writerz/mg.py +37 -0
  40. buildz-0.6.43/buildz/xf/writerz/test.py +71 -0
  41. buildz-0.6.43/buildz/xf/writerz/testx.py +44 -0
  42. buildz-0.6.43/buildz/xf/writez.py +68 -0
  43. {buildz-0.6.42 → buildz-0.6.43/buildz.egg-info}/PKG-INFO +3 -1
  44. {buildz-0.6.42 → buildz-0.6.43}/buildz.egg-info/SOURCES.txt +36 -0
  45. {buildz-0.6.42 → buildz-0.6.43}/setup.py +1 -1
  46. {buildz-0.6.42 → buildz-0.6.43}/LICENSE +0 -0
  47. {buildz-0.6.42 → buildz-0.6.43}/MANIFEST.in +0 -0
  48. {buildz-0.6.42 → buildz-0.6.43}/buildz/__init__.py +0 -0
  49. {buildz-0.6.42 → buildz-0.6.43}/buildz/__main__.py +0 -0
  50. {buildz-0.6.42 → buildz-0.6.43}/buildz/argx.py +0 -0
  51. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/__init__.py +0 -0
  52. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/argz.py +0 -0
  53. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/build.py +0 -0
  54. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/callz.py +0 -0
  55. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/evalx.py +0 -0
  56. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/test.py +0 -0
  57. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/test_obj.py +0 -0
  58. {buildz-0.6.42 → buildz-0.6.43}/buildz/argz/tests/conf.js +0 -0
  59. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/__init__.py +0 -0
  60. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/cache.py +0 -0
  61. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/config.py +0 -0
  62. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/dbs.py +0 -0
  63. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/deal.py +0 -0
  64. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/deal_list.py +0 -0
  65. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/deal_type.py +0 -0
  66. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/defs.py +0 -0
  67. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/factory.py +0 -0
  68. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/init.py +0 -0
  69. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/log.py +0 -0
  70. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/request.py +0 -0
  71. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/run.py +0 -0
  72. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/save.py +0 -0
  73. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/cache/cache.js +0 -0
  74. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/config/base.js +0 -0
  75. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/config/config.js +0 -0
  76. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/data/fp.js +0 -0
  77. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/data/item1.js +0 -0
  78. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/data/item2.js +0 -0
  79. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/res/data/test.js +0 -0
  80. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/test.py +0 -0
  81. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/test/xtest.py +0 -0
  82. {buildz-0.6.42 → buildz-0.6.43}/buildz/auto/verify.py +0 -0
  83. {buildz-0.6.42 → buildz-0.6.43}/buildz/base.py +0 -0
  84. {buildz-0.6.42 → buildz-0.6.43}/buildz/cachez/__init__.py +0 -0
  85. {buildz-0.6.42 → buildz-0.6.43}/buildz/cachez/cache.py +0 -0
  86. {buildz-0.6.42 → buildz-0.6.43}/buildz/cmd.py +0 -0
  87. {buildz-0.6.42 → buildz-0.6.43}/buildz/confz.py +0 -0
  88. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/__init__.py +0 -0
  89. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/__main__.py +0 -0
  90. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/__init__.py +0 -0
  91. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/basez.py +0 -0
  92. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/clickhousez.py +0 -0
  93. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/lib/readme +0 -0
  94. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/mysqlz.py +0 -0
  95. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/oraclez.py +0 -0
  96. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/orm.py +0 -0
  97. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/postgresqlz.py +0 -0
  98. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/sqlite3z.py +0 -0
  99. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/dv/structz.py +0 -0
  100. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/install.txt +0 -0
  101. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/run.conf +0 -0
  102. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/runz.py +0 -0
  103. {buildz-0.6.42 → buildz-0.6.43}/buildz/db/tls.py +0 -0
  104. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/ioc/deal.py +0 -0
  105. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/ioc/help.py +0 -0
  106. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/myers/deal.py +0 -0
  107. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/myers/help.py +0 -0
  108. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/conf/ioc.js +0 -0
  109. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/conf/main.js +0 -0
  110. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/conf/myers.js +0 -0
  111. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/conf/search.js +0 -0
  112. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/conf/xf.js +0 -0
  113. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/help/default.js +0 -0
  114. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/help/ioc.js +0 -0
  115. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/help/myers.js +0 -0
  116. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/help/search.js +0 -0
  117. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/help/xf.js +0 -0
  118. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/res/test.js +0 -0
  119. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/search/deal.py +0 -0
  120. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/search/help.py +0 -0
  121. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/test.py +0 -0
  122. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/xf/deal.py +0 -0
  123. {buildz-0.6.42 → buildz-0.6.43}/buildz/demo/xf/help.py +0 -0
  124. {buildz-0.6.42 → buildz-0.6.43}/buildz/evalz/__init__.py +0 -0
  125. {buildz-0.6.42 → buildz-0.6.43}/buildz/evalz/evalz.py +0 -0
  126. {buildz-0.6.42 → buildz-0.6.43}/buildz/evalz/res/default.js +0 -0
  127. {buildz-0.6.42 → buildz-0.6.43}/buildz/evalz/test.py +0 -0
  128. {buildz-0.6.42 → buildz-0.6.43}/buildz/fz/__init__.py +0 -0
  129. {buildz-0.6.42 → buildz-0.6.43}/buildz/fz/dirz.py +0 -0
  130. {buildz-0.6.42 → buildz-0.6.43}/buildz/fz/fhs.py +0 -0
  131. {buildz-0.6.42 → buildz-0.6.43}/buildz/fz/fio.py +0 -0
  132. {buildz-0.6.42 → buildz-0.6.43}/buildz/fz/lsf.py +0 -0
  133. {buildz-0.6.42 → buildz-0.6.43}/buildz/html/__init__.py +0 -0
  134. {buildz-0.6.42 → buildz-0.6.43}/buildz/html/test/demo.html +0 -0
  135. {buildz-0.6.42 → buildz-0.6.43}/buildz/html/test/test.py +0 -0
  136. {buildz-0.6.42 → buildz-0.6.43}/buildz/html/xml.py +0 -0
  137. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/__init__.py +0 -0
  138. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/base.py +0 -0
  139. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/init.py +0 -0
  140. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/base.py +0 -0
  141. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/conf.py +0 -0
  142. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/confs.py +0 -0
  143. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/decorator.py +0 -0
  144. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/loads.py +0 -0
  145. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc/single.py +0 -0
  146. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/base.py +0 -0
  147. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/branch.py +0 -0
  148. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/call.py +0 -0
  149. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/calls.py +0 -0
  150. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
  151. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  152. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  153. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  154. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  155. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  156. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  157. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  158. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  159. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  160. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  161. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  162. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  163. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  164. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  165. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  166. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  167. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  168. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  169. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  170. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  171. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
  172. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  173. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  174. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  175. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/deal.py +0 -0
  176. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/demo.py +0 -0
  177. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/env.py +0 -0
  178. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/init.py +0 -0
  179. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/ioc.py +0 -0
  180. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/iocf.py +0 -0
  181. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/join.py +0 -0
  182. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/list.py +0 -0
  183. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/map.py +0 -0
  184. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/mcall.py +0 -0
  185. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/obj.py +0 -0
  186. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/ovar.py +0 -0
  187. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/ref.py +0 -0
  188. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/refs.py +0 -0
  189. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/val.py +0 -0
  190. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/var.py +0 -0
  191. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/ioc_deal/xfile.py +0 -0
  192. {buildz-0.6.42 → buildz-0.6.43}/buildz/ioc/wrap.py +0 -0
  193. {buildz-0.6.42 → buildz-0.6.43}/buildz/logz.py +0 -0
  194. {buildz-0.6.42 → buildz-0.6.43}/buildz/pathz.py +0 -0
  195. {buildz-0.6.42 → buildz-0.6.43}/buildz/pyz.py +0 -0
  196. {buildz-0.6.42 → buildz-0.6.43}/buildz/tools.py +0 -0
  197. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/__init__.py +0 -0
  198. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/myers_diff.py +0 -0
  199. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/test_xfind.py +0 -0
  200. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/time/__init__.py +0 -0
  201. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/__init__.py +0 -0
  202. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/base.py +0 -0
  203. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/getch.py +0 -0
  204. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/lx.py +0 -0
  205. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/test.py +0 -0
  206. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/tio/win.py +0 -0
  207. {buildz-0.6.42 → buildz-0.6.43}/buildz/tz/xfind.py +0 -0
  208. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/__main__.py +0 -0
  209. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/code.py +0 -0
  210. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/code_modify.py +0 -0
  211. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/copy_old.py +0 -0
  212. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/file.py +0 -0
  213. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/base.py +0 -0
  214. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/buffer.py +0 -0
  215. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/listz.py +0 -0
  216. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/lr.py +0 -0
  217. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/lrval.py +0 -0
  218. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/mapz.py +0 -0
  219. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/nextz.py +0 -0
  220. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/reval.py +0 -0
  221. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/setz.py +0 -0
  222. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/spc.py +0 -0
  223. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/spt.py +0 -0
  224. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/deal/strz.py +0 -0
  225. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/exp.py +0 -0
  226. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/item.py +0 -0
  227. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/mg.py +0 -0
  228. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loader/pos.py +0 -0
  229. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loaderz/deal/setz.py +0 -0
  230. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loaderz/deal/spc.py +0 -0
  231. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  232. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  233. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/loaderz/pos.py +0 -0
  234. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/base.py +0 -0
  235. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/buffer.py +0 -0
  236. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/listz.py +0 -0
  237. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/lr.py +0 -0
  238. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/lrval.py +0 -0
  239. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/mapz.py +0 -0
  240. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/nextz.py +0 -0
  241. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/reval.py +0 -0
  242. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/spt.py +0 -0
  243. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/deal/strz.py +0 -0
  244. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/exp.py +0 -0
  245. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/item.py +0 -0
  246. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/mg.py +0 -0
  247. {buildz-0.6.42/buildz/xf/loaderz → buildz-0.6.43/buildz/xf/loaderz_nexp}/test1.py +0 -0
  248. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/mapz.py +0 -0
  249. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/read.py +0 -0
  250. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/readz.py +0 -0
  251. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/stack.py +0 -0
  252. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/write.py +0 -0
  253. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/base.py +0 -0
  254. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/conf.py +0 -0
  255. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/jsonval.py +0 -0
  256. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/listmapz.py +0 -0
  257. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/listz.py +0 -0
  258. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/mapz.py +0 -0
  259. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/reval.py +0 -0
  260. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/deal/strz.py +0 -0
  261. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/itemz.py +0 -0
  262. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/writer/mg.py +0 -0
  263. {buildz-0.6.42 → buildz-0.6.43}/buildz/xf/xargs.py +0 -0
  264. {buildz-0.6.42 → buildz-0.6.43}/buildz/xz/__init__.py +0 -0
  265. {buildz-0.6.42 → buildz-0.6.43}/buildz/xz/conf.js +0 -0
  266. {buildz-0.6.42 → buildz-0.6.43}/buildz/xz/data.js +0 -0
  267. {buildz-0.6.42 → buildz-0.6.43}/buildz/xz/test.py +0 -0
  268. {buildz-0.6.42 → buildz-0.6.43}/buildz/xz/trs.py +0 -0
  269. {buildz-0.6.42 → buildz-0.6.43}/buildz.egg-info/dependency_links.txt +0 -0
  270. {buildz-0.6.42 → buildz-0.6.43}/buildz.egg-info/top_level.txt +0 -0
  271. {buildz-0.6.42 → buildz-0.6.43}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.42
3
+ Version: 0.6.43
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
@@ -38,6 +38,8 @@ Codes of this project are not allowed to be used for AI training or any other fo
38
38
  运行python -m buildz查看帮助
39
39
 
40
40
  持续更新中。。。
41
+ 2025/01/21:
42
+ 修改xf的读写,读加上报错字符串位置,写改成递归调用减少时间开销
41
43
  2025/01/17:
42
44
  加了argz模块和evalz模块
43
45
  argz模块用于命令行参数匹配
@@ -25,6 +25,8 @@ Codes of this project are not allowed to be used for AI training or any other fo
25
25
  运行python -m buildz查看帮助
26
26
 
27
27
  持续更新中。。。
28
+ 2025/01/21:
29
+ 修改xf的读写,读加上报错字符串位置,写改成递归调用减少时间开销
28
30
  2025/01/17:
29
31
  加了argz模块和evalz模块
30
32
  argz模块用于命令行参数匹配
@@ -4,17 +4,22 @@ from ...logz import FpLog
4
4
  class Clock(Base):
5
5
  def default(self, cost, fc, rst, *a, **b):
6
6
  print(f"cost {cost} sec on {fc}")
7
- def init(self, fc=None):
7
+ def init(self, fc=None, out_sec = False, show = True):
8
8
  if fc is None:
9
9
  fc = self.default
10
10
  self.fc = fc
11
+ self.show = show
12
+ self.out_sec = out_sec
11
13
  def call(self, fc):
12
14
  curr = time.time()
13
15
  def tfc(*a,**b):
14
16
  curr = time.time()
15
17
  rst = fc(*a,**b)
16
18
  cost = time.time()-curr
17
- self.fc(cost, fc, rst, *a, **b)
19
+ if self.show:
20
+ self.fc(cost, fc, rst, *a, **b)
21
+ if self.out_sec:
22
+ rst = [rst, cost]
18
23
  return rst
19
24
  return tfc
20
25
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  from .readz import loads, load, loadf, loads_args, loadx, is_args, loadxf
3
- from .write import dumps, dump, dumpf, dumpx, dumpxf
3
+ from .writez import dumps, dump, dumpf, dumpx, dumpxf
4
4
  from .file import *
5
5
  from .mapz import *
6
6
  from .xargs import fetch as args
@@ -0,0 +1,28 @@
1
+
2
+ from buildz import Base
3
+ class Args(Base):
4
+ def str(self):
5
+ return f"<Args args={self.args}, maps={self.maps}>"
6
+ @property
7
+ def lists(self):
8
+ return self.args
9
+ @lists.setter
10
+ def lists(self, val):
11
+ self.args=val
12
+ @lists.deleter
13
+ def lists(self):
14
+ del self.args
15
+ @property
16
+ def dicts(self):
17
+ return self.maps
18
+ @dicts.setter
19
+ def dicts(self, val):
20
+ self.maps=val
21
+ @dicts.deleter
22
+ def dicts(self):
23
+ del self.maps
24
+ def init(self, args, maps):
25
+ self.args = args
26
+ self.maps = maps
27
+
28
+ pass
@@ -0,0 +1,40 @@
1
+
2
+ def arr_pos(arr):
3
+ if len(arr)==0:
4
+ return (0,0)
5
+ return (arr[0].pos[0], arr[-1].pos[-1])
6
+ class BaseDeal:
7
+ def arr_pos(self, arr):
8
+ return arr_pos(arr)
9
+ def has_prev(self):
10
+ return 1
11
+ def has_deal(self):
12
+ return 1
13
+ def labels(self):
14
+ return []
15
+ def types(self):
16
+ return []
17
+ def prepare(self, msg):
18
+ pass
19
+ def regist(self, mgs):
20
+ if self._id is None:
21
+ self._id = mgs.regist()
22
+ self.prepare(mgs)
23
+ def id(self):
24
+ return self._id
25
+ def __str__(self):
26
+ return "BaseDeal"
27
+ def __repr__(self):
28
+ return str(self)
29
+ def __init__(self, *argv, **maps):
30
+ self._id = None
31
+ self.init(*argv, **maps)
32
+ def init(self, *argv, **maps):
33
+ pass
34
+ def deal(self, buffer, rst, mg):
35
+ pass
36
+ def build(self):
37
+ pass
38
+
39
+ pass
40
+
@@ -0,0 +1,165 @@
1
+
2
+ class BufferInput:
3
+ def __init__(self, buf):
4
+ self.buf = buf
5
+ def __call__(self, size=1):
6
+ s = self.buf[:size]
7
+ self.buf = self.buf[size:]
8
+ return s
9
+
10
+ pass
11
+ """
12
+ Buffer:
13
+ 缓存操作:
14
+ //add:从数据中获取字符串并直接放入缓存,返回空
15
+ get: 从缓存获取字符串
16
+ rget: 从缓存获取字符串,从右往左拿
17
+ size: 缓存大小
18
+ clean: 清空缓存
19
+ full:获取缓存完整字符串
20
+ read_cache: 从数据中获取字符串并直接放入缓存,返回获取的字符串
21
+ 操作数据
22
+ read: 从数据中获取字符串
23
+ clean2read:清空缓存和数据中所有读取过的字符串
24
+ pos: 返回缓存索引,数据读取索引
25
+ """
26
+ class BufferBase:
27
+ def pos2str(self, pos):
28
+ assert 0
29
+ def init(self):
30
+ self.buffer_base =0
31
+ self.read_base=0
32
+ def pos(self):
33
+ return self.buffer_base, self.buffer_base+self.size()
34
+ def offsets(self):
35
+ return self.buffer_base, self.read_base
36
+ def read_cache(self, size=1):
37
+ assert 0
38
+ def read(self, size=1):
39
+ assert 0
40
+ def clean2read(self, size=1):
41
+ return self.clean(size)
42
+ def clean(self, read_size=0):
43
+ assert 0
44
+ def size(self):
45
+ assert 0
46
+ def full(self):
47
+ assert 0
48
+ def rget(self, size=1):
49
+ assert 0
50
+ def get(self, size=1):
51
+ assert 0
52
+ class Buffer(BufferBase):
53
+ def pos2str(self, pos):
54
+ return "read from file"
55
+ def read_cache(self, size = 1):
56
+ s = self.read(size)
57
+ self.buffer+=s
58
+ self.s_read = self.s_read[len(s):]
59
+ return s
60
+ def read(self, size = 1):
61
+ if self.s_read is None:
62
+ self.s_read = self.input(1)
63
+ self.read_base+=1
64
+ l = len(self.s_read)
65
+ if l<size:
66
+ self.s_read += self.input(size-l)
67
+ self.read_base+=size-l
68
+ rst = self.s_read[:size]
69
+ if self.buffer is None:
70
+ self.buffer = self.s_read[:0]
71
+ return rst
72
+ def init(self):
73
+ super().init()
74
+ self.buffer = None
75
+ self.s_read = None
76
+ def __init__(self, input):
77
+ self.input = input
78
+ self.init()
79
+ def add(self, size):
80
+ if self.buffer is None:
81
+ self.buffer = self.s_read[:size]
82
+ else:
83
+ self.buffer += self.s_read[:size]
84
+ def size(self):
85
+ if self.buffer is None:
86
+ return 0
87
+ return len(self.buffer)
88
+ def full(self, size = 0, right = 1):
89
+ return self.buffer
90
+ def clean2read(self, read_size=1):
91
+ if read_size>0:
92
+ self.s_read = self.s_read[read_size:]
93
+ self.buffer = self.buffer[:0]
94
+ self.buffer_base=self.read_base
95
+ def clean(self, read_size = 0):
96
+ if read_size>0:
97
+ self.s_read = self.s_read[read_size:]
98
+ self.buffer = self.buffer[:0]
99
+ self.buffer_base=self.read_base
100
+ def rget(self, size=1):
101
+ return self.buffer[-size:]
102
+ def get(self, size=1):
103
+ return self.buffer[:size]
104
+
105
+ pass
106
+
107
+ def decode(s, coding = 'utf-8'):
108
+ coding = coding.lower()
109
+ xcoding = 'utf-8'
110
+ if coding == 'utf-8':
111
+ xcoding = 'gbk'
112
+ try:
113
+ return s.decode(coding)
114
+ except:
115
+ return s.decode(xcoding)
116
+
117
+ pass
118
+ class StrBuffer(BufferBase):
119
+ def pos2str(self, pos):
120
+ s = self.str[pos[0]:pos[1]+1]
121
+ return s
122
+ def read_cache(self, size = 1):
123
+ s = self.read(size)
124
+ l = len(s)
125
+ self.buffer_size+=l
126
+ self.read_base+=l
127
+ return s
128
+ def read(self, size = 1):
129
+ s = self.str[self.read_base:self.read_base+size]
130
+ if type(s)==bytes:
131
+ s = decode(s)
132
+ return s
133
+ def init(self):
134
+ super().init()
135
+ self.buffer_size = 0
136
+ def __init__(self, s):
137
+ self.str = s
138
+ self.init()
139
+ def add(self, size):
140
+ # x = self.str[self.buffer_base+self.buffer_size:self.buffer_base+self.buffer_size+len(arr)]
141
+ # if x!=arr:
142
+ # print(f"[ERROR] x:({x}), arr:({arr}), bb: {self.buffer_base}, bs:{self.buffer_size}, rb: {self.read_base}")
143
+ # print("[["+self.str[self.buffer_base:self.read_base+10]+"]]")
144
+ # raise Exception("")
145
+ self.buffer_size+=size
146
+ def size(self):
147
+ return self.buffer_size
148
+ def full(self):
149
+ return self.str[self.buffer_base:self.buffer_base+self.buffer_size]
150
+ def clean2read(self, read_size=1):
151
+ self.read_base+=read_size
152
+ self.buffer_base = self.read_base
153
+ self.buffer_size = 0
154
+ def clean(self, read_size = 0):
155
+ self.read_base+=read_size
156
+ self.buffer_base = self.read_base
157
+ self.buffer_size = 0
158
+ def rget(self, size=1):
159
+ size = min(size, self.buffer_size)
160
+ return self.str[self.buffer_base+self.buffer_size-size:self.buffer_base+self.buffer_size]
161
+ def get(self, size=1):
162
+ size = min(size, self.buffer_size)
163
+ return self.str[self.buffer_base:self.buffer_base+size]
164
+
165
+ pass
@@ -0,0 +1,58 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ from ...base import Args
6
+ class ListMapDeal(lr.LRDeal):
7
+ """
8
+ 分隔符,有分隔符后将缓存的数据当作字符串
9
+ """
10
+ def init(self, left, right, as_map = False, as_args=False):
11
+ super().init(left, right, "listmap")
12
+ self.as_map = as_map
13
+ self.as_args = as_args
14
+ def types(self):
15
+ return ['list']
16
+ def build(self, obj):
17
+ # if self.check_right(obj):
18
+ # return None
19
+ val = obj.val
20
+ if len(val)==0:
21
+ obj.val = []
22
+ obj.is_val = 1
23
+ return obj
24
+ return self.build_arr(val, obj.pos)
25
+ def build_arr(self, arr, arr_pos):
26
+ rst = {}
27
+ lst = []
28
+ mp = {}
29
+ i = 0
30
+ while i<len(arr):
31
+ obj = arr[i]
32
+ opt = None
33
+ if i+1<len(arr):
34
+ opt = arr[i+1]
35
+ if opt is not None and opt.type == 'kv':
36
+ if i+2>=len(arr):
37
+ raise exp.Exp(f"u f in listmap: {arr}", arr_pos)
38
+ val = arr[i+2]
39
+ mp[obj.val]=val.val
40
+ i+=3
41
+ else:
42
+ lst.append(obj.val)
43
+ i+=1
44
+ if self.as_args:
45
+ return item.Item(Args(lst, mp), arr_pos, type='args', is_val=1)
46
+ if len(mp)==0:
47
+ if self.as_map:
48
+ if len(lst)==0:
49
+ return item.Item(mp, arr_pos, type="map", is_val=1)
50
+ else:
51
+ return item.Item(Args(lst, mp), arr_pos, type='args', is_val=1)
52
+ return item.Item(lst, arr_pos, type="list", is_val=1)
53
+ elif len(lst)==0:
54
+ return item.Item(mp, arr_pos, type="map", is_val=1)
55
+ else:
56
+ return item.Item(Args(lst, mp), arr_pos, type='args', is_val=1)
57
+
58
+ pass
@@ -0,0 +1,33 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ class ListDeal(lr.LRDeal):
6
+ """
7
+ 分隔符,有分隔符后将缓存的数据当作字符串
8
+ """
9
+ def init(self, left, right):
10
+ super().init(left, right, 'list')
11
+ def types(self):
12
+ return ['list']
13
+ def build(self, obj):
14
+ val = obj.val
15
+ if len(val)==0:
16
+ obj.val = []
17
+ obj.is_val = 1
18
+ return obj
19
+ if len(val)>1:
20
+ opt = val[1]
21
+ if opt.type=='kv':
22
+ return None
23
+ return self.build_arr(val, obj.pos)
24
+ def build_arr(self, arr, arr_pos):
25
+ rst = []
26
+ #pos = self.arr_pos(arr)#(arr[0].pos[0],arr[-1].pos[-1])
27
+ for _item in arr:
28
+ if not _item.is_val:
29
+ raise exp.Exp(f"error in list: item is not val: {_item}", _item.pos)
30
+ rst.append(_item.val)
31
+ return item.Item(rst, arr_pos, type='list', is_val = 1)
32
+
33
+ pass
@@ -0,0 +1,70 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ class LRDeal(base.BaseDeal):
5
+ def labels(self):
6
+ return [self.left]
7
+ def types(self):
8
+ return []
9
+ def deal(self, buffer, rst, mg):
10
+ cl = buffer.read(self.ll)
11
+ if self.left!=cl:
12
+ return False
13
+ _arr = []
14
+ rm = buffer.full().strip()
15
+ rm_pos = buffer.pos()
16
+ buffer.clean2read(self.ll)
17
+ if len(rm)>0:
18
+ _arr.append(item.Item(rm, rm_pos, type="str", is_val=False))
19
+ arr_pos = list(rm_pos)
20
+ while True:
21
+ cr = buffer.read(self.lr)
22
+ if cr == self.right:
23
+ rm = buffer.full().strip()
24
+ rm_pos = buffer.pos()
25
+ buffer.clean2read(self.lr)
26
+ break
27
+ if not mg.deal(buffer, _arr):
28
+ e_pos = buffer.pos()
29
+ raise exp.Exp("Error lr", e_pos)
30
+ buffer.clean()
31
+ arr_pos[1] = rm_pos[1]
32
+ arr_pos = tuple(arr_pos)
33
+ if len(rm)>0:
34
+ _arr.append(item.Item(rm , rm_pos, type = 'str', is_val=False))
35
+ if self.mg_build:
36
+ dts = mg.build_arr(_arr)
37
+ else:
38
+ dts = _arr
39
+ obj = self.build_arr(dts, arr_pos)
40
+ rst.append(obj)
41
+ return True
42
+ def to_vals(self, _arr, mg):
43
+ dts = []
44
+ for k in _arr:
45
+ _k = mg.build(k)
46
+ if item.is_null(_k):
47
+ continue
48
+ dts.append(_k)
49
+ return dts
50
+ def build_arr(self, obj, arr_pos):
51
+ return item.Item(obj, arr_pos, type = self.type, is_val=True)
52
+ """
53
+ 分隔符,有分隔符后将缓存的数据当作字符串
54
+ """
55
+ def prepare(self, mg):
56
+ self.left = mg.like(self.left)
57
+ self.right = mg.like(self.right)
58
+ self.ll = len(self.left)
59
+ self.lr = len(self.right)
60
+ def init(self, left, right, name= "lr", mg_build = True):
61
+ self.left = left
62
+ self.right = right
63
+ self.ll = len(left)
64
+ self.lr = len(right)
65
+ self.name = name
66
+ self.mg_build = mg_build
67
+ def err(self, s):
68
+ return s.replace("<lr>", self.name)
69
+
70
+ pass
@@ -0,0 +1,43 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ from . import reval
6
+ class Fcs:
7
+ def __init__(self):
8
+ self.maps = {}
9
+ def set(self, _type, fc):
10
+ self.maps[_type] = fc
11
+ def __call__(self, val, _type):
12
+ if _type not in self.maps:
13
+ raise Exception("unreginize type:"+_type)
14
+ return self.maps[_type](val)
15
+
16
+ pass
17
+
18
+
19
+ class LRValDeal(lr.LRDeal):
20
+ """
21
+ """
22
+ def init(self, left, right, fc):
23
+ super().init(left, right, 'lrval', False)
24
+ self.fc = fc
25
+ def build_arr(self, arr, arr_pos):
26
+ rst = []
27
+ #pos = self.arr_pos(arr)#(arr[0].pos[0], arr[-1].pos[-1])
28
+ if len(arr)!=3:
29
+ raise exp.Exp(f"error in lrval:{arr}", arr_pos)
30
+ for _item in arr[::2]:
31
+ if type(_item.val)!=str:
32
+ raise exp.Exp(f"error in list:{_item}", _item.pos)
33
+ rst.append(_item.val)
34
+ try:
35
+ val = self.fc(rst[0], rst[1])
36
+ except Exception as exp1:
37
+ print("exp:", exp1)
38
+ raise exp.Exp(f"error in lrval fc: {self.fc}({rst}): {exp1} ", pos)
39
+ return item.Item(val, arr_pos, type='val', is_val = 1)
40
+ def build_arrx(self, arr, arr_pos):
41
+ return self.build(obj)
42
+
43
+ pass
@@ -0,0 +1,43 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ class MapDeal(lr.LRDeal):
6
+ """
7
+ 分隔符,有分隔符后将缓存的数据当作字符串
8
+ """
9
+ def init(self, left, right):
10
+ super().init(left, right, "map")
11
+ def types(self):
12
+ return ['list']
13
+ def build(self, obj):
14
+ #if self.check_right(obj):
15
+ # return None
16
+ val = obj.val
17
+ if len(val)==0:
18
+ obj.val = {}
19
+ obj.is_val = 1
20
+ return obj
21
+ if len(val)%3!=0:
22
+ return None
23
+ opt = val[1]
24
+ if opt.type!='kv':
25
+ return None
26
+ return self.build_arr(val, obj.pos)
27
+ def build_arr(self, arr, arr_pos):
28
+ rst = {}
29
+ #pos = self.arr_pos(arr)#(arr[0].pos[0], arr[-1].pos[-1])
30
+ if len(arr)%3!=0:
31
+ raise exp.Exp(f"u f in map: {arr}", arr_pos)
32
+ for i in range(0, len(arr), 3):
33
+ k = arr[i]
34
+ v = arr[i+2]
35
+ opt = arr[i+1]
36
+ if opt.type != "kv":
37
+ raise exp.Exp(f"u f opt in map: {opt}", opt.pos)
38
+ if type(k.val)==list:
39
+ k.val = tuple(k.val)
40
+ rst[k.val] = v.val
41
+ return item.Item(rst, arr_pos, type='map', is_val = 1)
42
+
43
+ pass
@@ -0,0 +1,26 @@
1
+ from .. import base
2
+ from .. import item
3
+
4
+ class PrevNextDeal(base.BaseDeal):
5
+ def labels(self):
6
+ return ['']
7
+ #def types(self):
8
+ # return [""]
9
+ """
10
+ 读取下一个字符放缓存里,应放最低优先级
11
+ """
12
+ def deal(self, buffer, arr, mg):
13
+ c = buffer.read_cache(1)
14
+ if len(c)==0:
15
+ rm = buffer.full().strip()
16
+ pos = buffer.pos()
17
+ buffer.clean()
18
+ if len(rm)==0:
19
+ return False
20
+ obj = item.Item(rm, pos, type = 'str', is_val = 0)
21
+ arr.append(obj)
22
+ # TODO return True?
23
+ return False
24
+ return True
25
+
26
+ pass
@@ -0,0 +1,33 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ import re
6
+ class ValDeal(base.BaseDeal):
7
+ def prepare(self,mg):
8
+ self.pt = mg.like(self.pt)
9
+ self.type = mg.type
10
+ def types(self):
11
+ return ["str"]
12
+ """
13
+ 正则表达式匹配
14
+ """
15
+ def init(self, pt, fc):
16
+ st = "^"
17
+ ed = "$"
18
+ if pt[0]!=st:
19
+ pt = st+pt
20
+ if pt[-1]!=ed:
21
+ pt = pt+ed
22
+ self.pt = pt
23
+ self.fc = fc
24
+ def build(self, obj):
25
+ val = obj.val
26
+ if type(val) != self.type:
27
+ return None
28
+ if re.match(self.pt, val) is None:
29
+ return None
30
+ val = self.fc(val)
31
+ return item.Item(val, obj.pos, type = "val", is_val = 1)
32
+
33
+ pass
@@ -0,0 +1,40 @@
1
+ from .. import base
2
+ from .. import item
3
+
4
+ class PrevSptDeal(base.BaseDeal):
5
+ def labels(self):
6
+ return [self.spt]
7
+ def types(self):
8
+ return [self.type]
9
+ def build(self, obj):
10
+ return item.null
11
+ def prepare(self, mgs):
12
+ self.spt = mgs.like(self.spt)
13
+ self.l = len(self.spt)
14
+ def deal(self, buffer, arr, mg):
15
+ c = buffer.read(self.l)
16
+ if c != self.spt:
17
+ return False
18
+ spt_pos = (buffer.read_base, buffer.read_base+self.l)
19
+ rm = buffer.full().strip()
20
+ rm_pos = buffer.pos()
21
+ buffer.clean2read(self.l)
22
+ it = item.Item(self.spt, spt_pos, type = self.type, is_val = 0)
23
+ if len(rm)==0:
24
+ if not self.allow_empty or (len(arr)>0 and arr[-1].is_val):
25
+ arr.append(it)
26
+ return True
27
+ obj = item.Item(rm, rm_pos, type = 'str', is_val = 0)
28
+ arr.append(obj)
29
+ arr.append(it)
30
+ return True
31
+ """
32
+ 分隔符,有分隔符后将缓存的数据当作字符串
33
+ """
34
+ def init(self, spt, allow_empty = False, type = "spt"):
35
+ self.spt = spt
36
+ self.allow_empty = allow_empty
37
+ self.l = len(spt)
38
+ self.type = type
39
+
40
+ pass