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.
Files changed (317) hide show
  1. {usekit-0.1.2/usekit.egg-info → usekit-0.1.26}/PKG-INFO +28 -6
  2. {usekit-0.1.2 → usekit-0.1.26}/README.md +2 -2
  3. usekit-0.1.26/setup.py +80 -0
  4. usekit-0.1.26/usekit/.env.example +80 -0
  5. usekit-0.1.26/usekit/classes/common/init/helper_termux_storage.py +283 -0
  6. usekit-0.1.26/usekit/classes/core/env/loader_env.py +1117 -0
  7. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/base/use_base.py +7 -0
  8. usekit-0.1.26/usekit/classes/wrap/sub/use_support.py +210 -0
  9. {usekit-0.1.2 → usekit-0.1.26}/usekit/sys/sys_yaml/sys_const.yaml +7 -7
  10. usekit-0.1.26/usekit/tools/navi/__init__.py +5 -0
  11. {usekit-0.1.2 → usekit-0.1.26}/usekit/usemain.py +7 -1
  12. {usekit-0.1.2 → usekit-0.1.26/usekit.egg-info}/PKG-INFO +28 -6
  13. {usekit-0.1.2 → usekit-0.1.26}/usekit.egg-info/SOURCES.txt +4 -0
  14. usekit-0.1.26/usekit.egg-info/not-zip-safe +1 -0
  15. usekit-0.1.26/usekit.egg-info/requires.txt +11 -0
  16. usekit-0.1.2/setup.py +0 -31
  17. usekit-0.1.2/usekit/.env.example +0 -35
  18. usekit-0.1.2/usekit/classes/core/env/loader_env.py +0 -512
  19. usekit-0.1.2/usekit.egg-info/requires.txt +0 -2
  20. {usekit-0.1.2 → usekit-0.1.26}/MANIFEST.in +0 -0
  21. {usekit-0.1.2 → usekit-0.1.26}/setup.cfg +0 -0
  22. {usekit-0.1.2 → usekit-0.1.26}/usekit/__init__.py +0 -0
  23. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/__init__.py +0 -0
  24. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/__init__.py +0 -0
  25. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/__init__.py +0 -0
  26. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_debug.py +0 -0
  27. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_errors.py +0 -0
  28. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_safe.py +0 -0
  29. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/errors/helper_setupdebug.py +0 -0
  30. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/__init__.py +0 -0
  31. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_backup.py +0 -0
  32. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_diff.py +0 -0
  33. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_dotdict.py +0 -0
  34. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_dryrun.py +0 -0
  35. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/fileops/helper_restore.py +0 -0
  36. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/__init__.py +0 -0
  37. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/helper_lazy.py +0 -0
  38. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/init/helper_normalize.py +0 -0
  39. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/keymap/__init__.py +0 -0
  40. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/keymap/helper_keydata_path.py +0 -0
  41. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/__init__.py +0 -0
  42. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_const.py +0 -0
  43. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_const_line.py +0 -0
  44. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_data_cache.py +0 -0
  45. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_format.py +0 -0
  46. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_keydata_path.py +0 -0
  47. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_keypath.py +0 -0
  48. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_parse_pattern.py +0 -0
  49. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_path.py +0 -0
  50. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_path_cache.py +0 -0
  51. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_search.py +0 -0
  52. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_timer.py +0 -0
  53. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/common/utils/helper_treecache.py +0 -0
  54. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/__init__.py +0 -0
  55. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/__init__.py +0 -0
  56. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/class_env.py +0 -0
  57. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/core/env/loader_base_path.py +0 -0
  58. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/__init__.py +0 -0
  59. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/__init__.py +0 -0
  60. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/__init__.py +0 -0
  61. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/__init__.py +0 -0
  62. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/__init__.py +0 -0
  63. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_class_any.py +0 -0
  64. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_simple_any.py +0 -0
  65. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/any/dbi_wrap_any.py +0 -0
  66. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/common/__init__.py +0 -0
  67. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/common/dbi_common_wrap.py +0 -0
  68. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/__init__.py +0 -0
  69. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_class_csv.py +0 -0
  70. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_simple_csv.py +0 -0
  71. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/csv/dbi_wrap_csv.py +0 -0
  72. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/__init__.py +0 -0
  73. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_class_ddl.py +0 -0
  74. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_simple_ddl.py +0 -0
  75. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/ddl/dbi_wrap_ddl.py +0 -0
  76. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/__init__.py +0 -0
  77. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_class_json.py +0 -0
  78. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_simple_json.py +0 -0
  79. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/json/dbi_wrap_json.py +0 -0
  80. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/__init__.py +0 -0
  81. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_class_km.py +0 -0
  82. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_simple_km.py +0 -0
  83. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/km/dbi_wrap_km.py +0 -0
  84. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/__init__.py +0 -0
  85. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_class_md.py +0 -0
  86. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_simple_md.py +0 -0
  87. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/md/dbi_wrap_md.py +0 -0
  88. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/__init__.py +0 -0
  89. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_class_pyp.py +0 -0
  90. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_simple_pyp.py +0 -0
  91. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/pyp/dbi_wrap_pyp.py +0 -0
  92. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/__init__.py +0 -0
  93. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_class_sql.py +0 -0
  94. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_simple_sql.py +0 -0
  95. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/sql/dbi_wrap_sql.py +0 -0
  96. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/__init__.py +0 -0
  97. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_class_txt.py +0 -0
  98. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_simple_txt.py +0 -0
  99. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/txt/dbi_wrap_txt.py +0 -0
  100. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/__init__.py +0 -0
  101. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_class_yaml.py +0 -0
  102. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_simple_yaml.py +0 -0
  103. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/init/wrap/yaml/dbi_wrap_yaml.py +0 -0
  104. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/__init__.py +0 -0
  105. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/dbl_ops_loader.py +0 -0
  106. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/__init__.py +0 -0
  107. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_a_index_ops.py +0 -0
  108. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_delete.py +0 -0
  109. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_exists.py +0 -0
  110. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_read.py +0 -0
  111. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_update.py +0 -0
  112. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/ops/dbl_write.py +0 -0
  113. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/__init__.py +0 -0
  114. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_a_index_sub.py +0 -0
  115. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_common_sub.py +0 -0
  116. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_delete_sub.py +0 -0
  117. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_exists_sub.py +0 -0
  118. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_read_sub.py +0 -0
  119. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_update_sub.py +0 -0
  120. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/load/sub/dbl_write_sub.py +0 -0
  121. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/__init__.py +0 -0
  122. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/__init__.py +0 -0
  123. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_any.py +0 -0
  124. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_csv.py +0 -0
  125. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_ddl.py +0 -0
  126. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_json.py +0 -0
  127. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_km.py +0 -0
  128. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_md.py +0 -0
  129. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_pkl.py +0 -0
  130. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_pyp.py +0 -0
  131. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_sql.py +0 -0
  132. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_txt.py +0 -0
  133. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser/parser_yaml.py +0 -0
  134. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/parser_factory.py +0 -0
  135. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/__init__.py +0 -0
  136. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/ddl/__init__.py +0 -0
  137. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/ddl/auto_name.py +0 -0
  138. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_csv_sub.py +0 -0
  139. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_ddl_sub.py +0 -0
  140. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_json_sub.py +0 -0
  141. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_km_sub.py +0 -0
  142. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_pkl_sub.py +0 -0
  143. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_pyp_sub.py +0 -0
  144. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_sql_sub.py +0 -0
  145. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_txt_sub.py +0 -0
  146. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/parser_yaml_sub.py +0 -0
  147. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/__init__.py +0 -0
  148. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/build.py +0 -0
  149. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/extract.py +0 -0
  150. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/base/post/sub/pyp/format.py +0 -0
  151. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/class_data_io.py +0 -0
  152. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/data/class_data_sp.py +0 -0
  153. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/__init__.py +0 -0
  154. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/__init__.py +0 -0
  155. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/__init__.py +0 -0
  156. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/__init__.py +0 -0
  157. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/common/__init__.py +0 -0
  158. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/common/ebi_common_wrap.py +0 -0
  159. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/__init__.py +0 -0
  160. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_class_ddl.py +0 -0
  161. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_simple_ddl.py +0 -0
  162. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/ddl/ebi_wrap_ddl.py +0 -0
  163. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/__init__.py +0 -0
  164. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_class_pyp.py +0 -0
  165. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_simple_pyp.py +0 -0
  166. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/pyp/ebi_wrap_pyp.py +0 -0
  167. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/__init__.py +0 -0
  168. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_class_sql.py +0 -0
  169. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_simple_sql.py +0 -0
  170. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/init/wrap/sql/ebi_wrap_sql.py +0 -0
  171. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/__init__.py +0 -0
  172. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ddl/__init__.py +0 -0
  173. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ddl/ebl_exec_ddl.py +0 -0
  174. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ebl_ops_loader.py +0 -0
  175. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/__init__.py +0 -0
  176. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_a_index_ops.py +0 -0
  177. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_boot.py +0 -0
  178. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_close.py +0 -0
  179. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_exec.py +0 -0
  180. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_factory.py +0 -0
  181. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/ops/ebl_import.py +0 -0
  182. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/pyp/__init__.py +0 -0
  183. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/pyp/ebl_exec_pyp.py +0 -0
  184. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sql/__init__.py +0 -0
  185. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sql/ebl_exec_sql.py +0 -0
  186. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/__init__.py +0 -0
  187. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/ebl_exec_sub.py +0 -0
  188. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/load/sub/ebl_import_sub.py +0 -0
  189. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/__init__.py +0 -0
  190. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/__init__.py +0 -0
  191. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ddl/__init__.py +0 -0
  192. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ddl/ebp_exec_ddl.py +0 -0
  193. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/ebp_import_pyp.py +0 -0
  194. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/__init__.py +0 -0
  195. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/ebp_exec_pyp.py +0 -0
  196. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/pyp/ebp_import_pyp.py +0 -0
  197. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/sql/__init__.py +0 -0
  198. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/base/post/act/sql/ebp_exec_sql.py +0 -0
  199. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/exec/class_exec_io.py +0 -0
  200. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/__init__.py +0 -0
  201. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/__init__.py +0 -0
  202. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/__init__.py +0 -0
  203. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/__init__.py +0 -0
  204. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/__init__.py +0 -0
  205. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_class_any.py +0 -0
  206. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_simple_any.py +0 -0
  207. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/any/nbi_wrap_any.py +0 -0
  208. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/common/__init__.py +0 -0
  209. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/common/nbi_common_wrap.py +0 -0
  210. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/__init__.py +0 -0
  211. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_class_csv.py +0 -0
  212. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_simple_csv.py +0 -0
  213. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/csv/nbi_wrap_csv.py +0 -0
  214. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/__init__.py +0 -0
  215. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_class_ddl.py +0 -0
  216. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_simple_ddl.py +0 -0
  217. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/ddl/nbi_wrap_ddl.py +0 -0
  218. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/__init__.py +0 -0
  219. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_class_json.py +0 -0
  220. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_simple_json.py +0 -0
  221. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/json/nbi_wrap_json.py +0 -0
  222. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/__init__.py +0 -0
  223. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_class_km.py +0 -0
  224. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_simple_km.py +0 -0
  225. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/km/nbi_wrap_km.py +0 -0
  226. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/__init__.py +0 -0
  227. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_class_md.py +0 -0
  228. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_simple_md.py +0 -0
  229. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/md/nbi_wrap_md.py +0 -0
  230. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/__init__.py +0 -0
  231. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_class_pyp.py +0 -0
  232. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_simple_pyp.py +0 -0
  233. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/pyp/nbi_wrap_pyp.py +0 -0
  234. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/__init__.py +0 -0
  235. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_class_sql.py +0 -0
  236. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_simple_sql.py +0 -0
  237. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/sql/nbi_wrap_sql.py +0 -0
  238. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/__init__.py +0 -0
  239. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_class_txt.py +0 -0
  240. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_simple_txt.py +0 -0
  241. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/txt/nbi_wrap_txt.py +0 -0
  242. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/__init__.py +0 -0
  243. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_class_yaml.py +0 -0
  244. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_simple_yaml.py +0 -0
  245. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/init/wrap/yaml/nbi_wrap_yaml.py +0 -0
  246. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/__init__.py +0 -0
  247. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/nbl_ops_loader.py +0 -0
  248. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/__init__.py +0 -0
  249. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_a_index_ops.py +0 -0
  250. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_find.py +0 -0
  251. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_get.py +0 -0
  252. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_list.py +0 -0
  253. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_path.py +0 -0
  254. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/ops/nbl_set.py +0 -0
  255. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/__init__.py +0 -0
  256. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_common_sub.py +0 -0
  257. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_find_sub.py +0 -0
  258. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_path_sub.py +0 -0
  259. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/load/sub/nbl_set_sub.py +0 -0
  260. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/base/post/__init__.py +0 -0
  261. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/navi/class_navi_io.py +0 -0
  262. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/__init__.py +0 -0
  263. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/__init__.py +0 -0
  264. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/__init__.py +0 -0
  265. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/time/__init__.py +0 -0
  266. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/time/sbi_time.py +0 -0
  267. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/watch/__init__.py +0 -0
  268. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/support/base/init/watch/sbi_watch.py +0 -0
  269. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/__init__.py +0 -0
  270. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/base/__init__.py +0 -0
  271. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/safe/__init__.py +0 -0
  272. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/safe/use_safe.py +0 -0
  273. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/simple/__init__.py +0 -0
  274. {usekit-0.1.2 → usekit-0.1.26}/usekit/classes/wrap/simple/use_simple.py +0 -0
  275. {usekit-0.1.2/usekit/help → usekit-0.1.26/usekit/classes/wrap/sub}/__init__.py +0 -0
  276. {usekit-0.1.2/usekit/help/index → usekit-0.1.26/usekit/help}/__init__.py +0 -0
  277. {usekit-0.1.2/usekit/help/index/topic → usekit-0.1.26/usekit/help/index}/__init__.py +0 -0
  278. {usekit-0.1.2/usekit/infra → usekit-0.1.26/usekit/help/index/topic}/__init__.py +0 -0
  279. {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part1.py +0 -0
  280. {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part2.py +0 -0
  281. {usekit-0.1.2 → usekit-0.1.26}/usekit/help/index/topic/help_part3.py +0 -0
  282. {usekit-0.1.2 → usekit-0.1.26}/usekit/help/use_help.py +0 -0
  283. {usekit-0.1.2/usekit/infra/help → usekit-0.1.26/usekit/infra}/__init__.py +0 -0
  284. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/exec_signature.py +0 -0
  285. {usekit-0.1.2/usekit/sys → usekit-0.1.26/usekit/infra/help}/__init__.py +0 -0
  286. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/help/help_system.py +0 -0
  287. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/help/io_signature_doc.py +0 -0
  288. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/io_signature.py +0 -0
  289. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/navi_signature.py +0 -0
  290. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_alias.py +0 -0
  291. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_map.py +0 -0
  292. {usekit-0.1.2 → usekit-0.1.26}/usekit/infra/params_value.py +0 -0
  293. {usekit-0.1.2/usekit/sys/sys_json → usekit-0.1.26/usekit/sys}/__init__.py +0 -0
  294. {usekit-0.1.2/usekit/sys/sys_km → usekit-0.1.26/usekit/sys/sys_json}/__init__.py +0 -0
  295. {usekit-0.1.2/usekit/sys/sys_yaml → usekit-0.1.26/usekit/sys/sys_km}/__init__.py +0 -0
  296. {usekit-0.1.2/usekit/tools → usekit-0.1.26/usekit/sys/sys_yaml}/__init__.py +0 -0
  297. {usekit-0.1.2/usekit/tools/convert → usekit-0.1.26/usekit/tools}/__init__.py +0 -0
  298. {usekit-0.1.2/usekit/tools/convert/common → usekit-0.1.26/usekit/tools/convert}/__init__.py +0 -0
  299. {usekit-0.1.2/usekit/tools/convert/data → usekit-0.1.26/usekit/tools/convert/common}/__init__.py +0 -0
  300. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/common/convert.py +0 -0
  301. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/common/convert_auto.py +0 -0
  302. {usekit-0.1.2/usekit/tools/convert/navi → usekit-0.1.26/usekit/tools/convert/data}/__init__.py +0 -0
  303. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/data/data_convert.py +0 -0
  304. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/data/data_convert_trio.py +0 -0
  305. {usekit-0.1.2/usekit/tools → usekit-0.1.26/usekit/tools/convert}/navi/__init__.py +0 -0
  306. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/navi/navi_convert.py +0 -0
  307. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert/navi/navi_convert_trio.py +0 -0
  308. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/convert_simple.py +0 -0
  309. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/__init__.py +0 -0
  310. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/base.py +0 -0
  311. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/examples.py +0 -0
  312. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/parser.py +0 -0
  313. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/keymemory/test_keymemory.py +0 -0
  314. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/navi/navi_convert.py +0 -0
  315. {usekit-0.1.2 → usekit-0.1.26}/usekit/tools/navi/navi_convert_trio.py +0 -0
  316. {usekit-0.1.2 → usekit-0.1.26}/usekit.egg-info/dependency_links.txt +0 -0
  317. {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.2
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
- Requires-Dist: PyYAML>=5.1
10
- Requires-Dist: python-dotenv>=0.19.0
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: requires-dist
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.2"}, "config") # update json
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.2 (Alpha)
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.2"}, "config") # update json
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.2 (Alpha)
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)