buildz 0.6.35__tar.gz → 0.6.36__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.35/buildz.egg-info → buildz-0.6.36}/PKG-INFO +3 -1
- {buildz-0.6.35 → buildz-0.6.36}/README.md +2 -0
- buildz-0.6.36/buildz/auto/__init__.py +7 -0
- buildz-0.6.36/buildz/cachez/__init__.py +8 -0
- buildz-0.6.36/buildz/cachez/cache.py +199 -0
- buildz-0.6.36/buildz/confz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/basez.py +29 -22
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/orm.py +35 -7
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/sqlite3z.py +16 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/base.py +4 -3
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/conf.py +4 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/confs.py +2 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/decorator.py +18 -8
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc/single.py +2 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/branch.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/call.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/calls.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ref_lists.js +12 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/refs_lists.js +12 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/deal.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ioc.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/iocf.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/join.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/list.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/map.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/mcall.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/obj.py +2 -2
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ovar.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/ref.py +3 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/refs.py +3 -2
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/val.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/var.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/xfile.py +1 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz/logz.py +19 -2
- buildz-0.6.36/buildz/pathz.py +33 -0
- buildz-0.6.36/buildz/tools.py +5 -0
- {buildz-0.6.35 → buildz-0.6.36/buildz.egg-info}/PKG-INFO +3 -1
- {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/SOURCES.txt +4 -0
- {buildz-0.6.35 → buildz-0.6.36}/setup.py +1 -1
- buildz-0.6.35/buildz/auto/__init__.py +0 -1
- buildz-0.6.35/buildz/tools.py +0 -4
- {buildz-0.6.35 → buildz-0.6.36}/LICENSE +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/MANIFEST.in +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/__main__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/argx.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/cache.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/config.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/dbs.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal_list.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/deal_type.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/defs.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/factory.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/init.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/log.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/request.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/run.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/save.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/cache/cache.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/config/base.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/config/config.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/fp.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/item1.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/item2.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/res/data/test.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/test/xtest.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/auto/verify.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/cmd.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/__main__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/postgresqlz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/install.txt +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/run.conf +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/runz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/db/tls.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/fio.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/html/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/html/test/demo.html +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/html/test/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/html/xml.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/init.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/ioc_deal/init.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/ioc/wrap.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/pyz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/test_xfind.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/time/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/time/timez.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/tz/xfind.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/code.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/file.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/mapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/read.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/readz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/stack.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/write.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/listmapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/__init__.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/conf.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/data.js +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/test.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz/xz/trs.py +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.35 → buildz-0.6.36}/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.36
|
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
|
@@ -34,6 +34,8 @@ License-File: LICENSE
|
|
34
34
|
运行python -m buildz查看帮助
|
35
35
|
|
36
36
|
持续更新中。。。
|
37
|
+
2024/12/22:
|
38
|
+
增加pathz模块,方便处理路径,修改ioc和db
|
37
39
|
2024/12/18:
|
38
40
|
增加数据映射xz,数据库db增加类似orm功能以及表和索引结构查询功能(目前只写了mysql,oracle,sqlite3的查询),配置文件读写xf的输出增加对ListMap的支持(dumpx, dumpxf)
|
39
41
|
2024/11/11:
|
@@ -0,0 +1,199 @@
|
|
1
|
+
#
|
2
|
+
|
3
|
+
from .. import xf, fz
|
4
|
+
from .. import ioc
|
5
|
+
from ..base import Base
|
6
|
+
from ..ioc import wrap
|
7
|
+
from .. import logz
|
8
|
+
ns = wrap.ns("buildz.cache")
|
9
|
+
import os,re
|
10
|
+
|
11
|
+
|
12
|
+
@ns.obj(id="cache.save")
|
13
|
+
@ns.obj_args("ref, cache.file", "ref, log")
|
14
|
+
class Save(Base):
|
15
|
+
def init(self, cache, log, fkey = "cache.save", fp = None):
|
16
|
+
self.fkey = fkey
|
17
|
+
self.cache = cache
|
18
|
+
self.log = log.tag("Cache.Save")
|
19
|
+
self.fp = fp
|
20
|
+
def save(self):
|
21
|
+
fp = self.fp
|
22
|
+
if fp is None:
|
23
|
+
self.log.warn(f"cache not save cause 'cache.save' is None")
|
24
|
+
return False
|
25
|
+
fz.makefdir(fp)
|
26
|
+
rst = self.cache.data
|
27
|
+
rs = xf.dumps(rst, format=True).encode("utf-8")
|
28
|
+
fz.write(rs, fp, 'wb')
|
29
|
+
return True
|
30
|
+
def call(self, maps, fp):
|
31
|
+
fp = xf.get(maps, self.fkey, None)
|
32
|
+
fp = self.cache.rfp(fp)
|
33
|
+
self.fp = fp
|
34
|
+
return self.save()
|
35
|
+
|
36
|
+
pass
|
37
|
+
class CacheKey(Base):
|
38
|
+
def init(self, cache, key):
|
39
|
+
self.cache = cache
|
40
|
+
self.key = key
|
41
|
+
def has(self):
|
42
|
+
return self.cache.has(self.key)
|
43
|
+
def set(self, val):
|
44
|
+
return self.cache.set(self.key, val)
|
45
|
+
def get(self):
|
46
|
+
return self.cache.get(self.key)
|
47
|
+
def call(self, *args):
|
48
|
+
if len(args)==0:
|
49
|
+
return self.get()
|
50
|
+
elif len(args)==1:
|
51
|
+
return self.set(args[0])
|
52
|
+
else:
|
53
|
+
assert 0
|
54
|
+
@ns.obj(id="cache.file")
|
55
|
+
@ns.obj_args("ref, fps, cache.js","ref, log, null", "ref, rfp.current.first, false", "ref, split, .", "ref, key.currents, buildz.cache.path.currents", "ref, key.basedir, buildz.cache.path.basedir", "ref, save.index, 0", "ref, save.auto, false")
|
56
|
+
class Cache(Base):
|
57
|
+
def bind(self, key):
|
58
|
+
return CacheKey(self, key)
|
59
|
+
def has(self, key):
|
60
|
+
ks = key.split(self.spt)
|
61
|
+
return xf.has(self.data, ks)
|
62
|
+
def get(self, key):
|
63
|
+
ks = key.split(self.spt)
|
64
|
+
return xf.gets(self.data, ks)
|
65
|
+
def set(self, key, val):
|
66
|
+
xf.sets(self.data, key.split(self.spt), val)
|
67
|
+
if self.auto_save:
|
68
|
+
self.save()
|
69
|
+
def remove(self, key):
|
70
|
+
xf.removes(self.data, key.split(self.spt))
|
71
|
+
def init(self, fps="cache.js", log=None, current_first=False, spt = ".", key_currents = "buildz.cache.path.currents", key_basedir = "buildz.cache.path.basedir", save_index = 0, auto_save = False):
|
72
|
+
if type(fps) not in (tuple, list):
|
73
|
+
fps = [fps]
|
74
|
+
self.fps = fps
|
75
|
+
self.spt = spt
|
76
|
+
self.current_first = current_first
|
77
|
+
self.log = logz.make(log)(self)
|
78
|
+
self.key_currents = key_currents
|
79
|
+
self.key_basedir = key_basedir
|
80
|
+
self.save_index = save_index
|
81
|
+
self.data = {}
|
82
|
+
self.auto_save = auto_save
|
83
|
+
def set_currents(self, dp):
|
84
|
+
if type(dp)!=list:
|
85
|
+
dp = [dp]
|
86
|
+
self.set(self.key_currents, dp)
|
87
|
+
def add_currents(self, dp):
|
88
|
+
dps = self.get_currents()
|
89
|
+
if dps is None:
|
90
|
+
dps = []
|
91
|
+
if dp in dps:
|
92
|
+
return
|
93
|
+
dps.append(dp)
|
94
|
+
self.set_currents(dps)
|
95
|
+
def get_currents(self):
|
96
|
+
dps = self.get(self.key_currents)
|
97
|
+
if dps is None:
|
98
|
+
dps = []
|
99
|
+
if type(dps)!=list:
|
100
|
+
dps = [dps]
|
101
|
+
return dps
|
102
|
+
def set_basedir(self, dp):
|
103
|
+
self.set(self.key_basedir, dp)
|
104
|
+
def get_basedir(self):
|
105
|
+
return self.get(self.key_basedir)
|
106
|
+
def rfp(self, fp):
|
107
|
+
if fz.is_abs(fp):
|
108
|
+
return fp
|
109
|
+
dps = [None,"."]
|
110
|
+
cfps = self.get_currents()
|
111
|
+
if cfps is not None:
|
112
|
+
if self.current_first:
|
113
|
+
dps = cfps+dps
|
114
|
+
else:
|
115
|
+
dps = dps+cfps
|
116
|
+
basedir = self.get_basedir()
|
117
|
+
if basedir is not None:
|
118
|
+
dps = [basedir]+dps
|
119
|
+
for dp in dps:
|
120
|
+
_fp = fp
|
121
|
+
if dp is not None:
|
122
|
+
_fp = os.path.join(dp, fp)
|
123
|
+
if os.path.isfile(_fp):
|
124
|
+
return _fp
|
125
|
+
if basedir is not None:
|
126
|
+
fp = os.path.join(basedir, fp)
|
127
|
+
return fp
|
128
|
+
def save(self, fp = None):
|
129
|
+
if fp is None:
|
130
|
+
fp = self.fps[self.save_index]
|
131
|
+
fp = self.rfp(fp)
|
132
|
+
fz.makefdir(fp)
|
133
|
+
rst = self.data
|
134
|
+
rs = xf.dumps(rst, format=True).encode("utf-8")
|
135
|
+
fz.write(rs, fp, 'wb')
|
136
|
+
def load(self, fps = None):
|
137
|
+
if fps is None:
|
138
|
+
fps = self.fps
|
139
|
+
data = {}
|
140
|
+
for fp in fps:
|
141
|
+
fp = self.rfp(fp)
|
142
|
+
if os.path.isfile(fp):
|
143
|
+
self.log.info(f"load cache from {fp}")
|
144
|
+
xdata = xf.flush_maps(xf.loadf(fp),visit_list=True)
|
145
|
+
xf.fill(xdata, data, replace=1)
|
146
|
+
xf.fill(data, self.data, replace=0)
|
147
|
+
|
148
|
+
pass
|
149
|
+
|
150
|
+
@ns.obj(id="cache.mem")
|
151
|
+
@ns.obj_args("ref, log, null")
|
152
|
+
class Mem(Cache):
|
153
|
+
def init(self, log=None):
|
154
|
+
super().init(None, log)
|
155
|
+
|
156
|
+
pass
|
157
|
+
@ns.obj(id="cache")
|
158
|
+
@ns.obj_args("ref, cache.file", "ref, cache.mem")
|
159
|
+
class Caches(Base):
|
160
|
+
def init(self, cache, mem):
|
161
|
+
self.cache = cache
|
162
|
+
self.mem = mem
|
163
|
+
self.caches = [cache, mem]
|
164
|
+
self.set = cache.set
|
165
|
+
self.remove = cache.remove
|
166
|
+
self.call=cache.call
|
167
|
+
self.rfp = cache.rfp
|
168
|
+
self.get_currents = cache.get_currents
|
169
|
+
self.add_currents = cache.add_currents
|
170
|
+
self.set_currents = cache.set_currents
|
171
|
+
self.set_basedir = cache.set_basedir
|
172
|
+
self.get_basedir = cache.get_basedir
|
173
|
+
self.has_file = cache.has
|
174
|
+
self.has_mem = mem.has
|
175
|
+
def get_file(self, key):
|
176
|
+
return self.cache.get(key)
|
177
|
+
def get_mem(self, key):
|
178
|
+
return self.mem.get(key)
|
179
|
+
def set_file(self, key, val):
|
180
|
+
self.cache.set(key,val)
|
181
|
+
def set_mem(self, key, val):
|
182
|
+
self.mem.set(key, val)
|
183
|
+
def remove_file(self, key):
|
184
|
+
self.cache.remove(key)
|
185
|
+
def remove_mem(self, key):
|
186
|
+
self.mem.remove(key)
|
187
|
+
def get(self, key):
|
188
|
+
for cache in self.caches:
|
189
|
+
v = cache.get(key)
|
190
|
+
if v is not None:
|
191
|
+
return v
|
192
|
+
return None
|
193
|
+
def has(self, key):
|
194
|
+
for cache in self.caches:
|
195
|
+
if cache.has(key):
|
196
|
+
return True
|
197
|
+
return False
|
198
|
+
|
199
|
+
pass
|
File without changes
|
@@ -130,26 +130,33 @@ class SimpleDv(ItDv):
|
|
130
130
|
keys = [keys]
|
131
131
|
update = False
|
132
132
|
conds = ""
|
133
|
-
if len(keys)>0:
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
133
|
+
# if len(keys)>0:
|
134
|
+
# need_query = True
|
135
|
+
# conds = []
|
136
|
+
# for k in keys:
|
137
|
+
# if k not in maps:
|
138
|
+
# need_query = False
|
139
|
+
# break
|
140
|
+
# v = maps[k]
|
141
|
+
# if type(v)==str:
|
142
|
+
# v = f"'{v}'"
|
143
|
+
# if v is not None:
|
144
|
+
# cond = f"{k} = {v}"
|
145
|
+
# else:
|
146
|
+
# cond = f"{k} is null"
|
147
|
+
# conds.append(cond)
|
148
|
+
# if need_query:
|
149
|
+
# conds = " and ".join(conds)
|
150
|
+
# sql_search = f"select count(*) from {table} where {conds}"
|
151
|
+
# rst = self.query(sql_search, as_map = False)[1][0]
|
152
|
+
# update = rst>0
|
153
|
+
kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
|
154
|
+
sets = [f"{k}={v}" for k,v in kvs]
|
155
|
+
sets = ",".join(sets)
|
156
|
+
ks = ",".join([kv[0] for kv in kvs])
|
157
|
+
vs = ",".join([str(kv[1]) for kv in kvs])
|
158
|
+
sql = f"insert into {table}({ks}) values({vs}) on duplicate key update {sets}"
|
159
|
+
return self.execute(sql)
|
153
160
|
if update:
|
154
161
|
keys = set(keys)
|
155
162
|
kvs = [[k,tls.py2sql(v)] for k,v in maps.items() if k not in keys]
|
@@ -157,10 +164,10 @@ class SimpleDv(ItDv):
|
|
157
164
|
sets = ",".join(sets)
|
158
165
|
sql = f"update {table} set {sets} where {conds}"
|
159
166
|
else:
|
160
|
-
kvs = [[k,
|
167
|
+
kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
|
161
168
|
ks = ",".join([kv[0] for kv in kvs])
|
162
169
|
vs = ",".join([str(kv[1]) for kv in kvs])
|
163
|
-
sql = f"insert into {table}({ks}) values({vs})
|
170
|
+
sql = f"insert into {table}({ks}) values({vs})"
|
164
171
|
return self.execute(sql)
|
165
172
|
|
166
173
|
pass
|
@@ -20,8 +20,10 @@ def deal_item(item, conf):
|
|
20
20
|
def deal_key(it, conf):
|
21
21
|
data_keys = xf.g(conf, data_keys=[])
|
22
22
|
tmp = {}
|
23
|
+
#print(f"[TESTZ] conf: {conf}, it: {it}")
|
23
24
|
for i in range(min(len(it), len(data_keys))):
|
24
25
|
tmp[data_keys[i]] = it[i]
|
26
|
+
#print(f"[TESTZ] tmp: {tmp}")
|
25
27
|
sql_key = tmp['sql_key']
|
26
28
|
sql_def = tmp['sql_def']
|
27
29
|
py_key = xf.g(tmp, py_key=None)
|
@@ -31,11 +33,12 @@ def deal_key(it, conf):
|
|
31
33
|
xf.g(conf, vars=[]).append(sql_key+" "+sql_def)
|
32
34
|
def makes(datas, data_keys = "sql_key,sql_def,py_key".split(",")):
|
33
35
|
if type(datas)==dict:
|
34
|
-
rst = [make(v, k) for k,v in datas.items()]
|
36
|
+
rst = [make(v, k, py_name = k) for k,v in datas.items()]
|
35
37
|
else:
|
36
38
|
rst = [make(it) for it in datas]
|
37
39
|
return rst
|
38
|
-
def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
|
40
|
+
def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(","), py_name=None):
|
41
|
+
#print(f"[TESTZ] MARK: {data}")
|
39
42
|
"""
|
40
43
|
从配置中生成建表语句,删表语句和orm对象
|
41
44
|
输入:
|
@@ -75,13 +78,16 @@ def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
|
|
75
78
|
elif type(data) == dict:
|
76
79
|
data = dict2list(data)
|
77
80
|
conf = {}
|
78
|
-
xf.s(conf, sql_before = [], sql_after = [], sql_delete_before=[], sql_delete_after=[],auto_translate=True,table=table,keys=[],py2sqls={},query_keys=None, data_keys = data_keys, vars=[])
|
81
|
+
xf.s(conf, sql_before = [], sql_after = [], sql_delete_before=[], sql_delete_after=[],auto_translate=True,table=table,keys=[],py2sqls={},query_keys=None, data_keys = data_keys, vars=[], py_name = py_name)
|
79
82
|
for it in data:
|
80
83
|
if len(it)==1 and type(it[0]) in (list, tuple):
|
81
84
|
deal_item(it[0], conf)
|
82
85
|
else:
|
83
86
|
deal_key(it, conf)
|
84
87
|
table = xf.g(conf, table=table)
|
88
|
+
py_name = xf.g(conf, py_name = py_name)
|
89
|
+
if py_name is None:
|
90
|
+
py_name = table
|
85
91
|
vars = xf.g(conf, vars = [])
|
86
92
|
vars = ",".join(vars)
|
87
93
|
assert table is not None
|
@@ -93,7 +99,7 @@ def make(data, table=None, data_keys = "sql_key,sql_def,py_key".split(",")):
|
|
93
99
|
sqls_del = sqls[2]+[sql_del]+sqls[3]
|
94
100
|
sqls = [sqls_crt, sqls_del]
|
95
101
|
sqls = [(";\n".join(k)+";").replace(";;",";") for k in sqls]
|
96
|
-
obj = TableObject(*xf.g(conf, keys=[], table=table, py2sqls = None, query_keys=None,auto_translate=True), sql_create = sqls[0], sql_delete = sqls[1])
|
102
|
+
obj = TableObject(*xf.g(conf, keys=[], table=table, py2sqls = None, query_keys=None,auto_translate=True), sql_create = sqls[0], sql_delete = sqls[1], py_name = py_name)
|
97
103
|
return sqls, obj
|
98
104
|
|
99
105
|
pass
|
@@ -108,10 +114,13 @@ class TableObject(Base):
|
|
108
114
|
auto_translate:
|
109
115
|
对于没有在py2sqls自定义映射的表字段,是否自动转换(py|autoTran<=>auto_tran|sql)
|
110
116
|
"""
|
111
|
-
def init(self, keys, table=None, py2sqls=None, query_keys=None, auto_translate=True, dv = None, sql_create=None, sql_delete=None):
|
117
|
+
def init(self, keys, table=None, py2sqls=None, query_keys=None, auto_translate=True, dv = None, sql_create=None, sql_delete=None, py_name = None):
|
112
118
|
if table is None:
|
113
119
|
table = tls.lower(self.__class__.__name__)
|
114
120
|
self.table = table
|
121
|
+
if py_name is None:
|
122
|
+
py_name = table
|
123
|
+
self.py_name = py_name
|
115
124
|
if py2sqls is None:
|
116
125
|
py2sqls = {}
|
117
126
|
if type(py2sqls) in (list, tuple):
|
@@ -139,6 +148,7 @@ class TableObject(Base):
|
|
139
148
|
self.sql_delete = sql_delete
|
140
149
|
def create(self, dv=None):
|
141
150
|
assert self.sql_create is not None
|
151
|
+
#print(f"[TESTZ] sql_create: {self.sql_create}")
|
142
152
|
dv = self.rdv(dv)
|
143
153
|
dv.executes(self.sql_create)
|
144
154
|
def delete(self, dv=None):
|
@@ -153,7 +163,7 @@ class TableObject(Base):
|
|
153
163
|
if hasattr(obj, k):
|
154
164
|
tmp[k] = getattr(obj, k)
|
155
165
|
obj = tmp
|
156
|
-
obj = {self.py2sqls[k]:v for k,v in obj.items()}
|
166
|
+
obj = {self.py2sqls[k]:v for k,v in obj.items() if k in self.py2sqls}
|
157
167
|
return obj
|
158
168
|
def toPy(self, obj):
|
159
169
|
if type(obj)!=dict:
|
@@ -178,17 +188,35 @@ class TableObject(Base):
|
|
178
188
|
def queryAll(self, dv=None, sql2py=True):
|
179
189
|
sql = f"select * from {self.table};"
|
180
190
|
return self.query(sql, dv, sql2py)
|
191
|
+
def filterSql(self, obj):
|
192
|
+
if type(obj)!=dict:
|
193
|
+
tmp = {}
|
194
|
+
for k in self.py2sqls:
|
195
|
+
if hasattr(obj, k):
|
196
|
+
tmp[k] = getattr(obj, k)
|
197
|
+
obj = tmp
|
198
|
+
obj = {k:v for k,v in obj.items() if k in self.keys}
|
199
|
+
return obj
|
181
200
|
def save(self, obj, dv=None, py2sql = True, commit=False, check = True):
|
182
201
|
dv = self.rdv(dv)
|
183
202
|
if type(obj) not in [list, tuple]:
|
184
203
|
obj = [obj]
|
185
204
|
if py2sql:
|
186
205
|
obj = [self.toSql(k) for k in obj]
|
206
|
+
else:
|
207
|
+
obj = [self.filterSql(k) for k in obj]
|
187
208
|
query_keys = self.query_keys
|
188
209
|
if not check:
|
189
210
|
query_keys = None
|
190
211
|
_ = [dv.insert_or_update(k, self.table, query_keys) for k in obj]
|
191
212
|
if commit:
|
192
|
-
dv.execute("commit
|
213
|
+
dv.execute("commit")
|
193
214
|
return _
|
215
|
+
def clean(self, dv=None,commit = False):
|
216
|
+
dv = self.rdv(dv)
|
217
|
+
dv.execute(f"delete from {self.table}")
|
218
|
+
if commit:
|
219
|
+
dv.execute("commit")
|
220
|
+
|
221
|
+
|
194
222
|
|
@@ -4,6 +4,7 @@ import sys,os
|
|
4
4
|
from .basez import SimpleDv, fetch
|
5
5
|
from .structz import CMD
|
6
6
|
from buildz import xf,fz
|
7
|
+
from buildz.db import tls
|
7
8
|
class Db(SimpleDv):
|
8
9
|
# func to impl:
|
9
10
|
def to_list(self, rst):
|
@@ -89,6 +90,21 @@ class Db(SimpleDv):
|
|
89
90
|
rst = rst[1:]
|
90
91
|
rst = [{k:v for k,v in zip(keys, dt)} for dt in rst]
|
91
92
|
return rst
|
93
|
+
def insert_or_update(self, maps, table, keys = None):
|
94
|
+
if type(maps)!=dict:
|
95
|
+
maps = maps.__dict__
|
96
|
+
if keys is None:
|
97
|
+
keys = []
|
98
|
+
if type(keys) not in (list, tuple):
|
99
|
+
keys = [keys]
|
100
|
+
kvs = [[k,tls.py2sql(v)] for k,v in maps.items()]
|
101
|
+
sets = [f"{k}={v}" for k,v in kvs]
|
102
|
+
sets = ",".join(sets)
|
103
|
+
ks = ",".join([kv[0] for kv in kvs])
|
104
|
+
vs = ",".join([str(kv[1]) for kv in kvs])
|
105
|
+
sql = f"insert into {table}({ks}) values({vs}) ON CONFLICT DO UPDATE SET {sets}"
|
106
|
+
#print(f"[TESTZ] sql: {sql}")
|
107
|
+
return self.execute(sql)
|
92
108
|
|
93
109
|
pass
|
94
110
|
def build(argv, conf):
|
@@ -33,7 +33,7 @@ class EncapeData(Base):
|
|
33
33
|
包含data id对应的配置,配置文件id,配置文件对象
|
34
34
|
[object.test, call, ]
|
35
35
|
"""
|
36
|
-
def __init__(self, data, conf=None, local = False, type = None, src = None, info = None, confs = None):
|
36
|
+
def __init__(self, data, conf=None, local = False, type = None, src = None, info = None, confs = None, force_new = False):
|
37
37
|
"""
|
38
38
|
data: 配置数据
|
39
39
|
conf: 配置数据对应的配置文件的管理器
|
@@ -42,6 +42,7 @@ class EncapeData(Base):
|
|
42
42
|
src: 源对象,配置数据生成的对象调用conf获取对象,会有这个字段,目前只有object会放这个字段,其他要么透传要么不传
|
43
43
|
info: 额外的调用信息,目前只有object会用到里面的id字段,作为单例额外输入
|
44
44
|
"""
|
45
|
+
self.force_new = force_new
|
45
46
|
if typez(data)==dict:
|
46
47
|
pid = xf.g1(data, parent=None, template=None, temp=None)
|
47
48
|
if pid is not None:
|
@@ -77,8 +78,8 @@ class EncapeData(Base):
|
|
77
78
|
self.info = info
|
78
79
|
def deal(self, remove = False):
|
79
80
|
if self.conf is None:
|
80
|
-
return self.confs.get(self, src = self.src, info=self.info, remove = remove)
|
81
|
-
return self.conf.get(self, src = self.src, info=self.info, remove = remove)
|
81
|
+
return self.confs.get(self, src = self.src, info=self.info, remove = remove, force_new = self.force_new)
|
82
|
+
return self.conf.get(self, src = self.src, info=self.info, remove = remove, force_new = self.force_new)
|
82
83
|
|
83
84
|
|
84
85
|
pass
|
@@ -201,7 +201,7 @@ class Conf(Base):
|
|
201
201
|
return self.confs.has_var(key)
|
202
202
|
def pop_var(self, key):
|
203
203
|
self.confs.pop_var(key)
|
204
|
-
def get_obj(self, id, src = None, info=None, remove = False):
|
204
|
+
def get_obj(self, id, src = None, info=None, remove = False, force_new = False):
|
205
205
|
"""
|
206
206
|
根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
|
207
207
|
"""
|
@@ -213,9 +213,12 @@ class Conf(Base):
|
|
213
213
|
if conf is None:
|
214
214
|
raise IdNotFoundError(f"can't find conf of {id}")
|
215
215
|
return None
|
216
|
+
conf.force_new = force_new
|
216
217
|
if conf.conf is None:
|
217
218
|
if remove:
|
218
219
|
return None
|
220
|
+
# 不太记得了,应该是错误代码
|
221
|
+
print(f"[TESTZ] error code: {conf.conf}")
|
219
222
|
return conf.data()
|
220
223
|
deal = self.get_deal(conf.type)
|
221
224
|
if deal is None:
|
@@ -405,7 +405,7 @@ class Confs(Base):
|
|
405
405
|
return self.get_obj(*args, **maps)
|
406
406
|
def remove(self, *a,**b):
|
407
407
|
return self.get_obj(*a, **b, remove=True)
|
408
|
-
def get_obj(self, id, sid = None, src = None, info = None, remove = False):
|
408
|
+
def get_obj(self, id, sid = None, src = None, info = None, remove = False, force_new = False):
|
409
409
|
"""
|
410
410
|
根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
|
411
411
|
"""
|
@@ -429,6 +429,7 @@ class Confs(Base):
|
|
429
429
|
raise IOCError(f"confs: can't find deal of {id}, type = {conf.type}")
|
430
430
|
return None
|
431
431
|
#print(f"get_obj: {id}({sid}), conf: {conf}, deal: {deal}, type: {conf.type}")
|
432
|
+
conf.force_new = force_new
|
432
433
|
if not remove:
|
433
434
|
obj = deal(conf)
|
434
435
|
else:
|
@@ -19,8 +19,9 @@ class Decorator(Base):
|
|
19
19
|
return self.namespace
|
20
20
|
def regist(self, key, fc):
|
21
21
|
self.fcs[key] = fc
|
22
|
-
def get_conf(self, src):
|
23
|
-
ns
|
22
|
+
def get_conf(self, src, ns = None):
|
23
|
+
if ns is None:
|
24
|
+
ns = self.namespace
|
24
25
|
if src in self._ns:
|
25
26
|
ns = self._ns[src]
|
26
27
|
if ns not in self.confs:
|
@@ -33,8 +34,8 @@ class Decorator(Base):
|
|
33
34
|
if tag not in conf:
|
34
35
|
conf[tag]=[]
|
35
36
|
return conf[tag][index]
|
36
|
-
def add(self, tag, data, src = None):
|
37
|
-
conf = self.get_conf(src)
|
37
|
+
def add(self, tag, data, src = None, ns = None):
|
38
|
+
conf = self.get_conf(src, ns)
|
38
39
|
if tag not in conf:
|
39
40
|
conf[tag]=[]
|
40
41
|
id = len(conf[tag])
|
@@ -45,12 +46,12 @@ class Decorator(Base):
|
|
45
46
|
if tag not in conf:
|
46
47
|
conf[tag]={}
|
47
48
|
conf[tag][key]=val
|
48
|
-
def add_datas(self, item, key):
|
49
|
+
def add_datas(self, item, key=None, ns = None):
|
49
50
|
if type(item)==str:
|
50
51
|
item = xf.loads(item)
|
51
|
-
return self.add("datas", item, key)
|
52
|
-
def get_datas(self, id):
|
53
|
-
return self.get("datas", id)
|
52
|
+
return self.add("datas", item, key, ns)
|
53
|
+
def get_datas(self, id, key=None):
|
54
|
+
return self.get("datas", id, key)
|
54
55
|
def set_datas(self, id, val):
|
55
56
|
return self.set("datas", id, val)
|
56
57
|
def set_envs(self, key, val):
|
@@ -91,6 +92,15 @@ class NameSpace(Base):
|
|
91
92
|
obj = Fcs()
|
92
93
|
for k,f in fcs.items():
|
93
94
|
setattr(obj, k, self.fc(namespace, f))
|
95
|
+
def wfc(rfc, *a, **b):
|
96
|
+
with self.lock:
|
97
|
+
ns = self.decorator.curr_ns()
|
98
|
+
self.decorator.ns(namespace)
|
99
|
+
rst = rfc(*a,**b)
|
100
|
+
self.decorator.fcns(namespace, rst)
|
101
|
+
self.decorator.ns(ns)
|
102
|
+
return rst
|
103
|
+
setattr(obj, "wrap", wfc)
|
94
104
|
return obj
|
95
105
|
|
96
106
|
pass
|
@@ -16,8 +16,19 @@
|
|
16
16
|
},
|
17
17
|
{
|
18
18
|
nullable: 0,
|
19
|
-
|
19
|
+
out: 1,
|
20
|
+
conf: {
|
21
|
+
//sort: -1,
|
22
|
+
data:[
|
23
|
+
{key: key, nullable: 0}
|
24
|
+
{key: force_new, default: false},
|
25
|
+
]
|
26
|
+
}
|
20
27
|
},
|
28
|
+
// {
|
29
|
+
// nullable: 0,
|
30
|
+
// key: key
|
31
|
+
// },
|
21
32
|
{
|
22
33
|
nullable:1
|
23
34
|
key:default
|
@@ -16,8 +16,19 @@
|
|
16
16
|
},
|
17
17
|
{
|
18
18
|
nullable: 0,
|
19
|
-
|
19
|
+
out: 1,
|
20
|
+
conf: {
|
21
|
+
//sort: -1,
|
22
|
+
data:[
|
23
|
+
{key: key, nullable: 0}
|
24
|
+
{key: force_new, default: false},
|
25
|
+
]
|
26
|
+
}
|
20
27
|
},
|
28
|
+
// {
|
29
|
+
// nullable: 0,
|
30
|
+
// key: key
|
31
|
+
// },
|
21
32
|
{
|
22
33
|
nullable: 1,
|
23
34
|
key: info
|