buildz 0.6.11__tar.gz → 0.6.13__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.
- {buildz-0.6.11/buildz.egg-info → buildz-0.6.13}/PKG-INFO +6 -1
- {buildz-0.6.11 → buildz-0.6.13}/README.md +5 -0
- buildz-0.6.13/buildz/auto/__init__.py +1 -0
- buildz-0.6.13/buildz/auto/cache.py +91 -0
- buildz-0.6.13/buildz/auto/config.py +34 -0
- buildz-0.6.13/buildz/auto/deal.py +40 -0
- buildz-0.6.13/buildz/auto/deal_type.py +34 -0
- buildz-0.6.13/buildz/auto/factory.py +28 -0
- buildz-0.6.13/buildz/auto/init.py +12 -0
- buildz-0.6.13/buildz/auto/log.py +37 -0
- buildz-0.6.13/buildz/auto/run.py +24 -0
- buildz-0.6.13/buildz/auto/save.py +33 -0
- buildz-0.6.13/buildz/auto/test/cache.js +10 -0
- buildz-0.6.13/buildz/auto/test/config.js +9 -0
- buildz-0.6.13/buildz/auto/test/item1.js +16 -0
- buildz-0.6.13/buildz/auto/test/test.js +26 -0
- buildz-0.6.13/buildz/auto/test/test.py +24 -0
- buildz-0.6.13/buildz/auto/verify.py +78 -0
- buildz-0.6.13/buildz/html/__init__.py +1 -0
- buildz-0.6.13/buildz/html/test/test.py +15 -0
- buildz-0.6.13/buildz/html/xml.py +167 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/base.py +2 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/init.py +4 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc/confs.py +22 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc/decorator.py +14 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc/single.py +3 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/base.py +4 -3
- buildz-0.6.13/buildz/ioc/ioc_deal/init.py +4 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/obj.py +2 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/ref.py +3 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/var.py +17 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/wrap.py +8 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/pyz.py +2 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/mapz.py +30 -5
- {buildz-0.6.11 → buildz-0.6.13/buildz.egg-info}/PKG-INFO +6 -1
- {buildz-0.6.11 → buildz-0.6.13}/buildz.egg-info/SOURCES.txt +19 -0
- {buildz-0.6.11 → buildz-0.6.13}/setup.py +1 -1
- buildz-0.6.11/buildz/ioc/ioc_deal/init.py +0 -3
- {buildz-0.6.11 → buildz-0.6.13}/LICENSE +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/MANIFEST.in +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/__main__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/argx.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/cmd.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/__main__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/basez.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/install.txt +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/run.conf +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/db/runz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/test.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/fz/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/fz/fio.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc/conf.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/refs.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tools.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/code.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/file.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/read.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/readz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/stack.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/write.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.11 → buildz-0.6.13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: buildz
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.13
|
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
|
@@ -31,6 +31,11 @@ License-File: LICENSE
|
|
31
31
|
运行python -m buildz查看帮助
|
32
32
|
|
33
33
|
持续更新中。。。
|
34
|
+
2024/09/25:
|
35
|
+
修复bug,增强html的搜索功能,增强auto配置功能
|
36
|
+
2024/09/24:
|
37
|
+
增加模块html:html页面解析
|
38
|
+
增加模块auto:自动化调用
|
34
39
|
|
35
40
|
2024/09/09
|
36
41
|
ioc:
|
@@ -0,0 +1 @@
|
|
1
|
+
from .run import Run
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
from .. import xf, fz
|
4
|
+
from .. import ioc
|
5
|
+
from ..base import Base
|
6
|
+
from ..ioc import wrap
|
7
|
+
import os,re
|
8
|
+
|
9
|
+
@wrap.obj(id="cache.modify")
|
10
|
+
@wrap.obj_args("ref, cache", "ref, log")
|
11
|
+
class Update(Base):
|
12
|
+
"""
|
13
|
+
#{}
|
14
|
+
"""
|
15
|
+
def init(self, cache, log, pt = "(#\{([^\{\}]*)\})"):
|
16
|
+
self.cache = cache
|
17
|
+
self.log = log
|
18
|
+
self.pt = pt
|
19
|
+
def call(self, s):
|
20
|
+
if type(s)==dict:
|
21
|
+
rst = {}
|
22
|
+
for k,v in s.items():
|
23
|
+
k,v = self(k), self(v)
|
24
|
+
rst[k] = v
|
25
|
+
return rst
|
26
|
+
elif type(s)==list:
|
27
|
+
rst = []
|
28
|
+
for v in s:
|
29
|
+
v = self(v)
|
30
|
+
rst.append(v)
|
31
|
+
return rst
|
32
|
+
elif type(s)!=str:
|
33
|
+
return s
|
34
|
+
rst = re.findall(self.pt, s)
|
35
|
+
for match, key in rst:
|
36
|
+
val = self.cache.get(key)
|
37
|
+
if val is None:
|
38
|
+
err = f"'{key}' not found in cache"
|
39
|
+
self.log.error(err)
|
40
|
+
raise Exception(err)
|
41
|
+
if s == match:
|
42
|
+
s = val
|
43
|
+
else:
|
44
|
+
s = s.replace(match, str(val))
|
45
|
+
return s
|
46
|
+
|
47
|
+
pass
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
@wrap.obj(id="cache.save")
|
52
|
+
@wrap.obj_args("ref, cache", "ref, log")
|
53
|
+
class Save(Base):
|
54
|
+
def init(self, cache, log):
|
55
|
+
self.cache = cache
|
56
|
+
self.log = log
|
57
|
+
def call(self, maps, fp):
|
58
|
+
fp = xf.get(maps, "cache.save", None)
|
59
|
+
self.log.debug(f"try save cache to '{fp}'")
|
60
|
+
if fp is None:
|
61
|
+
return
|
62
|
+
fz.makefdir(fp)
|
63
|
+
rst = self.cache.data
|
64
|
+
rs = xf.dumps(rst, format=True)
|
65
|
+
fz.write(rs, fp, 'w')
|
66
|
+
return True
|
67
|
+
|
68
|
+
pass
|
69
|
+
@wrap.obj(id="cache")
|
70
|
+
@wrap.obj_args("ref, log")
|
71
|
+
class Cache(Base):
|
72
|
+
def get(self, key):
|
73
|
+
ks = key.split(".")
|
74
|
+
return xf.gets(self.data, ks)
|
75
|
+
def set(self, key, val):
|
76
|
+
xf.sets(self.data, key.split("."), val)
|
77
|
+
def remove(self, key):
|
78
|
+
xf.removes(self.data, key.split("."))
|
79
|
+
def init(self, log):
|
80
|
+
self.log = log
|
81
|
+
self.data = {}
|
82
|
+
def call(self, maps, fp):
|
83
|
+
fp = xf.g(maps, cache="cache.js")
|
84
|
+
data = {}
|
85
|
+
if os.path.isfile(fp):
|
86
|
+
self.log.info(f"load cache from {fp}")
|
87
|
+
data = xf.flush_maps(xf.loadf(fp),visit_list=False)
|
88
|
+
self.data.update(data)
|
89
|
+
return True
|
90
|
+
|
91
|
+
pass
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
from .. import xf
|
3
|
+
from .. import ioc
|
4
|
+
from ..base import Base
|
5
|
+
from ..ioc import wrap
|
6
|
+
import os
|
7
|
+
@wrap.obj(id="buildz.auto.config.load")
|
8
|
+
class Config(Base):
|
9
|
+
def call(self, maps, fp):
|
10
|
+
configs = xf.g(maps, configs=[])
|
11
|
+
if type(configs)!=list:
|
12
|
+
configs = [configs]
|
13
|
+
for cfp in configs:
|
14
|
+
if not os.path.isfile(cfp):
|
15
|
+
self.log.error(f"config file not exist: {cfp}")
|
16
|
+
return False
|
17
|
+
dt = xf.loadf(cfp)
|
18
|
+
xf.fill(dt, maps, replace=0)
|
19
|
+
return True
|
20
|
+
|
21
|
+
pass
|
22
|
+
#wrap.add_datas("[(env, env.buildz.auto.deal), buildz.auto.deal, auto.deal]")
|
23
|
+
@wrap.obj_args("[env, buildz.auto.deal, auto.deal]")
|
24
|
+
@wrap.obj(id="autoz.deal")
|
25
|
+
class DfDeal(Base):
|
26
|
+
def init(self, id):
|
27
|
+
self.id = id
|
28
|
+
def call(self, data):
|
29
|
+
print(f"[ERROR] implement obj with id '{self.id}' by yourself")
|
30
|
+
|
31
|
+
pass
|
32
|
+
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
from .. import xf
|
3
|
+
from .. import ioc
|
4
|
+
from ..base import Base
|
5
|
+
from ..ioc import wrap
|
6
|
+
|
7
|
+
@wrap.obj(id="list")
|
8
|
+
@wrap.obj_args("[ref, [env, buildz.auto.deal, auto.deal], [ref, autoz.deal]]", "[ioc, confs]")
|
9
|
+
class List(Base):
|
10
|
+
def init(self, deal, mg):
|
11
|
+
self.deal = deal
|
12
|
+
self.mg = mg
|
13
|
+
def call(self, maps, fp):
|
14
|
+
datas = xf.g(maps, datas = [])
|
15
|
+
sdeal = xf.g(maps, deal = None)
|
16
|
+
deal_obj = xf.g(maps, deal_obj = None)
|
17
|
+
deal = self.deal
|
18
|
+
if deal_obj is not None:
|
19
|
+
deal = deal_obj
|
20
|
+
elif sdeal is not None:
|
21
|
+
deal = self.mg.get(sdeal)
|
22
|
+
for data in datas:
|
23
|
+
if not deal(data):
|
24
|
+
return False
|
25
|
+
return True
|
26
|
+
|
27
|
+
pass
|
28
|
+
#wrap.add_datas("[(env, env.buildz.auto.deal), buildz.auto.deal, auto.deal]")
|
29
|
+
@wrap.obj_args("[env, buildz.auto.deal, auto.deal]")
|
30
|
+
@wrap.obj(id="autoz.deal")
|
31
|
+
class DfDeal(Base):
|
32
|
+
def init(self, id):
|
33
|
+
self.id = id
|
34
|
+
def call(self, data):
|
35
|
+
print(f"[ERROR] implement obj with id '{self.id}' by yourself")
|
36
|
+
|
37
|
+
pass
|
38
|
+
|
39
|
+
|
40
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
from .. import xf
|
3
|
+
from .. import ioc
|
4
|
+
from ..base import Base
|
5
|
+
from ..ioc import wrap
|
6
|
+
class DealType(Base):
|
7
|
+
def init(self, deals = {}):
|
8
|
+
self.deals = deals
|
9
|
+
def call(self, data):
|
10
|
+
if type(data)==str:
|
11
|
+
data = xf.loadf(data)
|
12
|
+
_type = xf.g(data, type = None)
|
13
|
+
return self.deals[_type](data)
|
14
|
+
|
15
|
+
pass
|
16
|
+
|
17
|
+
@wrap.obj(id = "def.deal.type")
|
18
|
+
@wrap.obj_args("ioc, confs")
|
19
|
+
class DefDeal(Base):
|
20
|
+
def init(self, mg):
|
21
|
+
self.mg = mg
|
22
|
+
def call(self, maps, fp):
|
23
|
+
conf = xf.get(maps, "def.deal", None)
|
24
|
+
factory_id = xf.g(conf, factory="buildz.auto.deal.fill")
|
25
|
+
factory = self.mg.get(factory_id)
|
26
|
+
data = xf.g(conf, types={})
|
27
|
+
rst = {}
|
28
|
+
for _type, calls in data.items():
|
29
|
+
rst[_type] = factory(calls)
|
30
|
+
obj = DealType(rst)
|
31
|
+
maps['deal_obj'] = obj
|
32
|
+
return True
|
33
|
+
|
34
|
+
pass
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
from .. import xf
|
4
|
+
from .. import ioc
|
5
|
+
from ..base import Base
|
6
|
+
from ..ioc import wrap
|
7
|
+
|
8
|
+
class DeepFc(Base):
|
9
|
+
def init(self, fcs):
|
10
|
+
self.fc = fcs[0]
|
11
|
+
if len(fcs)>1:
|
12
|
+
self.next = DeepFc(fcs[1:])
|
13
|
+
else:
|
14
|
+
self.next = None
|
15
|
+
def call(self, data):
|
16
|
+
return self.fc(data, self.next)
|
17
|
+
|
18
|
+
pass
|
19
|
+
@wrap.obj(id = "buildz.auto.deal.fill")
|
20
|
+
@wrap.obj_args("ioc, confs")
|
21
|
+
class Fill(Base):
|
22
|
+
def init(self, mg):
|
23
|
+
self.mg = mg
|
24
|
+
def call(self, orders):
|
25
|
+
fcs = [self.mg.get(id) for id in orders]
|
26
|
+
return DeepFc(fcs)
|
27
|
+
|
28
|
+
pass
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
|
4
|
+
from .. import xf
|
5
|
+
from .. import ioc
|
6
|
+
from ..base import Base
|
7
|
+
from ..ioc import wrap
|
8
|
+
from ..tools import *
|
9
|
+
import time, sys
|
10
|
+
@wrap.obj(id="log")
|
11
|
+
class Log(Base):
|
12
|
+
def init(self):
|
13
|
+
self.fp = None
|
14
|
+
def log(self, level, *args):
|
15
|
+
args = [str(k) for k in args]
|
16
|
+
msg = " ".join(args)
|
17
|
+
date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
|
18
|
+
msg = f"[{level}] {date} {msg}\n"
|
19
|
+
sys.stdout.write(msg)
|
20
|
+
if self.fp is not None:
|
21
|
+
fp = time.strftime(self.fp)
|
22
|
+
fz.makefdir(fp)
|
23
|
+
fz.write(msg.encode("utf-8"), fp, 'ab')
|
24
|
+
def info(self, *args):
|
25
|
+
self.log("INFO", *args)
|
26
|
+
def warn(self, *args):
|
27
|
+
self.log("WARN", *args)
|
28
|
+
def debug(self, *args):
|
29
|
+
self.log("DEBUG", *args)
|
30
|
+
def error(self, *args):
|
31
|
+
self.log("ERROR", *args)
|
32
|
+
def call(self, maps, fp):
|
33
|
+
fp = xf.g(maps, log = None)
|
34
|
+
self.fp = fp
|
35
|
+
return True
|
36
|
+
|
37
|
+
pass
|
@@ -0,0 +1,24 @@
|
|
1
|
+
from .. import xf
|
2
|
+
from .. import ioc
|
3
|
+
from ..base import Base
|
4
|
+
from . import init
|
5
|
+
import os
|
6
|
+
class Run(Base):
|
7
|
+
def init(self, fps=None):
|
8
|
+
mg = ioc.build()
|
9
|
+
if fps is not None:
|
10
|
+
mg.add_fps(fps)
|
11
|
+
self.mg = mg
|
12
|
+
def call(self, fp):
|
13
|
+
maps = xf.loadf(fp)
|
14
|
+
config = self.mg.get("buildz.auto.config.load")
|
15
|
+
if not config(maps, fp):
|
16
|
+
return
|
17
|
+
calls = xf.g(maps, calls = [])
|
18
|
+
for deal in calls:
|
19
|
+
fc = self.mg.get(deal)
|
20
|
+
if not fc(maps, fp):
|
21
|
+
break
|
22
|
+
|
23
|
+
pass
|
24
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
from ..tools import *
|
3
|
+
from buildz.ioc import wrap
|
4
|
+
@wrap.obj(id="save")
|
5
|
+
@wrap.obj_args("ref, cache", "ref, log", "ref, cache.modify")
|
6
|
+
class Save(Base):
|
7
|
+
def init(self, cache, log, upd):
|
8
|
+
self.cache = cache
|
9
|
+
self.log = log
|
10
|
+
self.upd = upd
|
11
|
+
def call(self, data, fc=None):
|
12
|
+
data = self.upd(data)
|
13
|
+
save = xf.g(data, save={})
|
14
|
+
for k, v in save.items():
|
15
|
+
if type(v)==str:
|
16
|
+
v = ["key"]+v.split(".")
|
17
|
+
if type(v)!=list:
|
18
|
+
v = ["key", v]
|
19
|
+
tp = v[0]
|
20
|
+
v = v[1:]
|
21
|
+
if tp=="eval":
|
22
|
+
val = eval(v[0])
|
23
|
+
elif tp == "exec":
|
24
|
+
exec(v[0])
|
25
|
+
val = self.val
|
26
|
+
else:
|
27
|
+
val = xf.gets(data, v)
|
28
|
+
self.cache.set(k, val)
|
29
|
+
return True
|
30
|
+
|
31
|
+
pass
|
32
|
+
|
33
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
configs: config.js
|
2
|
+
datas: [
|
3
|
+
//写一个配置
|
4
|
+
{
|
5
|
+
note: test
|
6
|
+
url: test
|
7
|
+
type: http.get
|
8
|
+
data: {
|
9
|
+
url: "#{test.url}"
|
10
|
+
}
|
11
|
+
save: {
|
12
|
+
test.url: data.url
|
13
|
+
}
|
14
|
+
result: {
|
15
|
+
code: 1.99
|
16
|
+
}
|
17
|
+
verify: [
|
18
|
+
"result.code, [>, 1]"
|
19
|
+
]
|
20
|
+
save: {
|
21
|
+
result.code: result.code
|
22
|
+
}
|
23
|
+
}
|
24
|
+
// 或者配置所在的文件
|
25
|
+
item1.js
|
26
|
+
]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
from buildz.tools import *
|
3
|
+
from buildz.ioc import wrap
|
4
|
+
@wrap.obj(id="request")
|
5
|
+
@wrap.obj_args("ref, log", "ref, cache.modify")
|
6
|
+
class Req(Base):
|
7
|
+
def init(self, log, upd):
|
8
|
+
self.upd = upd
|
9
|
+
self.log = log
|
10
|
+
def call(self, data, fc=None):
|
11
|
+
data = self.upd(data)
|
12
|
+
self.log.debug(f"test data: {data}")
|
13
|
+
if fc is not None:
|
14
|
+
return fc(data)
|
15
|
+
return True
|
16
|
+
|
17
|
+
pass
|
18
|
+
from buildz.auto import Run
|
19
|
+
def test():
|
20
|
+
Run()("test.js")
|
21
|
+
|
22
|
+
pass
|
23
|
+
pyz.lc(locals(), test)
|
24
|
+
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
from ..tools import *
|
4
|
+
from buildz.ioc import wrap
|
5
|
+
@wrap.obj(id="verify")
|
6
|
+
@wrap.obj_args("ref, log", "ref, cache.modify")
|
7
|
+
class Verify(Base):
|
8
|
+
def init(self, log, upd):
|
9
|
+
self.log = log
|
10
|
+
self.upd = upd
|
11
|
+
self.opts = {}
|
12
|
+
self.opts[">"] = self.make_val_cmp(lambda val,v:val>v)
|
13
|
+
self.opts["<"] = self.make_val_cmp(lambda val,v:val<v)
|
14
|
+
self.opts[">="] = self.make_val_cmp(lambda val,v:val>=v)
|
15
|
+
self.opts["<="] = self.make_val_cmp(lambda val,v:val<=v)
|
16
|
+
self.opts["="] = self.eq
|
17
|
+
self.opts["!="] = self.neq
|
18
|
+
def eq(self, val, v):
|
19
|
+
if type(val)!=type(v):
|
20
|
+
if type(val)==str or type(v)==str:
|
21
|
+
return str(val)==str(v)
|
22
|
+
return val==v
|
23
|
+
def neq(self, val, v):
|
24
|
+
if type(val)!=type(v):
|
25
|
+
if type(val)==str or type(v)==str:
|
26
|
+
return str(val)!=str(v)
|
27
|
+
return val!=v
|
28
|
+
def make_val_cmp(self, opt):
|
29
|
+
def fc(val, v):
|
30
|
+
if val is None:
|
31
|
+
return False
|
32
|
+
if type(val)==str:
|
33
|
+
val = float(val)
|
34
|
+
if type(v)==str:
|
35
|
+
v = float(v)
|
36
|
+
return opt(val, v)
|
37
|
+
return fc
|
38
|
+
def match(self, v, val, result, data):
|
39
|
+
tp,v = v
|
40
|
+
if tp in self.opts:
|
41
|
+
return self.opts[tp](val,v)
|
42
|
+
if tp=="eval":
|
43
|
+
return eval(v)
|
44
|
+
elif tp == "exec":
|
45
|
+
exec(v)
|
46
|
+
return self.val
|
47
|
+
else:
|
48
|
+
err = f"not impl match type: {tp}"
|
49
|
+
self.log.error(err)
|
50
|
+
raise Exception(err)
|
51
|
+
def call(self, data, fc=None):
|
52
|
+
data = self.upd(data)
|
53
|
+
note = xf.g(data, note=data)
|
54
|
+
result = xf.g(data, result = {})
|
55
|
+
vs = xf.g(data, verify=[])
|
56
|
+
for it in vs:
|
57
|
+
if type(it)==str:
|
58
|
+
it = xf.loads(it)
|
59
|
+
k,v=it
|
60
|
+
bak = v
|
61
|
+
if k == "$":
|
62
|
+
if type(v)!=list:
|
63
|
+
v = ["eval", v]
|
64
|
+
val = None
|
65
|
+
else:
|
66
|
+
val = xf.gets(data, k.split("."))
|
67
|
+
if type(v)!=list:
|
68
|
+
v = ["=", v]
|
69
|
+
jg = self.match(v, val, result, data)
|
70
|
+
if not jg:
|
71
|
+
self.log.error(f"verify failed in {note}, key: '{k}', match: {bak}, val: {val}")
|
72
|
+
return False
|
73
|
+
if fc is None:
|
74
|
+
return True
|
75
|
+
return fc(data)
|
76
|
+
|
77
|
+
pass
|
78
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
from .xml import parse
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
from buildz.html import parse
|
3
|
+
from buildz.tools import *
|
4
|
+
#demo.html太大,已经删除
|
5
|
+
fp = "demo.html"
|
6
|
+
s = fz.read(fp, "rb").decode("utf-8")
|
7
|
+
|
8
|
+
obj = parse(s)
|
9
|
+
|
10
|
+
# 可以进行多次查询调用,后一次查询在前一次的结果集里做查询
|
11
|
+
rst = obj.finds("(class,toplist1-tr_1MWDu)").finds("tag=a,target=_blank").data()
|
12
|
+
rst = obj.searchs("class,toplist1-tr_1MWDu").finds("(tag,a),(tag,a),(target,_blank)").data()
|
13
|
+
rst = obj.searchs("class,toplist1-tr_1MWDu").searchs("tag,a", "tag, a", "target, _blank").data()
|
14
|
+
|
15
|
+
print(f"search rst: {rst}")
|