buildz 0.6.22__tar.gz → 0.6.23__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.23}/PKG-INFO +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/cache.py +30 -8
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/config.py +3 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/dbs.py +15 -2
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/deal_list.py +3 -2
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/defs.py +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/factory.py +4 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/log.py +6 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/request.py +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/run.py +11 -3
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/save.py +10 -3
- buildz-0.6.23/buildz/auto/test/res/config/base.js +13 -0
- buildz-0.6.23/buildz/auto/test/res/config/config.js +4 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.23/buildz/auto/test/res}/data/test.js +11 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/test/test.py +3 -3
- buildz-0.6.23/buildz/auto/test/xtest.py +20 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/verify.py +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/runz.py +2 -2
- {buildz-0.6.22 → buildz-0.6.23}/buildz/fz/__init__.py +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/fz/fio.py +17 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc/confs.py +2 -0
- buildz-0.6.23/buildz/ioc/ioc/decorator.py +97 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/obj.py +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/wrap.py +1 -1
- buildz-0.6.23/buildz/tz/log.py +84 -0
- {buildz-0.6.22 → buildz-0.6.23/buildz.egg-info}/PKG-INFO +1 -1
- {buildz-0.6.22 → buildz-0.6.23}/buildz.egg-info/SOURCES.txt +8 -6
- {buildz-0.6.22 → buildz-0.6.23}/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.23}/LICENSE +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/MANIFEST.in +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/README.md +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/argx.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/deal_type.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/auto/init.py +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.23/buildz/auto/test/res}/cache/cache.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.23/buildz/auto/test/res}/data/fp.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.23/buildz/auto/test/res}/data/item1.js +0 -0
- {buildz-0.6.22/buildz/auto/test → buildz-0.6.23/buildz/auto/test/res}/data/item2.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/cmd.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/basez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/clickhousez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/lib/readme +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/mysqlz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/oraclez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/dv/structz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/install.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/db/run.conf +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/ioc/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/ioc/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/myers/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/myers/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/conf/ioc.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/conf/main.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/conf/myers.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/conf/search.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/conf/xf.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/help/default.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/help/ioc.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/help/myers.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/help/search.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/help/xf.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/res/test.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/search/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/search/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/xf/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/demo/xf/help.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/fz/dirz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/fz/fhs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/fz/lsf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/html/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/html/test/demo.html +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/html/test/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/html/xml.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/init.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc/conf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc/single.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/branch.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/call.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/calls.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/branch_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/iocf_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/refs_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/deal.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/demo.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/env.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/init.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/ioc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/iocf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/join.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/list.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/map.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/mcall.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/ovar.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/ref.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/refs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/val.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/var.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/ioc/ioc_deal/xfile.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/pyz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tools.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/myers_diff.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/time/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/time/timez.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/getch.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/lx.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/tz/tio/win.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/__init__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/__main__.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/code.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/code_modify.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/copy_old.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/file.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/buffer.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/lr.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/lrval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/nextz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/setz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/spc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/spt.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/exp.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/item.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loader/pos.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/buffer.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/listmapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/lr.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/lrval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/nextz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/setz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/spc.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/spt.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/strz_new.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/deal/strz_old.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/exp.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/item.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/pos.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/test.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/loaderz/test1.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/read.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/readz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/stack.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/write.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/base.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/conf.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/deal/jsonval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/deal/listz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/deal/mapz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/deal/reval.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/deal/strz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/itemz.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/writer/mg.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz/xf/xargs.py +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz.egg-info/dependency_links.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/buildz.egg-info/top_level.txt +0 -0
- {buildz-0.6.22 → buildz-0.6.23}/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.23
|
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:
|
@@ -51,24 +51,30 @@ pass
|
|
51
51
|
@wrap.obj(id="cache.save")
|
52
52
|
@wrap.obj_args("ref, cache.file", "ref, log")
|
53
53
|
class Save(Base):
|
54
|
-
def init(self, cache, log, fkey = "cache.save"):
|
54
|
+
def init(self, cache, log, fkey = "cache.save", fp = None):
|
55
55
|
self.fkey = fkey
|
56
56
|
self.cache = cache
|
57
|
-
self.log = log
|
58
|
-
|
59
|
-
|
57
|
+
self.log = log.tag("Cache.Save")
|
58
|
+
self.fp = fp
|
59
|
+
def save(self):
|
60
|
+
fp = self.fp
|
60
61
|
if fp is None:
|
61
62
|
self.log.warn(f"cache not save cause 'cache.save' is None")
|
62
|
-
return
|
63
|
+
return False
|
63
64
|
fz.makefdir(fp)
|
64
65
|
rst = self.cache.data
|
65
66
|
rs = xf.dumps(rst, format=True).encode("utf-8")
|
66
67
|
fz.write(rs, fp, 'wb')
|
67
68
|
return True
|
69
|
+
def call(self, maps, fp):
|
70
|
+
fp = xf.get(maps, self.fkey, None)
|
71
|
+
fp = self.cache.rfp(fp)
|
72
|
+
self.fp = fp
|
73
|
+
return self.save()
|
68
74
|
|
69
75
|
pass
|
70
76
|
@wrap.obj(id="cache.file")
|
71
|
-
@wrap.obj_args("
|
77
|
+
@wrap.obj_args("mcall, log, tag, [Cache.File]", "env, cache.rfp.current.first, false")
|
72
78
|
class Cache(Base):
|
73
79
|
def get(self, key):
|
74
80
|
ks = key.split(".")
|
@@ -96,10 +102,18 @@ class Cache(Base):
|
|
96
102
|
self.set_current(dps)
|
97
103
|
def get_current(self):
|
98
104
|
dps = self.get("cache.path.current")
|
105
|
+
if dps is None:
|
106
|
+
dps = []
|
99
107
|
if type(dps)!=list:
|
100
108
|
dps = [dps]
|
101
109
|
return dps
|
110
|
+
def set_basedir(self, dp):
|
111
|
+
self.set("cache.path.base", dp)
|
112
|
+
def get_basedir(self):
|
113
|
+
return self.get("cache.path.base")
|
102
114
|
def rfp(self, fp):
|
115
|
+
if fz.is_abs(fp):
|
116
|
+
return fp
|
103
117
|
dps = [None,"."]
|
104
118
|
cfps = self.get_current()
|
105
119
|
if cfps is not None:
|
@@ -107,12 +121,18 @@ class Cache(Base):
|
|
107
121
|
dps = cfps+dps
|
108
122
|
else:
|
109
123
|
dps = dps+cfps
|
124
|
+
basedir = self.get_basedir()
|
125
|
+
if basedir is not None:
|
126
|
+
dps = [basedir]+dps
|
110
127
|
for dp in dps:
|
111
128
|
_fp = fp
|
112
129
|
if dp is not None:
|
113
130
|
_fp = os.path.join(dp, fp)
|
114
131
|
if os.path.isfile(_fp):
|
115
132
|
return _fp
|
133
|
+
basedir = self.get_basedir()
|
134
|
+
if basedir is not None:
|
135
|
+
fp = os.path.join(basedir, fp)
|
116
136
|
return fp
|
117
137
|
def call(self, maps, fp):
|
118
138
|
fp = xf.get(maps, self.fkey, "cache.js")
|
@@ -132,7 +152,7 @@ class Cache(Base):
|
|
132
152
|
pass
|
133
153
|
|
134
154
|
@wrap.obj(id="cache.mem")
|
135
|
-
@wrap.obj_args("
|
155
|
+
@wrap.obj_args("mcall, log, tag, [Cache.Mem]")
|
136
156
|
class Mem(Cache):
|
137
157
|
def init(self, log, current_first=False, fkey = "mem"):
|
138
158
|
super().init(log)
|
@@ -152,6 +172,8 @@ class Caches(Base):
|
|
152
172
|
self.get_current = cache.get_current
|
153
173
|
self.add_current = cache.add_current
|
154
174
|
self.set_current = cache.set_current
|
175
|
+
self.set_basedir = cache.set_basedir
|
176
|
+
self.get_basedir = cache.get_basedir
|
155
177
|
def get_file(self, key):
|
156
178
|
return self.cache.get(key)
|
157
179
|
def get_mem(self, key):
|
@@ -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
|
|
@@ -0,0 +1,84 @@
|
|
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
|
+
class Log(Base):
|
11
|
+
def tag(self, _tag):
|
12
|
+
log = Log(self.shows, _tag, self)
|
13
|
+
return log
|
14
|
+
def get_tag(self):
|
15
|
+
return self._tag
|
16
|
+
def init(self, shows = None, tag= None, base = None):
|
17
|
+
if shows is None:
|
18
|
+
shows = ["info", "debug", "warn", "error"]
|
19
|
+
self.shows=shows
|
20
|
+
self._tag = tag
|
21
|
+
self.base = base
|
22
|
+
def xlog(self, level, *args):
|
23
|
+
if level not in self.shows:
|
24
|
+
return
|
25
|
+
self.log(level, self.tag, *args)
|
26
|
+
def log(self, level, tag, *args):
|
27
|
+
if self.base is not None:
|
28
|
+
return self.base.log(level, tag, *args)
|
29
|
+
raise Exception("unimpl")
|
30
|
+
def info(self, *args):
|
31
|
+
if "info" not in self.shows:
|
32
|
+
return
|
33
|
+
self.log("info", self._tag, *args)
|
34
|
+
def warn(self, *args):
|
35
|
+
if "warn" not in self.shows:
|
36
|
+
return
|
37
|
+
self.log("warn", self._tag, *args)
|
38
|
+
def debug(self, *args):
|
39
|
+
if "debug" not in self.shows:
|
40
|
+
return
|
41
|
+
self.log("debug", self._tag, *args)
|
42
|
+
def error(self, *args):
|
43
|
+
if "error" not in self.shows:
|
44
|
+
return
|
45
|
+
self.log("error", self._tag, *args)
|
46
|
+
|
47
|
+
pass
|
48
|
+
def replaces(s, *args):
|
49
|
+
for i in range(0,len(args),2):
|
50
|
+
k,v = args[i],args[i+1]
|
51
|
+
s = s.replace(k,v)
|
52
|
+
return s
|
53
|
+
|
54
|
+
pass
|
55
|
+
def mstr(s):
|
56
|
+
if s is None or len(s)==0:
|
57
|
+
return s
|
58
|
+
return s[:1].upper()+s[1:].lower()
|
59
|
+
class FpLog(Log):
|
60
|
+
def init(self, fp = None,shows =None, tag=None, format=None):
|
61
|
+
if format is None:
|
62
|
+
format = "[{LEVEL}] %Y-%m-%d %H:%M:%S {tag} {msg}\n"
|
63
|
+
self.format=format
|
64
|
+
super().init(shows, tag)
|
65
|
+
self.fp = fp
|
66
|
+
def log(self, level, tag, *args):
|
67
|
+
m_level = level.lower()
|
68
|
+
u_level = level.upper()
|
69
|
+
x_level = mstr(level)
|
70
|
+
args = [str(k) for k in args]
|
71
|
+
msg = " ".join(args)
|
72
|
+
if tag is None:
|
73
|
+
tag = "base"
|
74
|
+
rst = time.strftime(self.format, time.localtime(time.time()))
|
75
|
+
msg = replaces(rst, "{Level}", x_level, "{level}", m_level, "{LEVEL}", u_level, "{tag}", tag, "{msg}", msg)
|
76
|
+
# rst = rst.replace("{level}",level).replace("{tag}", tag).replace
|
77
|
+
# msg = f"[{level}] {date} {tag} {msg}\n"
|
78
|
+
sys.stdout.write(msg)
|
79
|
+
if self.fp is not None:
|
80
|
+
fp = time.strftime(self.fp)
|
81
|
+
fz.makefdir(fp)
|
82
|
+
fz.write(msg.encode("utf-8"), fp, 'ab')
|
83
|
+
|
84
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: buildz
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.23
|
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
|