buildz 0.6.22__tar.gz → 0.6.24__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.22/buildz.egg-info → buildz-0.6.24}/PKG-INFO +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/cache.py +42 -9
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/config.py +3 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/dbs.py +15 -2
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/deal_list.py +3 -2
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/defs.py +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/factory.py +4 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/log.py +6 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/request.py +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/run.py +11 -3
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/save.py +10 -3
- buildz-0.6.24/buildz/auto/test/res/config/base.js +13 -0
- buildz-0.6.24/buildz/auto/test/res/config/config.js +4 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.24/buildz/auto/test/res}/data/test.js +11 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/test/test.py +3 -3
- buildz-0.6.24/buildz/auto/test/xtest.py +20 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/verify.py +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/runz.py +2 -2
- {buildz-0.6.22 → buildz-0.6.24}/buildz/fz/__init__.py +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/fz/fio.py +17 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc/confs.py +2 -0
- buildz-0.6.24/buildz/ioc/ioc/decorator.py +97 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/obj.py +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/wrap.py +1 -1
- buildz-0.6.24/buildz/tz/log.py +84 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/mapz.py +16 -0
- {buildz-0.6.22 → buildz-0.6.24/buildz.egg-info}/PKG-INFO +1 -1
- {buildz-0.6.22 → buildz-0.6.24}/buildz.egg-info/SOURCES.txt +8 -6
- {buildz-0.6.22 → buildz-0.6.24}/setup.py +1 -1
- buildz-0.6.22/buildz/auto/test/config/config.js +0 -12
- buildz-0.6.22/buildz/ioc/ioc/decorator.py +0 -44
- buildz-0.6.22/buildz/tz/log.py +0 -50
- {buildz-0.6.22 → buildz-0.6.24}/LICENSE +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/MANIFEST.in +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/README.md +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/argx.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/deal_type.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/auto/init.py +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.24/buildz/auto/test/res}/cache/cache.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.24/buildz/auto/test/res}/data/fp.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.24/buildz/auto/test/res}/data/item1.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.24/buildz/auto/test/res}/data/item2.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/cmd.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/basez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/install.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/db/run.conf +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/html/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/html/test/demo.html +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/html/test/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/html/xml.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/init.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc/conf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc/single.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/init.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/ref.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/refs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/var.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/pyz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tools.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/time/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/time/timez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/code.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/file.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/read.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/readz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/stack.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/write.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.24}/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.24
|
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
|
@@ -14,7 +14,7 @@ class Update(Base):
|
|
14
14
|
"""
|
15
15
|
def init(self, cache, log, pt = "(#\{([^\{\}]*)\})"):
|
16
16
|
self.cache = cache
|
17
|
-
self.log = log
|
17
|
+
self.log = log.tag("Cache.Update")
|
18
18
|
self.pt = pt
|
19
19
|
def call(self, s):
|
20
20
|
if type(s)==dict:
|
@@ -33,8 +33,9 @@ class Update(Base):
|
|
33
33
|
return s
|
34
34
|
rst = re.findall(self.pt, s)
|
35
35
|
for match, key in rst:
|
36
|
+
has = self.cache.has(key)
|
36
37
|
val = self.cache.get(key)
|
37
|
-
if
|
38
|
+
if not has:
|
38
39
|
err = f"'{key}' not found in cache"
|
39
40
|
self.log.error(err)
|
40
41
|
raise Exception(err)
|
@@ -51,25 +52,34 @@ pass
|
|
51
52
|
@wrap.obj(id="cache.save")
|
52
53
|
@wrap.obj_args("ref, cache.file", "ref, log")
|
53
54
|
class Save(Base):
|
54
|
-
def init(self, cache, log, fkey = "cache.save"):
|
55
|
+
def init(self, cache, log, fkey = "cache.save", fp = None):
|
55
56
|
self.fkey = fkey
|
56
57
|
self.cache = cache
|
57
|
-
self.log = log
|
58
|
-
|
59
|
-
|
58
|
+
self.log = log.tag("Cache.Save")
|
59
|
+
self.fp = fp
|
60
|
+
def save(self):
|
61
|
+
fp = self.fp
|
60
62
|
if fp is None:
|
61
63
|
self.log.warn(f"cache not save cause 'cache.save' is None")
|
62
|
-
return
|
64
|
+
return False
|
63
65
|
fz.makefdir(fp)
|
64
66
|
rst = self.cache.data
|
65
67
|
rs = xf.dumps(rst, format=True).encode("utf-8")
|
66
68
|
fz.write(rs, fp, 'wb')
|
67
69
|
return True
|
70
|
+
def call(self, maps, fp):
|
71
|
+
fp = xf.get(maps, self.fkey, None)
|
72
|
+
fp = self.cache.rfp(fp)
|
73
|
+
self.fp = fp
|
74
|
+
return self.save()
|
68
75
|
|
69
76
|
pass
|
70
77
|
@wrap.obj(id="cache.file")
|
71
|
-
@wrap.obj_args("
|
78
|
+
@wrap.obj_args("mcall, log, tag, [Cache.File]", "env, cache.rfp.current.first, false")
|
72
79
|
class Cache(Base):
|
80
|
+
def has(self, key):
|
81
|
+
ks = key.split(".")
|
82
|
+
return xf.has(self.data, ks)
|
73
83
|
def get(self, key):
|
74
84
|
ks = key.split(".")
|
75
85
|
return xf.gets(self.data, ks)
|
@@ -96,10 +106,18 @@ class Cache(Base):
|
|
96
106
|
self.set_current(dps)
|
97
107
|
def get_current(self):
|
98
108
|
dps = self.get("cache.path.current")
|
109
|
+
if dps is None:
|
110
|
+
dps = []
|
99
111
|
if type(dps)!=list:
|
100
112
|
dps = [dps]
|
101
113
|
return dps
|
114
|
+
def set_basedir(self, dp):
|
115
|
+
self.set("cache.path.base", dp)
|
116
|
+
def get_basedir(self):
|
117
|
+
return self.get("cache.path.base")
|
102
118
|
def rfp(self, fp):
|
119
|
+
if fz.is_abs(fp):
|
120
|
+
return fp
|
103
121
|
dps = [None,"."]
|
104
122
|
cfps = self.get_current()
|
105
123
|
if cfps is not None:
|
@@ -107,12 +125,18 @@ class Cache(Base):
|
|
107
125
|
dps = cfps+dps
|
108
126
|
else:
|
109
127
|
dps = dps+cfps
|
128
|
+
basedir = self.get_basedir()
|
129
|
+
if basedir is not None:
|
130
|
+
dps = [basedir]+dps
|
110
131
|
for dp in dps:
|
111
132
|
_fp = fp
|
112
133
|
if dp is not None:
|
113
134
|
_fp = os.path.join(dp, fp)
|
114
135
|
if os.path.isfile(_fp):
|
115
136
|
return _fp
|
137
|
+
basedir = self.get_basedir()
|
138
|
+
if basedir is not None:
|
139
|
+
fp = os.path.join(basedir, fp)
|
116
140
|
return fp
|
117
141
|
def call(self, maps, fp):
|
118
142
|
fp = xf.get(maps, self.fkey, "cache.js")
|
@@ -132,7 +156,7 @@ class Cache(Base):
|
|
132
156
|
pass
|
133
157
|
|
134
158
|
@wrap.obj(id="cache.mem")
|
135
|
-
@wrap.obj_args("
|
159
|
+
@wrap.obj_args("mcall, log, tag, [Cache.Mem]")
|
136
160
|
class Mem(Cache):
|
137
161
|
def init(self, log, current_first=False, fkey = "mem"):
|
138
162
|
super().init(log)
|
@@ -152,6 +176,10 @@ class Caches(Base):
|
|
152
176
|
self.get_current = cache.get_current
|
153
177
|
self.add_current = cache.add_current
|
154
178
|
self.set_current = cache.set_current
|
179
|
+
self.set_basedir = cache.set_basedir
|
180
|
+
self.get_basedir = cache.get_basedir
|
181
|
+
self.has_file = cache.has
|
182
|
+
self.has_mem = mem.has
|
155
183
|
def get_file(self, key):
|
156
184
|
return self.cache.get(key)
|
157
185
|
def get_mem(self, key):
|
@@ -170,5 +198,10 @@ class Caches(Base):
|
|
170
198
|
if v is not None:
|
171
199
|
return v
|
172
200
|
return None
|
201
|
+
def has(self, key):
|
202
|
+
for cache in self.caches:
|
203
|
+
if cache.has(key):
|
204
|
+
return True
|
205
|
+
return False
|
173
206
|
|
174
207
|
pass
|
@@ -11,13 +11,15 @@ class Config(Base):
|
|
11
11
|
configs = xf.g(maps, configs=[])
|
12
12
|
if type(configs)!=list:
|
13
13
|
configs = [configs]
|
14
|
+
dts = {}
|
14
15
|
for cfp in configs:
|
15
16
|
cfp = self.cache.rfp(cfp)
|
16
17
|
if not os.path.isfile(cfp):
|
17
18
|
self.log.error(f"config file not exist: {cfp}")
|
18
19
|
return False
|
19
20
|
dt = xf.loadf(cfp)
|
20
|
-
xf.fill(dt,
|
21
|
+
xf.fill(dt, dts, replace=1)
|
22
|
+
xf.fill(dts, maps, replace=0)
|
21
23
|
return True
|
22
24
|
|
23
25
|
pass
|
@@ -8,17 +8,30 @@ from buildz.db.dv import build
|
|
8
8
|
class Dbs(Base):
|
9
9
|
def init(self, cache, log):
|
10
10
|
self.cache = cache
|
11
|
-
self.log = log
|
11
|
+
self.log = log.tag("Dbs")
|
12
12
|
self.dbs = {}
|
13
13
|
def call(self, maps, fp):
|
14
14
|
confs = xf.g(maps, dbs={})
|
15
15
|
for key,conf in confs.items():
|
16
16
|
url,user,pwd,dv = xf.g(conf, url=None, user=None, pwd=None, device=key)
|
17
|
-
dv = build(dv, [url, user, pwd],
|
17
|
+
dv = build(dv, [url, user, pwd], conf)
|
18
|
+
dv.begin()
|
18
19
|
self.dbs[key] = dv
|
19
20
|
self.cache.set_mem("dbs", self.dbs)
|
20
21
|
return True
|
21
22
|
|
22
23
|
pass
|
23
24
|
|
25
|
+
@wrap.obj(id="dbs.close")
|
26
|
+
@wrap.obj_sets(cache="ref, cache", log="ref, log")
|
27
|
+
class DbsClose(Base):
|
28
|
+
def call(self, maps, fp):
|
29
|
+
dbs = self.cache.get_mem("dbs")
|
30
|
+
if dbs is None:
|
31
|
+
return True
|
32
|
+
for k,dv in dbs:
|
33
|
+
dv.close()
|
34
|
+
return True
|
35
|
+
|
36
|
+
pass
|
24
37
|
|
@@ -7,7 +7,7 @@ import os
|
|
7
7
|
class List(Base):
|
8
8
|
def init(self, cache, log, upd, lst):
|
9
9
|
self.cache = cache
|
10
|
-
self.log = log
|
10
|
+
self.log = log.tag("List")
|
11
11
|
self.upd = upd
|
12
12
|
self.lst = lst
|
13
13
|
def call(self, data, fc):
|
@@ -21,9 +21,10 @@ class List(Base):
|
|
21
21
|
if type(datas)==dict:
|
22
22
|
datas = xf.g(datas, datas=[])
|
23
23
|
deal = self.lst.curr()
|
24
|
-
print(f"List.datas: {xf.dumps(datas,format=1,deep=1)}")
|
24
|
+
#print(f"List.datas: {xf.dumps(datas,format=1,deep=1)}")
|
25
25
|
for data in datas:
|
26
26
|
if not deal(data):
|
27
|
+
self.log.error(f"failed in data: {data}")
|
27
28
|
return False
|
28
29
|
return True
|
29
30
|
|
@@ -25,6 +25,10 @@ class Fill(Base):
|
|
25
25
|
def init(self, mg):
|
26
26
|
self.mg = mg
|
27
27
|
def call(self, orders, default=None):
|
28
|
+
if type(orders)==str:
|
29
|
+
orders = xf.loads(orders)
|
30
|
+
if type(orders)==str:
|
31
|
+
orders = [orders]
|
28
32
|
fcs = [self.mg.get(id) for id in orders]
|
29
33
|
return DeepFc(fcs,default)
|
30
34
|
|
@@ -9,14 +9,20 @@ from ..tools import *
|
|
9
9
|
import time, sys
|
10
10
|
from ..tz.log import FpLog
|
11
11
|
@wrap.obj(id="log")
|
12
|
+
@wrap.obj_sets(cache="ref,cache")
|
12
13
|
class AutoLog(FpLog):
|
13
14
|
def call(self, maps, fp):
|
14
15
|
fp = xf.g(maps, log = None)
|
16
|
+
fp = self.cache.rfp(fp)
|
15
17
|
self.fp = fp
|
16
18
|
shows = xf.get(maps, "log.shows")
|
17
19
|
if shows is None:
|
18
20
|
shows = ["info", "warn", "error"]
|
19
21
|
self.shows = shows
|
22
|
+
format = xf.get(maps, "log.format")
|
23
|
+
if format is not None:
|
24
|
+
self.format = format
|
25
|
+
#print(f"[TETSZ] format: {format}")
|
20
26
|
return True
|
21
27
|
|
22
28
|
pass
|
@@ -4,20 +4,28 @@ from ..base import Base
|
|
4
4
|
from . import init
|
5
5
|
import os
|
6
6
|
class Run(Base):
|
7
|
-
def init(self, fps=None, init=None):
|
7
|
+
def init(self, fps=None, init=None, basedir=None):
|
8
8
|
mg = ioc.build(init)
|
9
9
|
if fps is not None:
|
10
10
|
mg.add_fps(fps)
|
11
11
|
self.mg = mg
|
12
|
+
if basedir is not None:
|
13
|
+
self.basedir(basedir)
|
14
|
+
def basedir(self, dp):
|
15
|
+
self._base = dp
|
16
|
+
self.mg.get("cache").set_basedir(dp)
|
12
17
|
def add_current(self, dp):
|
13
18
|
self.mg.get("cache").add_current(dp)
|
14
19
|
def call(self, fp):
|
15
|
-
self.log = self.mg.get("log")
|
20
|
+
self.log = self.mg.get("log").tag("Run")
|
21
|
+
basedir = self.mg.get("cache").get_basedir()
|
22
|
+
if basedir is not None and not fz.is_abs(fp):
|
23
|
+
fp = os.path.join(basedir, fp)
|
16
24
|
if not os.path.isfile(fp):
|
17
25
|
dp = os.path.dirname(fp)
|
18
26
|
fn = os.path.basename(fp)
|
19
27
|
fps = fz.search(dp, fn)
|
20
|
-
|
28
|
+
self.log.info(f"search dp:{dp}, fn: {fn}, rst: {fps}")
|
21
29
|
if len(fps)!=1:
|
22
30
|
self.log.error(f"can't find filepath: {fp}")
|
23
31
|
return False
|
@@ -1,14 +1,17 @@
|
|
1
1
|
#
|
2
2
|
from ..tools import *
|
3
3
|
from buildz.ioc import wrap
|
4
|
+
#print(f"warp.obj_sets: {wrap.obj_sets}")
|
5
|
+
#raise Exception("test")
|
4
6
|
@wrap.obj(id="save")
|
5
7
|
@wrap.obj_args("ref, cache", "ref, log", "ref, cache.modify")
|
8
|
+
@wrap.obj_sets(cache_save = "ref, cache.save")
|
6
9
|
class Save(Base):
|
7
10
|
def init(self, cache, log, upd):
|
8
11
|
self.cache = cache
|
9
|
-
self.log = log
|
12
|
+
self.log = log.tag("Save")
|
10
13
|
self.upd = upd
|
11
|
-
def call(self, data,
|
14
|
+
def call(self, data, next_fc=None):
|
12
15
|
data = self.upd(data)
|
13
16
|
save = xf.g(data, save={})
|
14
17
|
fsave = xf.get(data, "save.file", {})
|
@@ -31,7 +34,11 @@ class Save(Base):
|
|
31
34
|
else:
|
32
35
|
val = xf.gets(data, v)
|
33
36
|
fc(k, val)
|
34
|
-
|
37
|
+
save = saves[0]
|
38
|
+
if len(save)+len(fsave)>0:
|
39
|
+
sv = self.cache_save.save()
|
40
|
+
self.log.debug(f"cache_save in save: {sv}")
|
41
|
+
return next_fc(data)
|
35
42
|
|
36
43
|
pass
|
37
44
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
calls: [log, cache, cache.save, dbs, def.deal.type, list, cache.save, dbs.close]
|
2
|
+
log.shows: [info, warn, debug, error]
|
3
|
+
//默认格式是 "[{LEVEL}] %Y-%m-%d %H:%M:%S {tag} {msg}\n" (注意LEVEL是大写,有三种:level,Level, LEVEL)
|
4
|
+
//变量: {level}, {Level}, {LEVEL}, {tag}, {msg}, %Y, %m, %d, %H, %M, %S
|
5
|
+
log.format: "[{Level}] %Y-%m-%d %H:%M:%S [{tag}] {msg}\n"
|
6
|
+
def.deal: {
|
7
|
+
types: {
|
8
|
+
http.get: [defs, request, verify, save]
|
9
|
+
get: [defs, request.get, verify, save]
|
10
|
+
list: [defs, deal.list]
|
11
|
+
test: [defs, save]
|
12
|
+
}
|
13
|
+
}
|
@@ -6,7 +6,7 @@ from buildz.ioc import wrap
|
|
6
6
|
class Req(Base):
|
7
7
|
def init(self, log, upd):
|
8
8
|
self.upd = upd
|
9
|
-
self.log = log
|
9
|
+
self.log = log.tag("Test.Req")
|
10
10
|
def call(self, data, fc=None):
|
11
11
|
data = self.upd(data)
|
12
12
|
self.log.debug(f"test data: {data}")
|
@@ -19,8 +19,8 @@ from buildz.auto import Run
|
|
19
19
|
from buildz.ioc.wrap import decorator
|
20
20
|
import sys
|
21
21
|
def test():
|
22
|
-
print(f"wrap: {xf.dumps(decorator(),format=1,deep=1)}")
|
23
|
-
rst = Run()("data/test")
|
22
|
+
#print(f"wrap: {xf.dumps(decorator(),format=1,deep=1)}")
|
23
|
+
rst = Run(basedir="res")("data/test")
|
24
24
|
print(f"rst: {rst}")
|
25
25
|
|
26
26
|
pass
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
from buildz.ioc import wrap
|
3
|
+
x = wrap.ns("test")
|
4
|
+
@wrap.obj(id='x')
|
5
|
+
class A:
|
6
|
+
pass
|
7
|
+
|
8
|
+
pass
|
9
|
+
@x.obj(id='y')
|
10
|
+
class B:
|
11
|
+
pass
|
12
|
+
|
13
|
+
pass
|
14
|
+
from buildz import ioc
|
15
|
+
mg= ioc.build()
|
16
|
+
x = mg.get('x')
|
17
|
+
y = mg.get('test.y')
|
18
|
+
print(x)
|
19
|
+
print(y)
|
20
|
+
|
@@ -6,7 +6,7 @@ from buildz.ioc import wrap
|
|
6
6
|
@wrap.obj_args("ref, log", "ref, cache.modify")
|
7
7
|
class Verify(Base):
|
8
8
|
def init(self, log, upd):
|
9
|
-
self.log = log
|
9
|
+
self.log = log.tag("Verify")
|
10
10
|
self.upd = upd
|
11
11
|
self.opts = {}
|
12
12
|
self.opts[">"] = self.make_val_cmp(lambda val,v:val>v)
|
@@ -15,7 +15,7 @@ def test(fp):
|
|
15
15
|
obj = xf.loads(xf.fread(fp))
|
16
16
|
dv = obj['dv']
|
17
17
|
if __name__ == "__main__":
|
18
|
-
from
|
18
|
+
from dv.structz import CMD
|
19
19
|
if dv == 'mysql':
|
20
20
|
from dv.mysqlz import build
|
21
21
|
elif dv == 'oracle':
|
@@ -23,7 +23,7 @@ def test(fp):
|
|
23
23
|
elif dv == 'clickhouse':
|
24
24
|
from dv.clickhousez import build
|
25
25
|
else:
|
26
|
-
from .
|
26
|
+
from .dv.structz import CMD
|
27
27
|
if dv == 'mysql':
|
28
28
|
from .dv.mysqlz import build
|
29
29
|
elif dv == 'oracle':
|
@@ -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
|
5
|
+
from .fio import fread, freads, fwrite, fwrites, read,reads,write,writes, makefdir, dirpath,makedir,removes, cover, fcover, sread, swrite, is_abs
|
6
6
|
from .fhs import fhash, fhashs
|
7
7
|
|
8
8
|
__author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
|
@@ -107,4 +107,20 @@ def swrite(dt, fp, code="utf-8", mode = "w"):
|
|
107
107
|
dt = dt.encode(code)
|
108
108
|
write(dt, fp, mode)
|
109
109
|
|
110
|
-
pass
|
110
|
+
pass
|
111
|
+
|
112
|
+
def is_abs(fp):
|
113
|
+
if fp is None:
|
114
|
+
return False
|
115
|
+
if fp.strip()=="":
|
116
|
+
return False
|
117
|
+
fp = fp.strip().replace("\\", "/")
|
118
|
+
if fp[0]=="/":
|
119
|
+
return True
|
120
|
+
arr = fp.split("/")
|
121
|
+
if arr[0].find(":")>=0:
|
122
|
+
return True
|
123
|
+
return False
|
124
|
+
|
125
|
+
pass
|
126
|
+
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#coding=utf-8
|
2
|
+
from buildz.base import Base
|
3
|
+
from buildz import xf
|
4
|
+
from threading import Lock
|
5
|
+
class Decorator(Base):
|
6
|
+
def init(self):
|
7
|
+
self.conf = {}
|
8
|
+
self.confs = {}
|
9
|
+
self.confs[None] = self.conf
|
10
|
+
self.namespace = None
|
11
|
+
self.fcs = {}
|
12
|
+
self._ns = {}
|
13
|
+
self.regist("add_datas", self.add_datas)
|
14
|
+
def fcns(self, namespace, fc):
|
15
|
+
self._ns[fc] = namespace
|
16
|
+
def ns(self, namespace):
|
17
|
+
self.namespace = namespace
|
18
|
+
def curr_ns(self):
|
19
|
+
return self.namespace
|
20
|
+
def regist(self, key, fc):
|
21
|
+
self.fcs[key] = fc
|
22
|
+
def get_conf(self, src):
|
23
|
+
ns = self.namespace
|
24
|
+
if src in self._ns:
|
25
|
+
ns = self._ns[src]
|
26
|
+
if ns not in self.confs:
|
27
|
+
conf = {}
|
28
|
+
conf['namespace'] = ns
|
29
|
+
self.confs[ns] = conf
|
30
|
+
return self.confs[ns]
|
31
|
+
def get(self, tag, index, src=None):
|
32
|
+
conf = self.get_conf(src)
|
33
|
+
if tag not in conf:
|
34
|
+
conf[tag]=[]
|
35
|
+
return conf[tag][index]
|
36
|
+
def add(self, tag, data, src = None):
|
37
|
+
conf = self.get_conf(src)
|
38
|
+
if tag not in conf:
|
39
|
+
conf[tag]=[]
|
40
|
+
id = len(conf[tag])
|
41
|
+
conf[tag].append(data)
|
42
|
+
return id
|
43
|
+
def set(self, tag, key, val, src=None):
|
44
|
+
conf = self.get_conf(src)
|
45
|
+
if tag not in conf:
|
46
|
+
conf[tag]={}
|
47
|
+
conf[tag][key]=val
|
48
|
+
def add_datas(self, item, key):
|
49
|
+
if type(item)==str:
|
50
|
+
item = xf.loads(item)
|
51
|
+
return self.add("datas", item, key)
|
52
|
+
def get_datas(self, id):
|
53
|
+
return self.get("datas", id)
|
54
|
+
def set_datas(self, id, val):
|
55
|
+
return self.set("datas", id, val)
|
56
|
+
def set_envs(self, key, val):
|
57
|
+
return self.set("env", key, val)
|
58
|
+
def add_inits(self, val):
|
59
|
+
return self.add("inits", val)
|
60
|
+
def add_locals(self, item):
|
61
|
+
return self.add("locals", item)
|
62
|
+
def all(self):
|
63
|
+
arr = [val for k,val in self.confs.items()]
|
64
|
+
return arr
|
65
|
+
def call(self):
|
66
|
+
return self.conf
|
67
|
+
|
68
|
+
pass
|
69
|
+
|
70
|
+
decorator = Decorator()
|
71
|
+
class Fcs:
|
72
|
+
pass
|
73
|
+
|
74
|
+
pass
|
75
|
+
class NameSpace(Base):
|
76
|
+
def init(self, decorator):
|
77
|
+
self.decorator = decorator
|
78
|
+
self.lock = Lock()
|
79
|
+
def fc(self, namespace, rfc):
|
80
|
+
def wfc(*a, **b):
|
81
|
+
with self.lock:
|
82
|
+
ns = self.decorator.curr_ns()
|
83
|
+
self.decorator.ns(namespace)
|
84
|
+
rst = rfc(*a,**b)
|
85
|
+
self.decorator.fcns(namespace, rst)
|
86
|
+
self.decorator.ns(ns)
|
87
|
+
return rst
|
88
|
+
return wfc
|
89
|
+
def call(self, namespace):
|
90
|
+
fcs = self.decorator.fcs
|
91
|
+
obj = Fcs()
|
92
|
+
for k,f in fcs.items():
|
93
|
+
setattr(obj, k, self.fc(namespace, f))
|
94
|
+
return obj
|
95
|
+
|
96
|
+
pass
|
97
|
+
ns = NameSpace(decorator)
|
@@ -340,7 +340,7 @@ class IOCObject(Basez):
|
|
340
340
|
conf['type'] = 'object'
|
341
341
|
if 'mcalls' in conf and 'call' not in conf:
|
342
342
|
conf['call'] = {'type': "calls", 'calls': conf['mcalls']}
|
343
|
-
conf[g_obj_cid] = decorator.add_datas(conf)
|
343
|
+
conf[g_obj_cid] = decorator.add_datas(conf, self)
|
344
344
|
g_ioc_conf.set(cls, conf)
|
345
345
|
return cls
|
346
346
|
|