buildz 0.6.7__tar.gz → 0.6.9__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 (167) hide show
  1. {buildz-0.6.7/buildz.egg-info → buildz-0.6.9}/PKG-INFO +1 -1
  2. {buildz-0.6.7 → buildz-0.6.9}/buildz/__init__.py +1 -1
  3. buildz-0.6.9/buildz/base.py +55 -0
  4. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc/base.py +14 -7
  5. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc/conf.py +4 -0
  6. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc/confs.py +18 -2
  7. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc/single.py +10 -4
  8. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/obj.py +13 -39
  9. {buildz-0.6.7 → buildz-0.6.9}/buildz/pyz.py +22 -0
  10. buildz-0.6.9/buildz/tools.py +3 -0
  11. {buildz-0.6.7 → buildz-0.6.9}/buildz/tz/__init__.py +1 -1
  12. buildz-0.6.9/buildz/tz/tio/__init__.py +3 -0
  13. buildz-0.6.9/buildz/tz/tio/base.py +7 -0
  14. buildz-0.6.9/buildz/tz/tio/getch.py +23 -0
  15. buildz-0.6.9/buildz/tz/tio/lx.py +38 -0
  16. buildz-0.6.9/buildz/tz/tio/test.py +12 -0
  17. buildz-0.6.9/buildz/tz/tio/win.py +8 -0
  18. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/__init__.py +1 -1
  19. buildz-0.6.9/buildz/xf/loaderz/deal/listmapz.py +63 -0
  20. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/listz.py +5 -4
  21. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/mapz.py +4 -4
  22. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/item.py +3 -2
  23. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/mg.py +5 -0
  24. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/readz.py +65 -2
  25. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/xargs.py +3 -1
  26. {buildz-0.6.7 → buildz-0.6.9/buildz.egg-info}/PKG-INFO +1 -1
  27. {buildz-0.6.7 → buildz-0.6.9}/buildz.egg-info/SOURCES.txt +8 -0
  28. {buildz-0.6.7 → buildz-0.6.9}/setup.py +1 -1
  29. buildz-0.6.7/buildz/base.py +0 -21
  30. {buildz-0.6.7 → buildz-0.6.9}/LICENSE +0 -0
  31. {buildz-0.6.7 → buildz-0.6.9}/MANIFEST.in +0 -0
  32. {buildz-0.6.7 → buildz-0.6.9}/README.md +0 -0
  33. {buildz-0.6.7 → buildz-0.6.9}/buildz/__main__.py +0 -0
  34. {buildz-0.6.7 → buildz-0.6.9}/buildz/argx.py +0 -0
  35. {buildz-0.6.7 → buildz-0.6.9}/buildz/cmd.py +0 -0
  36. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/__main__.py +0 -0
  37. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/basez.py +0 -0
  38. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/clickhousez.py +0 -0
  39. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/lib/readme +0 -0
  40. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/mysqlz.py +0 -0
  41. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/oraclez.py +0 -0
  42. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/dv/structz.py +0 -0
  43. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/install.txt +0 -0
  44. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/run.conf +0 -0
  45. {buildz-0.6.7 → buildz-0.6.9}/buildz/db/runz.py +0 -0
  46. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/ioc/deal.py +0 -0
  47. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/ioc/help.py +0 -0
  48. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/myers/deal.py +0 -0
  49. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/myers/help.py +0 -0
  50. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/conf/ioc.js +0 -0
  51. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/conf/main.js +0 -0
  52. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/conf/myers.js +0 -0
  53. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/conf/search.js +0 -0
  54. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/conf/xf.js +0 -0
  55. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/help/default.js +0 -0
  56. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/help/ioc.js +0 -0
  57. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/help/myers.js +0 -0
  58. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/help/search.js +0 -0
  59. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/help/xf.js +0 -0
  60. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/res/test.js +0 -0
  61. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/search/deal.py +0 -0
  62. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/search/help.py +0 -0
  63. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/test.py +0 -0
  64. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/xf/deal.py +0 -0
  65. {buildz-0.6.7 → buildz-0.6.9}/buildz/demo/xf/help.py +0 -0
  66. {buildz-0.6.7 → buildz-0.6.9}/buildz/fz/__init__.py +0 -0
  67. {buildz-0.6.7 → buildz-0.6.9}/buildz/fz/dirz.py +0 -0
  68. {buildz-0.6.7 → buildz-0.6.9}/buildz/fz/fhs.py +0 -0
  69. {buildz-0.6.7 → buildz-0.6.9}/buildz/fz/fio.py +0 -0
  70. {buildz-0.6.7 → buildz-0.6.9}/buildz/fz/lsf.py +0 -0
  71. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/__init__.py +0 -0
  72. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/base.py +0 -0
  73. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/init.py +0 -0
  74. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/base.py +0 -0
  75. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/call.py +0 -0
  76. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/calls.py +0 -0
  77. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  78. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  79. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  80. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  81. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  82. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  83. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  84. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  85. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
  86. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  87. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  88. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  89. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  90. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  91. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  92. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  93. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  94. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  95. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  96. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  97. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  98. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  99. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  100. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/deal.py +0 -0
  101. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/demo.py +0 -0
  102. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/env.py +0 -0
  103. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/ioc.py +0 -0
  104. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/iocf.py +0 -0
  105. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/join.py +0 -0
  106. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/list.py +0 -0
  107. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/map.py +0 -0
  108. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/mcall.py +0 -0
  109. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/ovar.py +0 -0
  110. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/ref.py +0 -0
  111. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/val.py +0 -0
  112. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/var.py +0 -0
  113. {buildz-0.6.7 → buildz-0.6.9}/buildz/ioc/ioc_deal/xfile.py +0 -0
  114. {buildz-0.6.7 → buildz-0.6.9}/buildz/tz/myers_diff.py +0 -0
  115. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/__main__.py +0 -0
  116. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/code.py +0 -0
  117. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/code_modify.py +0 -0
  118. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/copy_old.py +0 -0
  119. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/file.py +0 -0
  120. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/base.py +0 -0
  121. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/buffer.py +0 -0
  122. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/listz.py +0 -0
  123. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/lr.py +0 -0
  124. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/lrval.py +0 -0
  125. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/mapz.py +0 -0
  126. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/nextz.py +0 -0
  127. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/reval.py +0 -0
  128. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/setz.py +0 -0
  129. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/spc.py +0 -0
  130. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/spt.py +0 -0
  131. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/deal/strz.py +0 -0
  132. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/exp.py +0 -0
  133. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/item.py +0 -0
  134. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/mg.py +0 -0
  135. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loader/pos.py +0 -0
  136. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/base.py +0 -0
  137. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/buffer.py +0 -0
  138. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/lr.py +0 -0
  139. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/lrval.py +0 -0
  140. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/nextz.py +0 -0
  141. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/reval.py +0 -0
  142. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/setz.py +0 -0
  143. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/spc.py +0 -0
  144. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/spt.py +0 -0
  145. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/strz.py +0 -0
  146. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/strz_new.py +0 -0
  147. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/deal/strz_old.py +0 -0
  148. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/exp.py +0 -0
  149. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/pos.py +0 -0
  150. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/test.py +0 -0
  151. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/loaderz/test1.py +0 -0
  152. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/mapz.py +0 -0
  153. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/read.py +0 -0
  154. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/stack.py +0 -0
  155. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/write.py +0 -0
  156. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/base.py +0 -0
  157. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/conf.py +0 -0
  158. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/deal/jsonval.py +0 -0
  159. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/deal/listz.py +0 -0
  160. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/deal/mapz.py +0 -0
  161. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/deal/reval.py +0 -0
  162. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/deal/strz.py +0 -0
  163. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/itemz.py +0 -0
  164. {buildz-0.6.7 → buildz-0.6.9}/buildz/xf/writer/mg.py +0 -0
  165. {buildz-0.6.7 → buildz-0.6.9}/buildz.egg-info/dependency_links.txt +0 -0
  166. {buildz-0.6.7 → buildz-0.6.9}/buildz.egg-info/top_level.txt +0 -0
  167. {buildz-0.6.7 → buildz-0.6.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.6.7
3
+ Version: 0.6.9
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
@@ -6,4 +6,4 @@ __version__="0.4.91"
6
6
  __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
7
7
 
8
8
  from .argx import fetch as args
9
- from .base import Base
9
+ from .base import Base, WBase
@@ -0,0 +1,55 @@
1
+ #coding=utf-8
2
+ from . import pyz
3
+ class Base:
4
+ def str(self):
5
+ return str(self.__class__)
6
+ def __str__(self):
7
+ return self.str()
8
+ def __repr__(self):
9
+ return self.__str__()
10
+ def __init__(self, *args, **maps):
11
+ self.init(*args, **maps)
12
+ def __call__(self, *args, **maps):
13
+ return self.call(*args, **maps)
14
+ def init(self, *args, **maps):
15
+ pass
16
+ def call(self, *args, **maps):
17
+ return self.deal(*args, **maps)
18
+ def deal(self, *args, **maps):
19
+ return None
20
+
21
+ pass
22
+
23
+ class WBase(Base):
24
+ def _open(self):
25
+ pass
26
+ def open(self):
27
+ self._open()
28
+ return pyz.with_out(self.close, True)
29
+ def _close(self):
30
+ pass
31
+ def close(self, exc_type, exc_val, exc_tb):
32
+ self._close()
33
+
34
+ pass
35
+
36
+ class With(Base):
37
+ def init(self, args=False):
38
+ self.args = args
39
+ def call(self, cls):
40
+ def _open(obj):
41
+ pass
42
+ def open(obj):
43
+ obj._open()
44
+ return pyz.with_out(obj.close, self.args)
45
+ def _close(obj):
46
+ pass
47
+ def close(obj):
48
+ obj._close()
49
+ cls._open = _open
50
+ cls._close = _close
51
+ cls.open = open
52
+ cls.close = close
53
+ return cls
54
+
55
+ pass
@@ -30,7 +30,7 @@ class EncapeData(Base):
30
30
  包含data id对应的配置,配置文件id,配置文件对象
31
31
  [object.test, call, ]
32
32
  """
33
- def __init__(self, data, conf, local = False, type = None, src = None, info = None):
33
+ def __init__(self, data, conf=None, local = False, type = None, src = None, info = None, confs = None):
34
34
  """
35
35
  data: 配置数据
36
36
  conf: 配置数据对应的配置文件的管理器
@@ -40,10 +40,12 @@ class EncapeData(Base):
40
40
  info: 额外的调用信息,目前只有object会用到里面的id字段,作为单例额外输入
41
41
  """
42
42
  if typez(data)==dict:
43
- pid = xf.g1(data, parent=None)
43
+ pid = xf.g1(data, parent=None, template=None, temp=None)
44
44
  if pid is not None:
45
45
  data = dict(data)
46
- del data['parent']
46
+ for pkey in "parent,temp,template".split(","):
47
+ if pkey in data:
48
+ del data[pkey]
47
49
  pids = pid
48
50
  if typez(pids)!=list:
49
51
  pids = [pid]
@@ -56,16 +58,21 @@ class EncapeData(Base):
56
58
  raise IOCError("only dict can be a parent: "+pid)
57
59
  self.update_maps(data, pdt, replace=0)
58
60
  self.data = data
59
- self.sid = conf.id
61
+ if conf is not None:
62
+ self.sid = conf.id
63
+ if type is None:
64
+ type = conf.confs.get_data_type(data, 0, conf.default_type())
65
+ if confs is None:
66
+ confs = conf.confs
60
67
  self.src = src
61
68
  self.conf = conf
62
- self.confs = conf.confs
69
+ self.confs = confs
63
70
  self.local = local
64
- if type is None:
65
- type = conf.confs.get_data_type(data, 0, conf.default_type())
66
71
  self.type = type
67
72
  self.info = info
68
73
  def deal(self, remove = False):
74
+ if self.conf is None:
75
+ return self.confs.get(self, src = self.src, info=self.info, remove = remove)
69
76
  return self.conf.get(self, src = self.src, info=self.info, remove = remove)
70
77
 
71
78
 
@@ -200,6 +200,10 @@ class Conf(Base):
200
200
  if conf is None:
201
201
  raise IdNotFoundError(f"can't find conf of {id}")
202
202
  return None
203
+ if conf.conf is None:
204
+ if remove:
205
+ return None
206
+ return conf.data()
203
207
  deal = self.get_deal(conf.type)
204
208
  if deal is None:
205
209
  raise IOCError(f"can't find deal of {id}, type = {conf.type}")
@@ -53,7 +53,9 @@ class Confs(Base):
53
53
  return sysdt
54
54
  def build_env_args_xf(self):
55
55
  data = xf.args()
56
- env = data['env']
56
+ if xf.is_args(data):
57
+ data = data.maps
58
+ env = xf.g(data, env={})
57
59
  self.envs_args = env
58
60
  self.flush_env(self.envs_args)
59
61
  def build_env_args_buildz(self):
@@ -231,8 +233,15 @@ class Confs(Base):
231
233
  self.envs_args = None
232
234
  self.mark_init = False
233
235
  self.vars = {}
236
+ self.fcs = {}
234
237
  if 'args' in self.env_orders:
235
238
  self.build_env_args()
239
+ def set_fc(self, key, fc):
240
+ self.fcs[key] = fc
241
+ def get_fc(self, key):
242
+ if key not in self.fcs:
243
+ return None
244
+ return self.fcs[key]
236
245
  def get_var(self, key, i=-1):
237
246
  if not self.has_var(key):
238
247
  return None, False
@@ -368,6 +377,10 @@ class Confs(Base):
368
377
  if conf is None:
369
378
  raise IdNotFoundError(f"confs: can't find conf of {id}")
370
379
  return None
380
+ if conf.conf is None:
381
+ if remove:
382
+ return None
383
+ return conf.data()
371
384
  deal = self.get_deal(conf.type, sid)
372
385
  if deal is None:
373
386
  raise IOCError(f"confs: can't find deal of {id}, type = {conf.type}")
@@ -417,6 +430,9 @@ class Confs(Base):
417
430
  _conf = conf.get_data(id, sid==conf.id, False, src = src, info = info)
418
431
  if _conf is not None:
419
432
  return _conf
420
- return None
433
+ fc = self.get_fc(id)
434
+ if fc is None:
435
+ return None
436
+ return EncapeData(fc, confs=self)
421
437
 
422
438
  pass
@@ -41,21 +41,27 @@ class Single(Base):
41
41
  else:
42
42
  ids = [sid, 'single', id]
43
43
  return ids
44
- def get(self, edata:EncapeData):
45
- ids = self.get_ids(edata)
44
+ def get_by_ids(self, ids):
46
45
  if ids is None:
47
46
  return None
48
47
  obj = xf.gets(self.singles, ids)
49
48
  return obj
50
- def set(self, obj, edata:EncapeData):
49
+ def get(self, edata:EncapeData):
51
50
  ids = self.get_ids(edata)
51
+ return self.get_by_ids(ids)
52
+ def set_by_ids(self, ids, obj):
52
53
  if ids is None:
53
54
  return
54
55
  xf.sets(self.singles, ids, obj)
55
- def remove(self,edata:EncapeData):
56
+ def set(self, obj, edata:EncapeData):
56
57
  ids = self.get_ids(edata)
58
+ self.set_by_ids(ids, obj)
59
+ def rm_by_ids(self, idsj):
57
60
  if ids is None:
58
61
  return
59
62
  xf.removes(self.singles, ids)
63
+ def remove(self,edata:EncapeData):
64
+ ids = self.get_ids(edata)
65
+ self.rm_by_ids(ids)
60
66
 
61
67
  pass
@@ -1,5 +1,6 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData,IOCError
3
+ from ..ioc.single import Single
3
4
  from .base import FormatData,FormatDeal
4
5
  from buildz import xf, pyz
5
6
  import os
@@ -59,6 +60,7 @@ class ObjectDeal(FormatDeal):
59
60
  """
60
61
  def init(self, fp_lists = None, fp_defaults = None, fp_cst = None, fp_set = None):
61
62
  self.singles = {}
63
+ self.single = Single("single", "id", 1)
62
64
  self.sources = {}
63
65
  super().init("ObjectDeal", fp_lists, fp_defaults,
64
66
  join(dp, "conf", "obj_lists.js"),
@@ -100,28 +102,13 @@ class ObjectDeal(FormatDeal):
100
102
  icst = None
101
103
  isets = xf.g(info, sets = None)
102
104
  ivars = xf.g(info, vars=None)
103
- else:
104
- cid = None
105
+ ids = self.single.get_ids(edata)
105
106
  id = xf.g(data, id = None)
106
- single = xf.g(data, single=None)
107
- if id is None:
108
- single = 0
109
- if single is None:
110
- single = 1
111
- ids = None
112
- if single or cid is not None:
113
- if cid is not None:
114
- ids = [sid, 'local_id', id, cid]
115
- else:
116
- if icst is not None or isets is not None:
117
- raise Exception("set info.construct/info.sets while using single without info.id")
118
- ids = [sid, 'single', id]
119
107
  #print(f"obj.deal ids: {ids} for {data}")
120
- if ids is not None:
121
- obj = xf.gets(self.singles, ids)
122
- if obj is not None:
123
- #raise IOCError(f"null for {ids}")
124
- return obj
108
+ obj = self.single.get_by_ids(ids)
109
+ if obj is not None:
110
+ #raise IOCError(f"null for {ids}")
111
+ return obj
125
112
  #source = xf.g(data, source=0)
126
113
  source = xf.g1(data, source=0, src=0)
127
114
  if source == 0:
@@ -148,9 +135,11 @@ class ObjectDeal(FormatDeal):
148
135
  self.push_vars(conf, ivars)
149
136
  args = [self.get_obj(v, conf) for v in args]
150
137
  maps = {k:self.get_obj(maps[k], conf) for k in maps}
138
+ obj = self.single.get_by_ids(ids)
139
+ if obj is not None:
140
+ return obj
151
141
  obj = fc(*args, **maps)
152
- if ids is not None:
153
- xf.sets(self.singles, ids, obj)
142
+ self.single.set_by_ids(ids, obj)
154
143
  prev_call = xf.g(data, prev_call=None)
155
144
  if prev_call is not None:
156
145
  # TODO: 这边info透传不知道会不会有问题
@@ -190,23 +179,8 @@ class ObjectDeal(FormatDeal):
190
179
  info = edata.info
191
180
  conf = edata.conf
192
181
  confs = edata.confs
193
- if type(info) == dict:
194
- cid = xf.g(info, id=None)
195
- else:
196
- cid = None
197
- id = xf.g(data, id = None)
198
- single = xf.g(data, single=None)
199
- if id is None:
200
- single = 0
201
- ids = None
202
- if single or cid is not None:
203
- if single:
204
- ids = [sid, id]
205
- else:
206
- ids = [sid, id, cid]
207
- if ids is None:
208
- return None
209
- obj = xf.gets(self.singles, ids)
182
+ ids = self.single.get_ids(edata)
183
+ obj = self.single.get_by_ids(ids)
210
184
  if obj is None:
211
185
  return None
212
186
  call = xf.g(data, remove=None)
@@ -2,6 +2,8 @@
2
2
  import sys
3
3
  import os
4
4
  import hashlib
5
+ import inspect
6
+ #from .base import Base, WBase
5
7
  class With:
6
8
  def __init__(self, fc_in, fc_out, args = False):
7
9
  self.fc_in = fc_in
@@ -125,3 +127,23 @@ class Pth:
125
127
  pass
126
128
 
127
129
  _pth = Pth()
130
+ def main(name, fc, *args, **maps):
131
+ if name=="__main__":
132
+ fc(*args, **maps)
133
+
134
+ pass
135
+
136
+ def bylocals(mlocals, fc, *args, **maps):
137
+ if mlocals['__name__']=="__main__":
138
+ fc(*args, **maps)
139
+
140
+ pass
141
+
142
+ def mainerr(fc, *args, **maps):
143
+ st = inspect.stack()[1]
144
+ if st.filename == '<stdin>':
145
+ fc(*args, **maps)
146
+ else:
147
+ print("not main:", st.filename)
148
+
149
+ pass
@@ -0,0 +1,3 @@
1
+ #coding=utf-8
2
+ # from buildz.tools import *
3
+ from . import pyz,xf,fz,Base
@@ -3,7 +3,7 @@
3
3
 
4
4
  # 文件差异
5
5
  from .myers_diff import update as m_update, myers as m_steps, encode as m_encode, decode as m_decode,count as m_count
6
-
6
+ from .tio import *
7
7
  """
8
8
  工具模块
9
9
  toolz简写成tz
@@ -0,0 +1,3 @@
1
+ #coding=utf-8
2
+
3
+ from .getch import getch
@@ -0,0 +1,7 @@
1
+ #coding=utf-8
2
+ from buildz.base import Base, WBase, With
3
+ @With(False)
4
+ class Getch(Base):
5
+ pass
6
+
7
+ pass
@@ -0,0 +1,23 @@
1
+ #coding=utf-8
2
+
3
+ from buildz import pyz
4
+ getch = None
5
+ if pyz.is_windows:
6
+ from . import win
7
+ getch = win.Getch()
8
+ else:
9
+ from . import lx
10
+ getch = lx.Getch()
11
+
12
+ pass
13
+ def open():
14
+ global getch
15
+ return getch.open()
16
+
17
+ pass
18
+
19
+ def close():
20
+ global getch
21
+ getch.close()
22
+
23
+ pass
@@ -0,0 +1,38 @@
1
+ #coding=utf-8
2
+ from . import base
3
+ import termios
4
+ import sys
5
+ import ctypes
6
+ import select
7
+ std = ctypes.cdll.LoadLibrary(None)
8
+ class Getch(base.Getch):
9
+ def __init__(self, timeout =0.01, cnt = 3):
10
+ attr = termios.tcgetattr(sys.stdin.fileno())
11
+ bak = list(attr)
12
+ attr[3] = attr[3] & ~(termios.ICANON|termios.ECHO)
13
+ self.bak = bak
14
+ self.attr = attr
15
+ self.sec = timeout
16
+ self.cnt = cnt
17
+ def _open(self):
18
+ termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, self.attr)
19
+ def _close(self):
20
+ termios.tcsetattr(sys.stdin.fileno(), termios.TCSANOW, self.bak)
21
+ def call(self):
22
+ c = std.getchar()
23
+ if c==27:
24
+ next = False
25
+ # 没用
26
+ for i in range(self.cnt):
27
+ a,_b,_c = select.select([sys.stdin.fileno()], [], [], self.sec)
28
+ if len(a)>0:
29
+ next = True
30
+ break
31
+ if next:
32
+ rst = [c]
33
+ rst.append(std.getchar())
34
+ rst.append(std.getchar())
35
+ return rst
36
+ return c
37
+
38
+ pass
@@ -0,0 +1,12 @@
1
+ #coding=utf-8
2
+
3
+ from buildz.tz import getch
4
+ getch.init()
5
+ while True:
6
+ c = getch()
7
+ print(f"getch: {c}")
8
+ if c==b'q'[0]:
9
+ break
10
+
11
+ pass
12
+ getch.close()
@@ -0,0 +1,8 @@
1
+ #coding=utf-8
2
+ import ctypes
3
+ from . import base
4
+ class Getch(base.Getch):
5
+ def call(self):
6
+ return ctypes.cdll.msvcrt._getch()
7
+
8
+ pass
@@ -1,5 +1,5 @@
1
1
 
2
- from .readz import loads, load, loadf
2
+ from .readz import loads, load, loadf, loads_args, loadx, is_args
3
3
  from .write import dumps, dump, dumpf
4
4
  from .file import *
5
5
  from .mapz import *
@@ -0,0 +1,63 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ from buildz import Base
6
+ class Args(Base):
7
+ def str(self):
8
+ return f"<Args args={self.args}, maps={self.maps}>"
9
+ def init(self, args, maps):
10
+ self.args = args
11
+ self.maps = maps
12
+
13
+ pass
14
+ class ListMapDeal(lr.LRDeal):
15
+ """
16
+ 分隔符,有分隔符后将缓存的数据当作字符串
17
+ """
18
+ def init(self, left, right, as_map = False):
19
+ super().init(left, right, "listmap")
20
+ self.as_map = as_map
21
+ def types(self):
22
+ return ['list']
23
+ def build(self, obj):
24
+ # if self.check_right(obj):
25
+ # return None
26
+ val = obj.val
27
+ if len(val)==0:
28
+ obj.val = []
29
+ obj.is_val = 1
30
+ return obj
31
+ return self.build_arr(val)
32
+ def build_arr(self, arr):
33
+ rst = {}
34
+ lst = []
35
+ mp = {}
36
+ i = 0
37
+ while i<len(arr):
38
+ obj = arr[i]
39
+ opt = None
40
+ if i+1<len(arr):
41
+ opt = arr[i+1]
42
+ if opt is not None and opt.type == 'kv':
43
+ if i+2>=len(arr):
44
+ raise Exception(f"u f in listmap: {arr}")
45
+ val = arr[i+2]
46
+ mp[obj.val]=val.val
47
+ i+=3
48
+ else:
49
+ lst.append(obj.val)
50
+ i+=1
51
+ if len(mp)==0:
52
+ if self.as_map:
53
+ if len(lst)==0:
54
+ return item.Item(mp, type="map", is_val=1)
55
+ else:
56
+ return item.Item(Args(lst, mp), type='args', is_val=1)
57
+ return item.Item(lst, type="list", is_val=1)
58
+ elif len(lst)==0:
59
+ return item.Item(mp, type="map", is_val=1)
60
+ else:
61
+ return item.Item(Args(lst, mp), type='args', is_val=1)
62
+
63
+ pass
@@ -9,13 +9,14 @@ class ListDeal(lr.LRDeal):
9
9
  def init(self, left, right):
10
10
  super().init(left, right, 'list')
11
11
  def types(self):
12
- return ['str','list']
12
+ return ['list']
13
13
  def build(self, obj):
14
- if self.check_right(obj):
15
- return None
14
+ #print(f"list build: {obj}")
15
+ #if self.check_right(obj):
16
+ # return None
16
17
  val = obj.val
17
18
  if len(val)==0:
18
- obj.val = ''
19
+ obj.val = []
19
20
  obj.is_val = 1
20
21
  return obj
21
22
  if len(val)>1:
@@ -9,13 +9,13 @@ class MapDeal(lr.LRDeal):
9
9
  def init(self, left, right):
10
10
  super().init(left, right, "map")
11
11
  def types(self):
12
- return ['list','str']
12
+ return ['list']
13
13
  def build(self, obj):
14
- if self.check_right(obj):
15
- return None
14
+ #if self.check_right(obj):
15
+ # return None
16
16
  val = obj.val
17
17
  if len(val)==0:
18
- obj.val = ''
18
+ obj.val = {}
19
19
  obj.is_val = 1
20
20
  return obj
21
21
  if len(val)%3!=0:
@@ -7,13 +7,14 @@ remain和type?
7
7
  '''
8
8
  class Item:
9
9
  def __str__(self):
10
- return f"<Item val={self.val}, type = {self.type}, is_val = {self.is_val}>"
10
+ return f"<Item val={self.val}, type = {self.type}, is_val = {self.is_val}, others={self.others}>"
11
11
  def __repr__(self):
12
12
  return str(self)
13
- def __init__(self, val, type = None, is_val=False):
13
+ def __init__(self, val, type = None, is_val=False, others = None):
14
14
  self.val= val
15
15
  self.is_val= is_val
16
16
  self.type = type
17
+ self.others=others
17
18
 
18
19
  pass
19
20
  class NoneItem:
@@ -97,13 +97,18 @@ class Manager:
97
97
  # if len(k.strip())==0:
98
98
  # continue
99
99
  # rst.append(k)
100
+ #print(f"mg arr: {arr}")
100
101
  arr = self.build_arr(arr)
102
+ #print(f"mg arr: {arr}")
101
103
  obj = item.Item(arr, type = "list", is_val = 0)
102
104
  obj = self.build(obj)
103
105
  #arr = rst
104
106
  #if len(arr)==1:
105
107
  # arr = arr[0]
106
108
  val = obj.val
109
+ #print(f"mg val:{val}")
110
+ if type(val) in [list,map] and len(val)==0:
111
+ val = ""
107
112
  if type(val)==list and len(val)==1:
108
113
  val = val[0]
109
114
  return val