abstract-utilities 0.2.2.563__tar.gz → 0.2.2.613__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.
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/PKG-INFO +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/setup.py +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/caller_utils.py +19 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/global_utils.py +35 -20
- abstract_utilities-0.2.2.613/src/abstract_utilities/class_utils/imports/imports.py +2 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/src/directory_utils.py +19 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/module_imports.py +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/file_filters/ensure_utils.py +3 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/find_collect.py +9 -4
- abstract_utilities-0.2.2.563/src/abstract_utilities/file_utils (2)/src/initFunctionsGen.py → abstract_utilities-0.2.2.613/src/abstract_utilities/file_utils/src/initFunctionsGen.py +36 -28
- abstract_utilities-0.2.2.563/src/abstract_utilities/file_utils/src/initFunctionsGen.py → abstract_utilities-0.2.2.613/src/abstract_utilities/file_utils/src/initFunctionsGens.py +4 -4
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/imports/imports.py +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/utils/filter_utils.py +1 -2
- abstract_utilities-0.2.2.613/src/abstract_utilities/import_utils/imports/module_imports.py +8 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/dot_utils.py +11 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/extract_utils.py +4 -0
- abstract_utilities-0.2.2.613/src/abstract_utilities/import_utils/src/import_functions.py +110 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/pkg_utils.py +1 -30
- abstract_utilities-0.2.2.613/src/abstract_utilities/import_utils/src/sysroot_utils.py +112 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/log_file.py +3 -2
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities.egg-info/PKG-INFO +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities.egg-info/SOURCES.txt +1 -1
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/tests/test.py +1 -1
- abstract_utilities-0.2.2.563/src/abstract_utilities/class_utils/imports/imports.py +0 -2
- abstract_utilities-0.2.2.563/src/abstract_utilities/import_utils/imports/module_imports.py +0 -7
- abstract_utilities-0.2.2.563/src/abstract_utilities/import_utils/src/import_functions.py +0 -53
- abstract_utilities-0.2.2.563/src/abstract_utilities/import_utils/src/sysroot_utils.py +0 -57
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/README.md +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/pyproject.toml +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/setup.cfg +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/abstract_classes.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/class_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/function_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/class_utils/module_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/compare_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/compare_utils/best_match.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/compare_utils/compare_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/compare_utils/find_value.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/src/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/src/name_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/src/size_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/directory_utils/src/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/abstractEnv.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/envy_it.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/env_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/error_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/error_utils/error_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/error_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/error_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/error_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/classes.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/clean_imps.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/file_filters/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/file_filters/filter_params.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/file_filters/filter_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/file_filters/predicate_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/find_content.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/map_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/directory_reader.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/file_reader.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/file_readers.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils/src/reader_utils/pdf_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/utils/classes.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/imports/utils/clean_imps.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/file_filters.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/file_reader.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/find_collect.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/map_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/file_utils (2)/src/pdf_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/hash_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/hash_utils/hash_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/hash_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/hash_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/hash_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/history_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/history_utils/history_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/history_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/history_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/history_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/circular_import_finder.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/circular_import_finder2.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/clean_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/import_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/package_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/package_utils/context_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/package_utils/import_collectors.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/package_utils/path_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/import_utils/src/package_utils/safe_import.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/json_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/json_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/json_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/json_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/json_utils/json_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/list_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/list_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/list_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/list_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/list_utils/list_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/abstractLogManager.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/call_response.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/log_utils/logger_callable.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/math_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/math_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/math_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/math_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/math_utils/math_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/imports/constants.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/parse_utils/parse_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/path_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/path_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/path_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/path_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/path_utils/path_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/read_write_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/read_write_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/read_write_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/read_write_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/read_write_utils/read_write_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/safe_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/safe_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/safe_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/safe_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/safe_utils/safe_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/classes.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/cmd_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/pexpect_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/ssh_utils/type_checks.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/clean_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/eat_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/imports/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/string_utils/replace_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/thread_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/thread_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/thread_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/thread_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/thread_utils/thread_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/time_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/time_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/time_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/time_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/time_utils/time_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/alpha_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/imports/__init__.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/imports/imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/imports/module_imports.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/num_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/type_utils/type_utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities/utils.py +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities.egg-info/dependency_links.txt +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities.egg-info/requires.txt +0 -0
- {abstract_utilities-0.2.2.563 → abstract_utilities-0.2.2.613}/src/abstract_utilities.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstract_utilities
|
|
3
|
-
Version: 0.2.2.
|
|
3
|
+
Version: 0.2.2.613
|
|
4
4
|
Summary: abstract_utilities is a collection of utility modules providing a variety of functions to aid in tasks such as data comparison, list manipulation, JSON handling, string manipulation, mathematical computations, and time operations.
|
|
5
5
|
Home-page: https://github.com/AbstractEndeavors/abstract_utilities
|
|
6
6
|
Author: putkoff
|
|
@@ -4,7 +4,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
|
|
|
4
4
|
long_description = fh.read()
|
|
5
5
|
setuptools.setup(
|
|
6
6
|
name='abstract_utilities',
|
|
7
|
-
version='0.2.2.
|
|
7
|
+
version='0.2.2.613',
|
|
8
8
|
author='putkoff',
|
|
9
9
|
author_email='partners@abstractendeavors.com',
|
|
10
10
|
description='abstract_utilities is a collection of utility modules providing a variety of functions to aid in tasks such as data comparison, list manipulation, JSON handling, string manipulation, mathematical computations, and time operations.',
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
from .imports import *
|
|
2
|
+
|
|
3
|
+
def get_initial_caller() -> str:
|
|
4
|
+
"""
|
|
5
|
+
Return the TRUE original caller: the entrypoint script that launched the program.
|
|
6
|
+
"""
|
|
7
|
+
main_mod = sys.modules.get('__main__')
|
|
8
|
+
|
|
9
|
+
# interactive environments (REPL) may have no __file__
|
|
10
|
+
if not main_mod or not hasattr(main_mod, '__file__'):
|
|
11
|
+
return None
|
|
12
|
+
|
|
13
|
+
return os.path.realpath(main_mod.__file__)
|
|
14
|
+
def get_initial_caller_dir() -> str:
|
|
15
|
+
"""
|
|
16
|
+
Return the directory of the TRUE original entrypoint script.
|
|
17
|
+
"""
|
|
18
|
+
caller = get_initial_caller()
|
|
19
|
+
return os.path.dirname(caller) if caller else None
|
|
20
|
+
|
|
2
21
|
def get_caller(i: Optional[int] = None) -> str:
|
|
3
22
|
"""
|
|
4
23
|
Return the filename of the calling frame.
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
import importlib, sys,os
|
|
2
|
+
from .caller_utils import get_initial_caller
|
|
3
|
+
def file_to_module_name(path):
|
|
4
|
+
path = os.path.realpath(path)
|
|
5
|
+
# Find a path that exists in sys.path
|
|
6
|
+
for base in sys.path:
|
|
7
|
+
base = os.path.realpath(base)
|
|
8
|
+
if path.startswith(base):
|
|
9
|
+
rel = os.path.relpath(path, base)
|
|
10
|
+
mod = os.path.splitext(rel)[0]
|
|
11
|
+
return mod.replace(os.sep, ".")
|
|
12
|
+
# fallback (never should be used)
|
|
13
|
+
return os.path.splitext(os.path.basename(path))[0]
|
|
14
|
+
def get_globals_from_path(module_path: str=None):
|
|
15
|
+
module_path = module_path or get_initial_caller()
|
|
16
|
+
module_name = file_to_module_name(module_path)
|
|
17
|
+
if module_name not in sys.modules:
|
|
18
|
+
importlib.import_module(module_name)
|
|
19
|
+
return sys.modules[module_name].__dict__
|
|
1
20
|
def global_registry(name:str,glob:dict):
|
|
2
21
|
global_ledger = if_none_default(string='global_ledger',glob=globals(),default={"registry_names":[],"registry_index":[]})
|
|
3
22
|
if name not in global_ledger['registry_names']:
|
|
@@ -31,26 +50,22 @@ def return_globals() -> dict:
|
|
|
31
50
|
dict: The global variables dictionary.
|
|
32
51
|
"""
|
|
33
52
|
return globals()
|
|
34
|
-
def
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
var (str): The name of the global variable.
|
|
40
|
-
val (any): The new value.
|
|
41
|
-
glob (dict, optional): The dictionary of global variables. Defaults to the current globals.
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
any: The new value of the variable.
|
|
45
|
-
"""
|
|
53
|
+
def get_true_globals():
|
|
54
|
+
return sys.modules['__main__'].__dict__
|
|
55
|
+
def change_glob(var: str, val: any, glob: dict = None) -> any:
|
|
56
|
+
if glob is None:
|
|
57
|
+
glob = get_true_globals()
|
|
46
58
|
glob[var] = val
|
|
47
59
|
return val
|
|
48
|
-
def get_globes(string:str='',glob:dict=return_globals()):
|
|
49
|
-
if string in glob:
|
|
50
|
-
return glob[string]
|
|
51
|
-
def if_none_default(string:str, default:any,glob:dict=return_globals()):
|
|
52
|
-
piece = get_globes(string=string,glob=glob)
|
|
53
|
-
if piece is None:
|
|
54
|
-
piece = default
|
|
55
|
-
return change_glob(var=string,val=piece,glob=glob)
|
|
56
60
|
|
|
61
|
+
def get_globes(string: str='', glob: dict=None):
|
|
62
|
+
if glob is None:
|
|
63
|
+
glob = get_true_globals()
|
|
64
|
+
return glob.get(string)
|
|
65
|
+
def if_none_default(string: str, default: any, glob: dict=None, typ=None):
|
|
66
|
+
if glob is None:
|
|
67
|
+
glob = get_true_globals()
|
|
68
|
+
piece = get_globes(string=string, glob=glob)
|
|
69
|
+
if piece is None or (typ and not isinstance(piece, typ)):
|
|
70
|
+
piece = default
|
|
71
|
+
return change_glob(var=string, val=piece, glob=glob)
|
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
from pathlib import Path
|
|
2
2
|
from .utils import *
|
|
3
|
+
|
|
4
|
+
def get_shortest_path(*args):
|
|
5
|
+
shortest = None
|
|
6
|
+
args = {arg:str(arg).split('/') for arg in args if arg}
|
|
7
|
+
for path,spl in args.items():
|
|
8
|
+
if shortest is None or (len(spl)<len(shortest[-1])):
|
|
9
|
+
shortest=[path,spl]
|
|
10
|
+
return shortest[0]
|
|
11
|
+
def get_common_root(paths):
|
|
12
|
+
"""
|
|
13
|
+
Compute the deepest common parent directory of all sysroots.
|
|
14
|
+
"""
|
|
15
|
+
paths = [Path(p).resolve() for p in paths]
|
|
16
|
+
common = os.path.commonpath(paths)
|
|
17
|
+
return common
|
|
18
|
+
|
|
3
19
|
def get_dirs(path):
|
|
4
20
|
"""
|
|
5
21
|
Get List of Immediate Subdirectories in a Path
|
|
@@ -86,7 +102,9 @@ def raw_create_dirs(*paths):
|
|
|
86
102
|
current_path = safe_join(current_path, part)
|
|
87
103
|
os.makedirs(current_path, exist_ok=True)
|
|
88
104
|
return full_path
|
|
105
|
+
|
|
89
106
|
mkdirs=raw_create_dirs
|
|
90
107
|
makedirs = mkdirs
|
|
91
108
|
make_dirs = makedirs
|
|
109
|
+
makeAllDirs = raw_create_dirs
|
|
92
110
|
|
|
@@ -4,5 +4,5 @@ from ...ssh_utils import *
|
|
|
4
4
|
from ...env_utils import *
|
|
5
5
|
from ...read_write_utils import read_from_file,write_to_file
|
|
6
6
|
from ...log_utils import get_logFile
|
|
7
|
-
from ...class_utils import get_caller, get_caller_path, get_caller_dir,SingletonMeta,run_pruned_func
|
|
7
|
+
from ...class_utils import if_none_default,if_none_change,get_caller,get_initial_caller_dir, get_caller_path, get_caller_dir,SingletonMeta,run_pruned_func
|
|
8
8
|
|
|
@@ -45,7 +45,9 @@ def ensure_directories(*args,**kwargs):
|
|
|
45
45
|
dirname = os.path.dirname(arg_str)
|
|
46
46
|
directories.append(dirname)
|
|
47
47
|
safe_directories = get_dir_filter_kwargs(**kwargs)
|
|
48
|
-
|
|
48
|
+
safe_dirs = safe_directories.get('directories')
|
|
49
|
+
safe_dirs = if_none_change(safe_dirs or None,get_initial_caller_dir())
|
|
50
|
+
directories+= make_list(safe_dirs)
|
|
49
51
|
return list(set([r for r in directories if r]))
|
|
50
52
|
def get_proper_type_str(string):
|
|
51
53
|
if not string:
|
|
@@ -5,8 +5,7 @@ from typing import Optional, List, Set
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
return run_pruned_func(run_cmd,cmd,*args,*kwargs)
|
|
8
|
+
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
def get_find_cmd(
|
|
@@ -134,6 +133,7 @@ def collect_globs(
|
|
|
134
133
|
- If file_type is "f" or "d" → returns a list of that type
|
|
135
134
|
- Supports SSH mode via `user_at_host`
|
|
136
135
|
"""
|
|
136
|
+
user_pass_host_key = get_user_pass_host_key(**kwargs)
|
|
137
137
|
kwargs["directories"] = ensure_directories(*args, **kwargs)
|
|
138
138
|
kwargs= get_safe_canonical_kwargs(**kwargs)
|
|
139
139
|
kwargs["cfg"] = kwargs.get('cfg') or define_defaults(**kwargs)
|
|
@@ -149,13 +149,18 @@ def collect_globs(
|
|
|
149
149
|
type_str = type_strs.get(file_type)
|
|
150
150
|
# Remote path (SSH)
|
|
151
151
|
find_cmd = get_find_cmd(
|
|
152
|
+
directories=kwargs.get("directories"),
|
|
153
|
+
cfg=kwargs.get('cfg'),
|
|
152
154
|
mindepth=mindepth,
|
|
153
155
|
maxdepth=maxdepth,
|
|
154
156
|
depth=depth,
|
|
155
157
|
file_type=file_type,
|
|
156
|
-
**
|
|
158
|
+
**user_pass_host_key,
|
|
159
|
+
)
|
|
160
|
+
result = run_pruned_func(run_cmd,find_cmd,
|
|
161
|
+
**kwargs
|
|
162
|
+
|
|
157
163
|
)
|
|
158
|
-
result = run_pruned_func(run_cmd,find_cmd,**kwargs)
|
|
159
164
|
return_result = [res for res in result.split('\n') if res]
|
|
160
165
|
return_results[type_str]=return_result
|
|
161
166
|
if len(file_types) == 1:
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# attach_functions.py — single helper you can import anywhere
|
|
2
2
|
# attach_dynamic.py
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
|
|
4
|
+
from .find_collect import get_files_and_dirs
|
|
5
5
|
from ..imports import *
|
|
6
6
|
ABSPATH = os.path.abspath(__file__)
|
|
7
7
|
ABSROOT = os.path.dirname(ABSPATH)
|
|
8
|
+
|
|
8
9
|
def caller_path():
|
|
9
10
|
frame = inspect.stack()[1]
|
|
10
11
|
return os.path.abspath(frame.filename)
|
|
@@ -200,6 +201,7 @@ def get_dirs(root = None):
|
|
|
200
201
|
dirpaths = [get_dir(root,item) for item in os.listdir(root) if check_dir_item(root,item)]
|
|
201
202
|
return dirpaths
|
|
202
203
|
def ifFunctionsInFile(root):
|
|
204
|
+
input(root)
|
|
203
205
|
items = [os.path.join(root, "functions"),os.path.join(root, "functions.py")]
|
|
204
206
|
for item in items:
|
|
205
207
|
if os.path.exists(item):
|
|
@@ -210,33 +212,37 @@ def get_for_all_tabs(root = None):
|
|
|
210
212
|
root = root or caller_path()
|
|
211
213
|
if os.path.isfile(root):
|
|
212
214
|
root = os.path.dirname(root)
|
|
213
|
-
all_tabs =
|
|
215
|
+
all_tabs = get_files_and_dirs(root,allowed_patterns='*Tab')[0]
|
|
216
|
+
|
|
214
217
|
for ROOT in all_tabs:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
apply_inits(ROOT)
|
|
219
|
-
else:
|
|
220
|
-
apply_inits(ROOT)
|
|
218
|
+
[apply_inits(os.path.join(ROOT,func)) for func in os.listdir(ROOT) if 'functions' in func]
|
|
219
|
+
|
|
220
|
+
|
|
221
221
|
|
|
222
222
|
|
|
223
223
|
def apply_inits(ROOT):
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
filepaths=[ROOT]
|
|
225
|
+
TAB_DIR = os.path.dirname(ROOT)
|
|
226
|
+
INIT_DIR = None
|
|
227
|
+
if_fun_dir=False
|
|
228
|
+
## if os.path.isfile(ROOT):
|
|
229
|
+
## dirname= os.path.dirname(ROOT)
|
|
230
|
+
## basename= os.path.basename(ROOT)
|
|
231
|
+
## functions_dir = os.path.join(dirname,'functions')
|
|
232
|
+
## functions_path = os.path.join(functions_dir,basename)
|
|
233
|
+
## input(get_clean_imports(ROOT))
|
|
234
|
+
##
|
|
235
|
+
## os.makedirs(functions_dir,exist_ok=True)
|
|
236
|
+
## shutil.move(ROOT,functions_path)
|
|
237
|
+
## ROOT=functions_dir
|
|
238
|
+
if os.path.isdir(ROOT):
|
|
239
|
+
TAB_DIR = os.path.dirname(ROOT)
|
|
240
|
+
INIT_DIR = ROOT
|
|
241
|
+
filepaths = get_files_and_dirs(directory=INIT_DIR,allowed_exts='py',add=True)[-1]
|
|
242
|
+
if_fun_dir=True
|
|
243
|
+
input(filepaths)
|
|
226
244
|
|
|
227
|
-
|
|
228
|
-
if if_fun_dir != None:
|
|
229
|
-
|
|
230
|
-
if if_fun_dir:
|
|
231
|
-
CFG = define_defaults(allowed_exts='.py',
|
|
232
|
-
unallowed_exts = True,
|
|
233
|
-
exclude_types = True,
|
|
234
|
-
exclude_dirs = True,
|
|
235
|
-
exclude_patterns = True)
|
|
236
|
-
_,filepaths = get_files_and_dirs(FUNCS_DIR,cfg=CFG)
|
|
237
|
-
|
|
238
|
-
else:
|
|
239
|
-
filepaths = [FUNCS_DIR]
|
|
245
|
+
|
|
240
246
|
|
|
241
247
|
# Parse top-level def names
|
|
242
248
|
def extract_funcs(path: str):
|
|
@@ -246,7 +252,7 @@ def apply_inits(ROOT):
|
|
|
246
252
|
if m:
|
|
247
253
|
funcs.append(m.group(1))
|
|
248
254
|
return funcs
|
|
249
|
-
|
|
255
|
+
|
|
250
256
|
# Build functions/__init__.py that re-exports all discovered functions
|
|
251
257
|
import_lines = []
|
|
252
258
|
all_funcs = []
|
|
@@ -258,7 +264,7 @@ def apply_inits(ROOT):
|
|
|
258
264
|
all_funcs.extend(funcs)
|
|
259
265
|
if if_fun_dir:
|
|
260
266
|
functions_init = "\n".join(import_lines) + ("\n" if import_lines else "")
|
|
261
|
-
write_to_file(contents=functions_init, file_path=os.path.join(
|
|
267
|
+
write_to_file(contents=functions_init, file_path=os.path.join(INIT_DIR, "__init__.py"))
|
|
262
268
|
|
|
263
269
|
# Prepare the tuple literal of function names for import + loop
|
|
264
270
|
uniq_funcs = sorted(set(all_funcs))
|
|
@@ -267,9 +273,10 @@ def apply_inits(ROOT):
|
|
|
267
273
|
# Generate apiConsole/initFuncs.py using the safer setattr-loop
|
|
268
274
|
init_funcs_src = textwrap.dedent(f"""\
|
|
269
275
|
|
|
270
|
-
|
|
276
|
+
|
|
277
|
+
from abstract_utilities import get_logFile
|
|
271
278
|
from .functions import ({func_tuple})
|
|
272
|
-
|
|
279
|
+
logger=get_logFile(__name__)
|
|
273
280
|
def initFuncs(self):
|
|
274
281
|
try:
|
|
275
282
|
for f in ({func_tuple}):
|
|
@@ -279,8 +286,9 @@ def apply_inits(ROOT):
|
|
|
279
286
|
return self
|
|
280
287
|
""")
|
|
281
288
|
|
|
282
|
-
write_to_file(contents=init_funcs_src, file_path=os.path.join(
|
|
289
|
+
write_to_file(contents=init_funcs_src, file_path=os.path.join(TAB_DIR, "initFuncs.py"))
|
|
283
290
|
|
|
284
291
|
def call_for_all_tabs():
|
|
285
292
|
root = get_caller_dir(2)
|
|
293
|
+
|
|
286
294
|
get_for_all_tabs(root)
|
|
@@ -206,7 +206,7 @@ def ifFunctionsInFile(root):
|
|
|
206
206
|
|
|
207
207
|
|
|
208
208
|
def get_for_all_tabs(root = None):
|
|
209
|
-
root = root or
|
|
209
|
+
root = root or get_initial_caller_dir()
|
|
210
210
|
if os.path.isfile(root):
|
|
211
211
|
root = os.path.dirname(root)
|
|
212
212
|
all_tabs = get_dirs(root = root)
|
|
@@ -261,9 +261,9 @@ def apply_inits(ROOT):
|
|
|
261
261
|
# Generate apiConsole/initFuncs.py using the safer setattr-loop
|
|
262
262
|
init_funcs_src = textwrap.dedent(f"""\
|
|
263
263
|
|
|
264
|
-
|
|
264
|
+
from abstract_utilities import get_logFile
|
|
265
265
|
from .functions import ({func_tuple})
|
|
266
|
-
|
|
266
|
+
logger=get_logFile(__name__)
|
|
267
267
|
def initFuncs(self):
|
|
268
268
|
try:
|
|
269
269
|
for f in ({func_tuple}):
|
|
@@ -276,5 +276,5 @@ def apply_inits(ROOT):
|
|
|
276
276
|
write_to_file(contents=init_funcs_src, file_path=os.path.join(ROOT, "initFuncs.py"))
|
|
277
277
|
|
|
278
278
|
def call_for_all_tabs():
|
|
279
|
-
root =
|
|
279
|
+
root = get_initial_caller_dir()
|
|
280
280
|
get_for_all_tabs(root)
|
|
@@ -320,13 +320,12 @@ def define_all_params(*args, **kwargs) -> AllParams:
|
|
|
320
320
|
merged = asdict(search_params)
|
|
321
321
|
|
|
322
322
|
merged.update({
|
|
323
|
-
"cfg":cfg,
|
|
324
323
|
"directories":directories,
|
|
325
324
|
"allowed": allowed,
|
|
326
325
|
"include_files": include_files,
|
|
327
326
|
"recursive": recursive, # override existing value safely
|
|
328
327
|
})
|
|
329
|
-
|
|
328
|
+
input(merged)
|
|
330
329
|
# Step 6: instantiate AllParams
|
|
331
330
|
return AllParams(**merged)
|
|
332
331
|
def get_file_filters(*args, **kwargs) -> AllParams:
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from ...read_write_utils import read_from_file,write_to_file,get_text_or_read
|
|
2
|
+
from ...string_utils import eatAll,eatInner,eatElse,clean_line
|
|
3
|
+
from ...class_utils import if_none_change,if_none_default,get_true_globals,get_initial_caller_dir,get_caller_path,get_caller_dir,if_none_default
|
|
4
|
+
from ...list_utils import make_list
|
|
5
|
+
from ...path_utils import get_file_parts
|
|
6
|
+
from ...type_utils import is_number,make_list
|
|
7
|
+
from ...file_utils import collect_filepaths,collect_globs
|
|
8
|
+
from ...directory_utils import get_shortest_path,get_common_root
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
from ..imports import *
|
|
2
|
+
def find_top_package_dir(p: Path) -> Path | None:
|
|
3
|
+
p = p.resolve()
|
|
4
|
+
if p.is_file():
|
|
5
|
+
p = p.parent
|
|
6
|
+
top = None
|
|
7
|
+
while (p / "__init__.py").exists():
|
|
8
|
+
top = p
|
|
9
|
+
if p.parent == p:
|
|
10
|
+
break
|
|
11
|
+
p = p.parent
|
|
12
|
+
return top
|
|
2
13
|
def get_Path(path):
|
|
3
14
|
if isinstance(path,str):
|
|
4
15
|
path = Path(str(path))
|
|
@@ -40,3 +40,7 @@ def extract_class(path: str):
|
|
|
40
40
|
if m:
|
|
41
41
|
funcs.append(m.group(1))
|
|
42
42
|
return funcs
|
|
43
|
+
def get_all_py_file_paths(directory,*args,**kwargs):
|
|
44
|
+
globs = collect_globs(directory,*args,allowed_exts='.py',**kwargs)
|
|
45
|
+
globs = [glo for glo in globs.get('files') if glo]
|
|
46
|
+
return globs
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# --- auto-package bootstrap (run-safe) ---------------------------------
|
|
2
|
+
from ..imports import *
|
|
3
|
+
from .dot_utils import get_dot_range
|
|
4
|
+
from .sysroot_utils import get_sysroot,get_import_with_sysroot,get_py_files,get_all_py_sysroots
|
|
5
|
+
from .extract_utils import get_all_py_file_paths
|
|
6
|
+
def clean_imports(imports,commaClean=True):
|
|
7
|
+
chars=["*"]
|
|
8
|
+
if not commaClean:
|
|
9
|
+
chars.append(',')
|
|
10
|
+
if isinstance(imports,str):
|
|
11
|
+
imports = imports.split(',')
|
|
12
|
+
return [eatElse(imp,chars=chars) for imp in imports if imp]
|
|
13
|
+
def get_dot_range(import_pkg):
|
|
14
|
+
count = 0
|
|
15
|
+
for char in import_pkg:
|
|
16
|
+
if char != '.':
|
|
17
|
+
break
|
|
18
|
+
count+=1
|
|
19
|
+
return count
|
|
20
|
+
def get_cleaned_import_list(line,commaClean=True):
|
|
21
|
+
cleaned_import_list=[]
|
|
22
|
+
if IMPORT_TAG in line:
|
|
23
|
+
imports = line.split(IMPORT_TAG)[1]
|
|
24
|
+
cleaned_import_list+=clean_imports(imports,commaClean=commaClean)
|
|
25
|
+
return cleaned_import_list
|
|
26
|
+
def get_module_from_import(imp,path=None):
|
|
27
|
+
path = path or os.getcwd()
|
|
28
|
+
i = get_dot_range(imp)
|
|
29
|
+
imp = eatAll(imp,'.')
|
|
30
|
+
sysroot = get_sysroot(path,i)
|
|
31
|
+
return os.path.join(sysroot, imp)
|
|
32
|
+
|
|
33
|
+
def safe_import(name: str, *, package: str | None = None, member: str | None = None, file: str | None = None):
|
|
34
|
+
"""
|
|
35
|
+
Wrapper over importlib.import_module that:
|
|
36
|
+
- if `name` is relative (starts with '.'), ensures `package` is set.
|
|
37
|
+
- if `package` is missing, derives it from `file` (defaults to __file__).
|
|
38
|
+
"""
|
|
39
|
+
file = file or __file__
|
|
40
|
+
ensure_package_context(file)
|
|
41
|
+
if name.startswith(".") and not package:
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
pkg_name = get_module_from_import(name,path=None)
|
|
45
|
+
# also set __package__ if we are running as a script
|
|
46
|
+
if __name__ == "__main__" and (not globals().get("__package__")):
|
|
47
|
+
globals()["__package__"] = pkg_name
|
|
48
|
+
package = pkg_name
|
|
49
|
+
|
|
50
|
+
mod = importlib.import_module(name, package=package)
|
|
51
|
+
return getattr(mod, member) if member else mod
|
|
52
|
+
|
|
53
|
+
def dynamic_import(module_path: str, namespace: dict, all_imports = None):
|
|
54
|
+
"""
|
|
55
|
+
Emulates:
|
|
56
|
+
from module_path import *
|
|
57
|
+
but includes private (_xxx) names too.
|
|
58
|
+
"""
|
|
59
|
+
all_imports = if_none_change(all_imports,True)
|
|
60
|
+
if module_path:
|
|
61
|
+
module = importlib.import_module(module_path)
|
|
62
|
+
# Import literally everything except dunders, unless you want them too.
|
|
63
|
+
names = [n for n in dir(module) if n and ((not all_imports and not n.startswith("_")) or all_imports)]
|
|
64
|
+
for name in names:
|
|
65
|
+
namespace[name] = getattr(module, name)
|
|
66
|
+
return module
|
|
67
|
+
def get_monorepo_root(directory=None,files=None):
|
|
68
|
+
directory = directory or get_initial_caller_dir()
|
|
69
|
+
|
|
70
|
+
py_files = get_all_py_file_paths(directory,add=True)
|
|
71
|
+
sysroots = get_all_py_sysroots(directory=directory,files=py_files)
|
|
72
|
+
monorepo_root = get_common_root(sysroots)
|
|
73
|
+
return monorepo_root
|
|
74
|
+
def switch_to_monorepo_root(directory=None,files=None):
|
|
75
|
+
monorepo_root = get_monorepo_root(directory=directory,files=files)
|
|
76
|
+
if str(monorepo_root) not in sys.path:
|
|
77
|
+
sys.path.insert(0, str(monorepo_root))
|
|
78
|
+
return str(monorepo_root)
|
|
79
|
+
def get_all_imports(directory=None,sysroot=None,globs=None):
|
|
80
|
+
globs = globs or get_true_globals() or globals()
|
|
81
|
+
directory = directory or get_initial_caller_dir()
|
|
82
|
+
files = collect_globs(directory=directory,allowed_exts='.py').get('files')
|
|
83
|
+
sysroot = sysroot or switch_to_monorepo_root(directory=directory,files=files)
|
|
84
|
+
for glo in files:
|
|
85
|
+
imp = get_import_with_sysroot(glo, sysroot)
|
|
86
|
+
dynamic_import(imp, globs)
|
|
87
|
+
def get_all_imports_for_class(self, directory=None, sysroot=None, include_private=True):
|
|
88
|
+
"""
|
|
89
|
+
Load all modules under `directory` and assign their exports as attributes
|
|
90
|
+
on the class instance (self).
|
|
91
|
+
"""
|
|
92
|
+
directory = directory or get_initial_caller_dir()
|
|
93
|
+
files = collect_globs(directory=directory, allowed_exts='.py').get("files")
|
|
94
|
+
|
|
95
|
+
# Compute sysroot (monorepo root)
|
|
96
|
+
sysroot = sysroot or switch_to_monorepo_root(directory=directory, files=files)
|
|
97
|
+
|
|
98
|
+
for glo in files:
|
|
99
|
+
mod_path = get_import_with_sysroot(glo, sysroot)
|
|
100
|
+
module = importlib.import_module(mod_path)
|
|
101
|
+
|
|
102
|
+
for name in dir(module):
|
|
103
|
+
if name.startswith("__"):
|
|
104
|
+
continue
|
|
105
|
+
if not include_private and name.startswith("_"):
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
setattr(self, name, getattr(module, name))
|
|
109
|
+
|
|
110
|
+
return self
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from ..imports import *
|
|
3
3
|
from .import_functions import *
|
|
4
4
|
from ...safe_utils import *
|
|
5
|
-
|
|
5
|
+
from .sysroot_utils import get_import_with_sysroot
|
|
6
6
|
def try_is_file(file_path):
|
|
7
7
|
try:
|
|
8
8
|
return os.path.isfile(file_path)
|
|
@@ -29,36 +29,7 @@ def get_pkg_or_init(pkg_path):
|
|
|
29
29
|
if try_is_dir(pkg_path):
|
|
30
30
|
if os.path.isfile(pkg_init_path):
|
|
31
31
|
return pkg_init_path
|
|
32
|
-
def get_import_with_sysroot(file_path, sysroot):
|
|
33
|
-
"""
|
|
34
|
-
Rewrite imports like:
|
|
35
|
-
from imports.constants import *
|
|
36
|
-
into:
|
|
37
|
-
from <relative_path>.imports.constants import *
|
|
38
|
-
Where <relative_path> is computed relative to sysroot.
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
# Absolute paths
|
|
43
|
-
file_dir = os.path.dirname(os.path.abspath(file_path))
|
|
44
|
-
sysroot = os.path.abspath(sysroot)
|
|
45
|
-
|
|
46
|
-
# Compute relative path
|
|
47
|
-
relpath = os.path.relpath(file_dir, sysroot)
|
|
48
|
-
input(relpath)
|
|
49
|
-
bare_rel = eatAll(relpath,'.')
|
|
50
|
-
|
|
51
|
-
# Turn filesystem path into dotted python path
|
|
52
|
-
if relpath == ".":
|
|
53
|
-
dotted = ""
|
|
54
|
-
else:
|
|
55
|
-
dotted = ".".join(part for part in relpath.split(os.sep) if part)
|
|
56
|
-
if bare_rel.startswith('/') and dotted.startswith('.'):
|
|
57
|
-
dotted = dotted[1:]
|
|
58
|
-
|
|
59
32
|
|
|
60
|
-
# Build final rewritten import
|
|
61
|
-
return dotted
|
|
62
33
|
|
|
63
34
|
|
|
64
35
|
def ensure_import_pkg_js(import_pkg_js,file_path=None):
|