usekit 0.1.2__tar.gz → 0.1.26__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.
- {usekit-0.1.2/usekit.egg-info → usekit-0.1.26}/PKG-INFO +28 -6
- {usekit-0.1.2 → usekit-0.1.26}/README.md +2 -2
- usekit-0.1.26/setup.py +80 -0
- usekit-0.1.26/usekit/.env.example +80 -0
- usekit-0.1.26/usekit/classes/common/init/helper_termux_storage.py +283 -0
- usekit-0.1.26/usekit/classes/core/env/loader_env.py +1117 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/base/use_base.py +7 -0
- usekit-0.1.26/usekit/classes/wrap/sub/use_support.py +210 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/sys/sys_yaml/sys_const.yaml +7 -7
- usekit-0.1.26/usekit/tools/navi/__init__.py +5 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/usemain.py +7 -1
- {usekit-0.1.2 → usekit-0.1.26/usekit.egg-info}/PKG-INFO +28 -6
- {usekit-0.1.2 → usekit-0.1.26}/usekit.egg-info/SOURCES.txt +4 -0
- usekit-0.1.26/usekit.egg-info/not-zip-safe +1 -0
- usekit-0.1.26/usekit.egg-info/requires.txt +11 -0
- usekit-0.1.2/setup.py +0 -31
- usekit-0.1.2/usekit/.env.example +0 -35
- usekit-0.1.2/usekit/classes/core/env/loader_env.py +0 -512
- usekit-0.1.2/usekit.egg-info/requires.txt +0 -2
- {usekit-0.1.2 → usekit-0.1.26}/MANIFEST.in +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/setup.cfg +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_debug.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_errors.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_safe.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_setupdebug.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_backup.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_diff.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_dotdict.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_dryrun.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_restore.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/helper_lazy.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/helper_normalize.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/keymap/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/keymap/helper_keydata_path.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_const.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_const_line.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_data_cache.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_format.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_keydata_path.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_keypath.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_parse_pattern.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_path.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_path_cache.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_search.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_timer.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_treecache.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/class_env.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/loader_base_path.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_class_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_simple_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_wrap_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/common/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/common/dbi_common_wrap.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_class_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_simple_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_wrap_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_class_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_simple_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_wrap_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_class_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_simple_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_wrap_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_class_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_simple_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_wrap_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_class_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_simple_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_wrap_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_class_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_simple_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_wrap_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_class_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_simple_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_wrap_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_class_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_simple_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_wrap_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_class_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_simple_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_wrap_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/dbl_ops_loader.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_a_index_ops.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_delete.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_exists.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_read.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_update.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_write.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_a_index_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_common_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_delete_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_exists_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_read_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_update_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_write_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_pkl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser_factory.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/ddl/auto_name.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_csv_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_ddl_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_json_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_km_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_pkl_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_pyp_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_sql_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_txt_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_yaml_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/build.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/extract.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/format.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/class_data_io.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/class_data_sp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/common/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/common/ebi_common_wrap.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_class_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_simple_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_wrap_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_class_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_simple_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_wrap_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_class_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_simple_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_wrap_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ddl/ebl_exec_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ebl_ops_loader.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_a_index_ops.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_boot.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_close.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_exec.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_factory.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_import.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/pyp/ebl_exec_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sql/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sql/ebl_exec_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/ebl_exec_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/ebl_import_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ddl/ebp_exec_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ebp_import_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/ebp_exec_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/ebp_import_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/sql/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/sql/ebp_exec_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/class_exec_io.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_class_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_simple_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_wrap_any.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/common/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/common/nbi_common_wrap.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_class_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_simple_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_wrap_csv.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_class_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_simple_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_wrap_ddl.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_class_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_simple_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_wrap_json.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_class_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_simple_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_wrap_km.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_class_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_simple_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_wrap_md.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_class_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_simple_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_wrap_pyp.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_class_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_simple_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_wrap_sql.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_class_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_simple_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_wrap_txt.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_class_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_simple_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_wrap_yaml.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/nbl_ops_loader.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_a_index_ops.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_find.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_get.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_list.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_path.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_set.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_common_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_find_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_path_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_set_sub.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/post/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/class_navi_io.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/time/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/time/sbi_time.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/watch/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/watch/sbi_watch.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/base/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/safe/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/safe/use_safe.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/simple/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/simple/use_simple.py +0 -0
- {usekit-0.1.2/usekit/help → usekit-0.1.26/usekit/classes/wrap/sub}/__init__.py +0 -0
- {usekit-0.1.2/usekit/help/index → usekit-0.1.26/usekit/help}/__init__.py +0 -0
- {usekit-0.1.2/usekit/help/index/topic → usekit-0.1.26/usekit/help/index}/__init__.py +0 -0
- {usekit-0.1.2/usekit/infra → usekit-0.1.26/usekit/help/index/topic}/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part1.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part2.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part3.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/help/use_help.py +0 -0
- {usekit-0.1.2/usekit/infra/help → usekit-0.1.26/usekit/infra}/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/exec_signature.py +0 -0
- {usekit-0.1.2/usekit/sys → usekit-0.1.26/usekit/infra/help}/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/help/help_system.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/help/io_signature_doc.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/io_signature.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/navi_signature.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_alias.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_map.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_value.py +0 -0
- {usekit-0.1.2/usekit/sys/sys_json → usekit-0.1.26/usekit/sys}/__init__.py +0 -0
- {usekit-0.1.2/usekit/sys/sys_km → usekit-0.1.26/usekit/sys/sys_json}/__init__.py +0 -0
- {usekit-0.1.2/usekit/sys/sys_yaml → usekit-0.1.26/usekit/sys/sys_km}/__init__.py +0 -0
- {usekit-0.1.2/usekit/tools → usekit-0.1.26/usekit/sys/sys_yaml}/__init__.py +0 -0
- {usekit-0.1.2/usekit/tools/convert → usekit-0.1.26/usekit/tools}/__init__.py +0 -0
- {usekit-0.1.2/usekit/tools/convert/common → usekit-0.1.26/usekit/tools/convert}/__init__.py +0 -0
- {usekit-0.1.2/usekit/tools/convert/data → usekit-0.1.26/usekit/tools/convert/common}/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/common/convert.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/common/convert_auto.py +0 -0
- {usekit-0.1.2/usekit/tools/convert/navi → usekit-0.1.26/usekit/tools/convert/data}/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/data/data_convert.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/data/data_convert_trio.py +0 -0
- {usekit-0.1.2/usekit/tools → usekit-0.1.26/usekit/tools/convert}/navi/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/navi/navi_convert.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/navi/navi_convert_trio.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert_simple.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/__init__.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/base.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/examples.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/parser.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/test_keymemory.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/navi/navi_convert.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/navi/navi_convert_trio.py +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit.egg-info/dependency_links.txt +0 -0
- {usekit-0.1.2 → usekit-0.1.26}/usekit.egg-info/top_level.txt +0 -0
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: usekit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.26
|
|
4
4
|
Summary: Minimal input, auto path toolkit (mobile-first, Colab+Drive)
|
|
5
|
+
Home-page: https://github.com/ropnfop/usekit
|
|
5
6
|
Author: ropnfop
|
|
6
7
|
Author-email: withropnfop@gmail.com
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Environment :: Console
|
|
7
20
|
Requires-Python: >=3.8
|
|
8
21
|
Description-Content-Type: text/markdown
|
|
9
|
-
|
|
10
|
-
Requires-Dist:
|
|
22
|
+
Provides-Extra: full
|
|
23
|
+
Requires-Dist: PyYAML>=5.1; extra == "full"
|
|
24
|
+
Requires-Dist: python-dotenv>=0.10.0; extra == "full"
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: PyYAML>=5.1; extra == "dev"
|
|
27
|
+
Requires-Dist: python-dotenv>=0.10.0; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
29
|
+
Requires-Dist: black>=22.0; extra == "dev"
|
|
30
|
+
Requires-Dist: flake8>=4.0; extra == "dev"
|
|
11
31
|
Dynamic: author
|
|
12
32
|
Dynamic: author-email
|
|
33
|
+
Dynamic: classifier
|
|
13
34
|
Dynamic: description
|
|
14
35
|
Dynamic: description-content-type
|
|
15
|
-
Dynamic:
|
|
36
|
+
Dynamic: home-page
|
|
37
|
+
Dynamic: provides-extra
|
|
16
38
|
Dynamic: requires-python
|
|
17
39
|
Dynamic: summary
|
|
18
40
|
|
|
@@ -27,7 +49,7 @@ from usekit import u
|
|
|
27
49
|
|
|
28
50
|
u.wjb({"hello": "world"}, "config") # write json to base
|
|
29
51
|
data = u.rjb("config") # read json from base
|
|
30
|
-
u.ujb({"version": "0.1.
|
|
52
|
+
u.ujb({"version": "0.1.26"}, "config") # update json
|
|
31
53
|
```
|
|
32
54
|
|
|
33
55
|
**3-letter interface**: Verb + Format + Location
|
|
@@ -62,7 +84,7 @@ data = s.rjb("missing") or {} # no exceptions
|
|
|
62
84
|
|
|
63
85
|
## Status
|
|
64
86
|
|
|
65
|
-
- **Version**: 0.1.
|
|
87
|
+
- **Version**: 0.1.26 (Alpha)
|
|
66
88
|
- **API**: May change
|
|
67
89
|
- **PyPI**: https://pypi.org/project/usekit
|
|
68
90
|
|
|
@@ -9,7 +9,7 @@ from usekit import u
|
|
|
9
9
|
|
|
10
10
|
u.wjb({"hello": "world"}, "config") # write json to base
|
|
11
11
|
data = u.rjb("config") # read json from base
|
|
12
|
-
u.ujb({"version": "0.1.
|
|
12
|
+
u.ujb({"version": "0.1.26"}, "config") # update json
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
**3-letter interface**: Verb + Format + Location
|
|
@@ -44,7 +44,7 @@ data = s.rjb("missing") or {} # no exceptions
|
|
|
44
44
|
|
|
45
45
|
## Status
|
|
46
46
|
|
|
47
|
-
- **Version**: 0.1.
|
|
47
|
+
- **Version**: 0.1.26 (Alpha)
|
|
48
48
|
- **API**: May change
|
|
49
49
|
- **PyPI**: https://pypi.org/project/usekit
|
|
50
50
|
|
usekit-0.1.26/setup.py
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
HERE = Path(__file__).parent
|
|
5
|
+
|
|
6
|
+
def read_readme() -> str:
|
|
7
|
+
"""
|
|
8
|
+
Read README.md with fallback for TestPyPI upload.
|
|
9
|
+
Prevents upload failures/warnings when README is missing.
|
|
10
|
+
"""
|
|
11
|
+
readme = HERE / "README.md"
|
|
12
|
+
if readme.exists():
|
|
13
|
+
return readme.read_text(encoding="utf-8")
|
|
14
|
+
# Fallback description for TestPyPI
|
|
15
|
+
return "# usekit\n\nMinimal input, auto path toolkit (mobile-first, Colab+Drive)\n"
|
|
16
|
+
|
|
17
|
+
setup(
|
|
18
|
+
name="usekit",
|
|
19
|
+
version="0.1.26",
|
|
20
|
+
author="ropnfop",
|
|
21
|
+
author_email="withropnfop@gmail.com",
|
|
22
|
+
description="Minimal input, auto path toolkit (mobile-first, Colab+Drive)",
|
|
23
|
+
long_description=read_readme(),
|
|
24
|
+
long_description_content_type="text/markdown",
|
|
25
|
+
url="https://github.com/ropnfop/usekit",
|
|
26
|
+
|
|
27
|
+
# Key: Exclude unnecessary folders from distribution
|
|
28
|
+
# (tests, docs, examples not needed in wheel)
|
|
29
|
+
packages=find_packages(exclude=("tests*", "docs*", "examples*")),
|
|
30
|
+
include_package_data=True,
|
|
31
|
+
|
|
32
|
+
# Key: Only include essential files in wheel
|
|
33
|
+
# These files MUST be present in the distribution
|
|
34
|
+
package_data={
|
|
35
|
+
"usekit": [
|
|
36
|
+
".env.example",
|
|
37
|
+
"sys/sys_yaml/sys_const.yaml",
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
python_requires=">=3.8",
|
|
42
|
+
|
|
43
|
+
# Zero dependencies: loader_env.py auto-installs when needed
|
|
44
|
+
# This completely eliminates pip dependency conflicts
|
|
45
|
+
install_requires=[],
|
|
46
|
+
|
|
47
|
+
# Optional dependencies for users who want pre-installation
|
|
48
|
+
extras_require={
|
|
49
|
+
"full": [
|
|
50
|
+
"PyYAML>=5.1",
|
|
51
|
+
"python-dotenv>=0.10.0",
|
|
52
|
+
],
|
|
53
|
+
"dev": [
|
|
54
|
+
"PyYAML>=5.1",
|
|
55
|
+
"python-dotenv>=0.10.0",
|
|
56
|
+
"pytest>=7.0",
|
|
57
|
+
"black>=22.0",
|
|
58
|
+
"flake8>=4.0",
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
# Key: Prevent file access issues when installed as zip
|
|
63
|
+
# Especially important for mobile/Termux environments
|
|
64
|
+
zip_safe=False,
|
|
65
|
+
|
|
66
|
+
classifiers=[
|
|
67
|
+
"Development Status :: 3 - Alpha",
|
|
68
|
+
"Intended Audience :: Developers",
|
|
69
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
70
|
+
"License :: OSI Approved :: MIT License",
|
|
71
|
+
"Programming Language :: Python :: 3",
|
|
72
|
+
"Programming Language :: Python :: 3.8",
|
|
73
|
+
"Programming Language :: Python :: 3.9",
|
|
74
|
+
"Programming Language :: Python :: 3.10",
|
|
75
|
+
"Programming Language :: Python :: 3.11",
|
|
76
|
+
"Programming Language :: Python :: 3.12",
|
|
77
|
+
"Operating System :: OS Independent",
|
|
78
|
+
"Environment :: Console",
|
|
79
|
+
],
|
|
80
|
+
)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# USEKIT Environment Configuration
|
|
2
|
+
# ================================================================================
|
|
3
|
+
# This file is automatically used to create .env with smart path binding
|
|
4
|
+
# Copy this to .env and adjust values as needed
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
7
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
# [REQUIRED] Base project path - Auto-detected by environment
|
|
9
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
10
|
+
# USEKIT will automatically set this based on your environment:
|
|
11
|
+
#
|
|
12
|
+
# Termux (Android): /storage/emulated/0/projects/pj01
|
|
13
|
+
# Google Colab: /content/drive/MyDrive/PROJECT
|
|
14
|
+
# Local Dev: Detected from usekit package location
|
|
15
|
+
# Pip Install: You MUST set this manually
|
|
16
|
+
#
|
|
17
|
+
# Override auto-detection by uncommenting and setting manually:
|
|
18
|
+
# ENV_BASE_PATH=/path/to/your/project
|
|
19
|
+
|
|
20
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
# [OPTIONAL] API Keys & Services
|
|
22
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
# Add your API keys here (these will be masked in logs)
|
|
24
|
+
|
|
25
|
+
# OpenAI API
|
|
26
|
+
# OPENAI_API_KEY=sk-your-key-here
|
|
27
|
+
|
|
28
|
+
# Anthropic Claude API
|
|
29
|
+
# ANTHROPIC_API_KEY=sk-ant-your-key-here
|
|
30
|
+
|
|
31
|
+
# Google APIs
|
|
32
|
+
# GOOGLE_API_KEY=your-key-here
|
|
33
|
+
|
|
34
|
+
# Other services
|
|
35
|
+
# PINECONE_API_KEY=your-key-here
|
|
36
|
+
# LANGCHAIN_API_KEY=your-key-here
|
|
37
|
+
|
|
38
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
39
|
+
# [OPTIONAL] Database Configuration
|
|
40
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
# DB_HOST=localhost
|
|
42
|
+
# DB_PORT=5432
|
|
43
|
+
# DB_NAME=mydb
|
|
44
|
+
# DB_USER=user
|
|
45
|
+
# DB_PASSWORD=password
|
|
46
|
+
|
|
47
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
48
|
+
# [OPTIONAL] Application Settings
|
|
49
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
50
|
+
# DEBUG=false
|
|
51
|
+
# LOG_LEVEL=INFO
|
|
52
|
+
# TIMEZONE=Asia/Seoul
|
|
53
|
+
|
|
54
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
55
|
+
# Platform-Specific Notes
|
|
56
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
57
|
+
#
|
|
58
|
+
# TERMUX USERS:
|
|
59
|
+
# - Default path: /storage/emulated/0/projects
|
|
60
|
+
# - This directory will be auto-created if it doesn't exist
|
|
61
|
+
# - Make sure Termux has storage permission: run 'termux-setup-storage'
|
|
62
|
+
# - Alternative path: ~/u_project (inside Termux home)
|
|
63
|
+
#
|
|
64
|
+
# GOOGLE COLAB USERS:
|
|
65
|
+
# - Mount Google Drive first: from google.colab import drive; drive.mount('/content/drive')
|
|
66
|
+
# - Default path: /content/drive/MyDrive/PROJECT
|
|
67
|
+
# - Will fallback to /content if Drive not mounted
|
|
68
|
+
#
|
|
69
|
+
# LOCAL DEVELOPMENT:
|
|
70
|
+
# - Path is auto-detected from usekit package location
|
|
71
|
+
# - Typically: /path/to/your/project (where usekit/ folder exists)
|
|
72
|
+
#
|
|
73
|
+
# PIP INSTALLED:
|
|
74
|
+
# - ENV_BASE_PATH is REQUIRED and must be set manually
|
|
75
|
+
# - Choose a location for your project files
|
|
76
|
+
# - Example: ENV_BASE_PATH=/home/user/myproject
|
|
77
|
+
#
|
|
78
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
79
|
+
# End of configuration
|
|
80
|
+
# ────────────────────────────────────────────────────────────────────────────
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Path: usekit.classes.common.init.helper_termux_storage.py
|
|
2
|
+
# -----------------------------------------------------------------------------------------------
|
|
3
|
+
# a creation by: THE Little Prince, in harmony with ROP and FOP
|
|
4
|
+
# — memory is emotion —
|
|
5
|
+
# -----------------------------------------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Termux Storage Permission Helper
|
|
9
|
+
|
|
10
|
+
Provides user-friendly setup for Termux external storage access.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
import subprocess
|
|
15
|
+
import sys
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def is_termux() -> bool:
|
|
20
|
+
"""Check if running in Termux environment"""
|
|
21
|
+
# Check environment variables
|
|
22
|
+
if os.environ.get('TERMUX_VERSION'):
|
|
23
|
+
return True
|
|
24
|
+
|
|
25
|
+
# Check typical Termux paths
|
|
26
|
+
termux_indicators = [
|
|
27
|
+
Path('/data/data/com.termux'),
|
|
28
|
+
Path.home() / '.termux',
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
for indicator in termux_indicators:
|
|
32
|
+
if indicator.exists():
|
|
33
|
+
return True
|
|
34
|
+
|
|
35
|
+
# Check PREFIX variable
|
|
36
|
+
prefix = os.environ.get('PREFIX', '')
|
|
37
|
+
if 'com.termux' in prefix:
|
|
38
|
+
return True
|
|
39
|
+
|
|
40
|
+
return False
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def check_storage_permission() -> bool:
|
|
44
|
+
"""
|
|
45
|
+
Check if external storage is accessible
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
bool: True if storage is accessible with write permission
|
|
49
|
+
"""
|
|
50
|
+
try:
|
|
51
|
+
# Check if path exists and is writable
|
|
52
|
+
storage_path = Path('/storage/emulated/0')
|
|
53
|
+
|
|
54
|
+
if not storage_path.exists():
|
|
55
|
+
return False
|
|
56
|
+
|
|
57
|
+
# Try to check write permission
|
|
58
|
+
return os.access(storage_path, os.W_OK)
|
|
59
|
+
|
|
60
|
+
except Exception:
|
|
61
|
+
return False
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def check_storage_status(verbose: bool = False) -> dict:
|
|
65
|
+
"""
|
|
66
|
+
Get detailed storage permission status
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
verbose: Print status information
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
dict: Status information
|
|
73
|
+
"""
|
|
74
|
+
status = {
|
|
75
|
+
'is_termux': is_termux(),
|
|
76
|
+
'storage_exists': Path('/storage/emulated/0').exists(),
|
|
77
|
+
'storage_writable': check_storage_permission(),
|
|
78
|
+
'ready': False
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
status['ready'] = status['is_termux'] and status['storage_writable']
|
|
82
|
+
|
|
83
|
+
if verbose:
|
|
84
|
+
print("\n" + "="*60)
|
|
85
|
+
print("[USEKIT] Storage Permission Status")
|
|
86
|
+
print("="*60)
|
|
87
|
+
print(f" Termux Environment: {'✓' if status['is_termux'] else '✗'}")
|
|
88
|
+
print(f" Storage Exists: {'✓' if status['storage_exists'] else '✗'}")
|
|
89
|
+
print(f" Storage Writable: {'✓' if status['storage_writable'] else '✗'}")
|
|
90
|
+
print(f" Overall Status: {'READY ✓' if status['ready'] else 'NOT READY ✗'}")
|
|
91
|
+
print("="*60 + "\n")
|
|
92
|
+
|
|
93
|
+
return status
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def setup_termux_storage(verbose: bool = True, interactive: bool = True) -> bool:
|
|
97
|
+
"""
|
|
98
|
+
Setup Termux external storage permissions
|
|
99
|
+
|
|
100
|
+
This will request Android storage permissions and set up access
|
|
101
|
+
to /storage/emulated/0 for file operations.
|
|
102
|
+
|
|
103
|
+
Args:
|
|
104
|
+
verbose: Print detailed information
|
|
105
|
+
interactive: Ask for user confirmation before proceeding
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
bool: True if setup succeeded
|
|
109
|
+
|
|
110
|
+
Examples:
|
|
111
|
+
>>> setup_termux_storage()
|
|
112
|
+
[USEKIT] Running termux-setup-storage...
|
|
113
|
+
✓ Permission granted! Please restart Python.
|
|
114
|
+
"""
|
|
115
|
+
# Check if in Termux
|
|
116
|
+
if not is_termux():
|
|
117
|
+
if verbose:
|
|
118
|
+
print("[USEKIT] Not running in Termux environment")
|
|
119
|
+
return False
|
|
120
|
+
|
|
121
|
+
# Check if already has permission
|
|
122
|
+
if check_storage_permission():
|
|
123
|
+
if verbose:
|
|
124
|
+
print("[USEKIT] ✓ External storage already accessible")
|
|
125
|
+
return True
|
|
126
|
+
|
|
127
|
+
# Show explanation if verbose
|
|
128
|
+
if verbose:
|
|
129
|
+
print("\n" + "="*60)
|
|
130
|
+
print("[USEKIT] External Storage Setup Required")
|
|
131
|
+
print("="*60)
|
|
132
|
+
print()
|
|
133
|
+
print("USEKIT needs access to external storage to:")
|
|
134
|
+
print(" • Save files to /storage/emulated/0")
|
|
135
|
+
print(" • Access files from other Android apps")
|
|
136
|
+
print(" • Create and manage project folders")
|
|
137
|
+
print(" • Share data with file managers")
|
|
138
|
+
print()
|
|
139
|
+
print("This will prompt for Android storage permission.")
|
|
140
|
+
print("Please grant the permission when asked.")
|
|
141
|
+
print()
|
|
142
|
+
print("="*60 + "\n")
|
|
143
|
+
|
|
144
|
+
# Ask for confirmation if interactive
|
|
145
|
+
if interactive:
|
|
146
|
+
try:
|
|
147
|
+
response = input("Continue? [Y/n]: ").strip().lower()
|
|
148
|
+
if response and response not in ['y', 'yes']:
|
|
149
|
+
print("[USEKIT] Setup cancelled by user")
|
|
150
|
+
return False
|
|
151
|
+
except (EOFError, KeyboardInterrupt):
|
|
152
|
+
print("\n[USEKIT] Setup cancelled")
|
|
153
|
+
return False
|
|
154
|
+
|
|
155
|
+
# Run termux-setup-storage
|
|
156
|
+
if verbose:
|
|
157
|
+
print("[USEKIT] Running termux-setup-storage...")
|
|
158
|
+
print("[USEKIT] (A permission dialog will appear)")
|
|
159
|
+
|
|
160
|
+
try:
|
|
161
|
+
result = subprocess.run(
|
|
162
|
+
['termux-setup-storage'],
|
|
163
|
+
capture_output=False,
|
|
164
|
+
check=True
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
# Success message
|
|
168
|
+
if verbose:
|
|
169
|
+
print()
|
|
170
|
+
print("="*60)
|
|
171
|
+
print("[USEKIT] ✓ Permission Granted Successfully!")
|
|
172
|
+
print("="*60)
|
|
173
|
+
print()
|
|
174
|
+
print("Storage access has been configured.")
|
|
175
|
+
print()
|
|
176
|
+
print("IMPORTANT: Please restart Python for changes to take effect:")
|
|
177
|
+
print(" 1. Exit Python: exit()")
|
|
178
|
+
print(" 2. Restart Python: python")
|
|
179
|
+
print()
|
|
180
|
+
print("After restarting, you can verify with:")
|
|
181
|
+
print(" >>> from usekit import use")
|
|
182
|
+
print(" >>> use.check()")
|
|
183
|
+
print()
|
|
184
|
+
print("="*60 + "\n")
|
|
185
|
+
|
|
186
|
+
return True
|
|
187
|
+
|
|
188
|
+
except subprocess.CalledProcessError as e:
|
|
189
|
+
# Command failed
|
|
190
|
+
if verbose:
|
|
191
|
+
print()
|
|
192
|
+
print("="*60)
|
|
193
|
+
print("[USEKIT] ✗ Setup Failed")
|
|
194
|
+
print("="*60)
|
|
195
|
+
print()
|
|
196
|
+
print(f"Error: {e}")
|
|
197
|
+
print()
|
|
198
|
+
print("Manual setup steps:")
|
|
199
|
+
print(" 1. Exit Python: exit()")
|
|
200
|
+
print(" 2. Run command: termux-setup-storage")
|
|
201
|
+
print(" 3. Grant permission when Android prompts you")
|
|
202
|
+
print(" 4. Restart Python: python")
|
|
203
|
+
print()
|
|
204
|
+
print("="*60 + "\n")
|
|
205
|
+
return False
|
|
206
|
+
|
|
207
|
+
except FileNotFoundError:
|
|
208
|
+
# termux-setup-storage command not found
|
|
209
|
+
if verbose:
|
|
210
|
+
print()
|
|
211
|
+
print("="*60)
|
|
212
|
+
print("[USEKIT] ✗ Command Not Found")
|
|
213
|
+
print("="*60)
|
|
214
|
+
print()
|
|
215
|
+
print("The 'termux-setup-storage' command was not found.")
|
|
216
|
+
print()
|
|
217
|
+
print("Possible causes:")
|
|
218
|
+
print(" • Not running in Termux")
|
|
219
|
+
print(" • Termux is outdated (please update)")
|
|
220
|
+
print()
|
|
221
|
+
print("Please ensure you are running in Termux and try:")
|
|
222
|
+
print(" pkg update && pkg upgrade")
|
|
223
|
+
print()
|
|
224
|
+
print("="*60 + "\n")
|
|
225
|
+
return False
|
|
226
|
+
|
|
227
|
+
except KeyboardInterrupt:
|
|
228
|
+
if verbose:
|
|
229
|
+
print("\n[USEKIT] Setup cancelled by user")
|
|
230
|
+
return False
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def warn_if_not_ready():
|
|
234
|
+
"""
|
|
235
|
+
Check storage permission and warn user if not ready
|
|
236
|
+
|
|
237
|
+
This is called automatically on import in Termux environments.
|
|
238
|
+
"""
|
|
239
|
+
if not is_termux():
|
|
240
|
+
return
|
|
241
|
+
|
|
242
|
+
if check_storage_permission():
|
|
243
|
+
return
|
|
244
|
+
|
|
245
|
+
# Not ready - show warning
|
|
246
|
+
print()
|
|
247
|
+
print("="*60)
|
|
248
|
+
print("[USEKIT] External Storage: NOT READY")
|
|
249
|
+
print("="*60)
|
|
250
|
+
print()
|
|
251
|
+
print("USEKIT requires external storage permission to work properly.")
|
|
252
|
+
print()
|
|
253
|
+
print("Quick fix:")
|
|
254
|
+
print(" >>> from usekit import use")
|
|
255
|
+
print(" >>> use.termux()")
|
|
256
|
+
print()
|
|
257
|
+
print("Or manually in shell:")
|
|
258
|
+
print(" $ termux-setup-storage")
|
|
259
|
+
print()
|
|
260
|
+
print("="*60 + "\n")
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
# Convenience function for use.py
|
|
264
|
+
def termux(verbose: bool = True, interactive: bool = True) -> bool:
|
|
265
|
+
"""
|
|
266
|
+
Convenience wrapper for setup_termux_storage
|
|
267
|
+
|
|
268
|
+
Usage:
|
|
269
|
+
>>> from usekit import use
|
|
270
|
+
>>> use.termux()
|
|
271
|
+
"""
|
|
272
|
+
return setup_termux_storage(verbose=verbose, interactive=interactive)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def check(verbose: bool = True) -> dict:
|
|
276
|
+
"""
|
|
277
|
+
Check USEKIT environment status
|
|
278
|
+
|
|
279
|
+
Usage:
|
|
280
|
+
>>> from usekit import use
|
|
281
|
+
>>> use.check()
|
|
282
|
+
"""
|
|
283
|
+
return check_storage_status(verbose=verbose)
|