kevin-toolbox-dev 1.4.9__tar.gz → 1.4.10__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.
- kevin-toolbox-dev-1.4.10/PKG-INFO +101 -0
- kevin-toolbox-dev-1.4.10/README.md +80 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/__init__.py +2 -2
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +2 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +10 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +17 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +24 -74
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager_wto_strategy.py +157 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +1 -0
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/for_seq/sample_subset_most_evenly.py +50 -0
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/redirector/__init__.py +1 -0
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/redirector/redirectable_sequence_fetcher.py +258 -0
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/sampler/__init__.py +1 -0
- kevin-toolbox-dev-1.4.10/kevin_toolbox/computer_science/algorithm/sampler/reservoir_sampler.py +116 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +1 -1
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +18 -7
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +8 -1
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +2 -1
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +1 -4
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +16 -4
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/get_format.py +3 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_logging/build_logger.py +3 -1
- kevin-toolbox-dev-1.4.10/kevin_toolbox_dev.egg-info/PKG-INFO +101 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox_dev.egg-info/SOURCES.txt +6 -0
- kevin-toolbox-dev-1.4.9/PKG-INFO +0 -70
- kevin-toolbox-dev-1.4.9/README.md +0 -49
- kevin-toolbox-dev-1.4.9/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -1
- kevin-toolbox-dev-1.4.9/kevin_toolbox_dev.egg-info/PKG-INFO +0 -70
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/decorator/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/decorator/restore_original_work_path.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/decorator/retry.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_process_execute.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_1.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_2.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/registration/serializer_for_registry_execution.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/dangerous/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/excel/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/excel/write_excel_with_matrix.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/link/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/link/find_links.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/find_tables.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/generate_table.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/table/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/data_flow/file/markdown/utils/save_images_in_ndl.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/temperate/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/developing/test.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/test/test_check_.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/test/test_variable_.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/test/test_version.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/variable_/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/variable_/env_vars_parser.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/version/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/version/compare_version.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/version/parse_version.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/cache.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/download_file.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/fetch_content.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/fetch_metadata.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/get_response.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/network/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_from_record.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/get_output_path.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/save_plot.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/save_record.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_matplotlib/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/get_rng_state.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/set_rng_state.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/copy.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/organize/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/organize/group_files_by_timestamp.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/pack.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/remove.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/unpack.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_os/walk.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_streamlit/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_streamlit/markdown/show.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_test/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox/utils/variable.py +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/pyproject.toml +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/setup.cfg +0 -0
- {kevin-toolbox-dev-1.4.9 → kevin-toolbox-dev-1.4.10}/setup.py +0 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: kevin-toolbox-dev
|
3
|
+
Version: 1.4.10
|
4
|
+
Summary: 一个常用的工具代码包集合
|
5
|
+
Home-page: https://github.com/cantbeblank96/kevin_toolbox
|
6
|
+
Download-URL: https://github.com/username/your-package/archive/refs/tags/v1.0.0.tar.gz
|
7
|
+
Author: kevin hsu
|
8
|
+
Author-email: xukaiming1996@163.com
|
9
|
+
License: MIT
|
10
|
+
Keywords: mathematics,pytorch,numpy,machine-learning,algorithm
|
11
|
+
Platform: UNKNOWN
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
13
|
+
Classifier: Programming Language :: Python
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
15
|
+
Requires-Python: >=3.6
|
16
|
+
Description-Content-Type: text/markdown
|
17
|
+
Provides-Extra: plot
|
18
|
+
Provides-Extra: rest
|
19
|
+
|
20
|
+
# kevin_toolbox
|
21
|
+
|
22
|
+
一个通用的工具代码包集合
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
环境要求
|
27
|
+
|
28
|
+
```shell
|
29
|
+
numpy>=1.19
|
30
|
+
pytorch>=1.2
|
31
|
+
```
|
32
|
+
|
33
|
+
安装方法:
|
34
|
+
|
35
|
+
```shell
|
36
|
+
pip install kevin-toolbox --no-dependencies
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
[项目地址 Repo](https://github.com/cantbeblank96/kevin_toolbox)
|
42
|
+
|
43
|
+
[使用指南 User_Guide](./notes/User_Guide.md)
|
44
|
+
|
45
|
+
[免责声明 Disclaimer](./notes/Disclaimer.md)
|
46
|
+
|
47
|
+
[版本更新记录](./notes/Release_Record.md):
|
48
|
+
|
49
|
+
- v 1.4.10 (2025-04-11)【new feature】【bug fix】
|
50
|
+
|
51
|
+
- patches.for_logging
|
52
|
+
- modify build_logger() to allow parameter level to accept str input,允许参数 level 接受str输入,比如“DEBUG”或者“INFO”。
|
53
|
+
|
54
|
+
- computer_science.algorithm
|
55
|
+
- cache_manager
|
56
|
+
- 【new feature】add load_state_dict(), state_dict() to Cache_Base, Memo_Cache, Cache_Manager ,增加加载和保存状态的相关接口。
|
57
|
+
- add Cache_Manager_wto_Strategy,新增一个不绑定任何策略的缓存管理器,可以视为容量无上限的特殊情况
|
58
|
+
- refactor Cache_Manager,基于 Cache_Manager_wto_Strategy 对 Cache_Manager 代码进行简化和重构。
|
59
|
+
- 【new feature】redirector
|
60
|
+
- 该新增模块包含重定向功能的函数和类。所谓重定向,其本质是:**原目标失效或不合适时,自动转向一个新的目标,以保证流程不中断或获得正确结果**。
|
61
|
+
- add Redirectable_Sequence_Fetcher,用于从给定 seq 中获取元素,可以通过自动跳转来处理获取失败的情况。
|
62
|
+
- 功能描述:
|
63
|
+
1. 对于给定的索引 idx,若能通过 seq(idx) 成功获取,则直接返回获取的结果。
|
64
|
+
2. 若不能成功获取,则会根据给定的规则修改索引(如idx-1)重新尝试获取,递归调用直至获取成功或者递归调用次数达到上限。
|
65
|
+
1. 若不能成功获取,则会根据给定的规则修改索引(如idx-1)重新尝试获取,递归调用直至获取成功或者递归调用次数达到上限。
|
66
|
+
2. 当失败次数达到上限后,则不再进行尝试并直接返回重新向后的新的 idx 的结果。
|
67
|
+
3. 若在此过程中原来失败的 idx 又能再次获取成功,则将失败次数减1,直至归零并删除该记录。
|
68
|
+
3. 若递归次数达到上限,则进行报错或者返回给定的默认值。
|
69
|
+
1. 若开启了跳转记忆功能,在重试过程中,一旦某次调用成功,记录原始索引与最终有效索引之间的映射关系。
|
70
|
+
- 添加了对应的测试用例。
|
71
|
+
- for_seq
|
72
|
+
- 【new feature】add sample_subset_most_evenly(),对列表按给定比例or数量进行采样,并返回一个新的列表,同时保证列表中每个元素在新列表中的占比尽量相近。
|
73
|
+
- redirector
|
74
|
+
- 【new feature】modify Redirectable_Sequence_Fetcher,增加了 seed 参数并在 state_dict 中增加 rng_state 项,以便控制(保存和重现)随机行为。
|
75
|
+
- 【new feature】sampler
|
76
|
+
- 该新增模块包含采样相关的函数和类。
|
77
|
+
- add Reservoir_Sampler,水库采样器。
|
78
|
+
|
79
|
+
- data_flow.file.kevin_notation
|
80
|
+
|
81
|
+
- 【bug fix】fix bug in Kevin_Notation_Reader and Kevin_Notation_Writer
|
82
|
+
|
83
|
+
- bug 原因:由于之前的版本默认启用"//"作为注释符号,因此导致无法正确读取带有"//"的值
|
84
|
+
|
85
|
+
- 解决:在 Kevin_Notation_Reader 和 Kevin_Notation_Writer 取消默认使用注释,并限定只有在 metadata 中显式指定注释标志符才会启用
|
86
|
+
|
87
|
+
- 注意:该修改可能导致原本带有注释的旧版本 .kvt 文件无法被正确读取,遇到该情况时,可以尝试将`# --metadata--`部分修改为:
|
88
|
+
|
89
|
+
```text
|
90
|
+
# --metadata--
|
91
|
+
# sep
|
92
|
+
|
93
|
+
# comment_flag
|
94
|
+
//
|
95
|
+
...
|
96
|
+
```
|
97
|
+
|
98
|
+
- 添加了对应的测试用例。
|
99
|
+
|
100
|
+
|
101
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# kevin_toolbox
|
2
|
+
|
3
|
+
一个通用的工具代码包集合
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
环境要求
|
8
|
+
|
9
|
+
```shell
|
10
|
+
numpy>=1.19
|
11
|
+
pytorch>=1.2
|
12
|
+
```
|
13
|
+
|
14
|
+
安装方法:
|
15
|
+
|
16
|
+
```shell
|
17
|
+
pip install kevin-toolbox --no-dependencies
|
18
|
+
```
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
[项目地址 Repo](https://github.com/cantbeblank96/kevin_toolbox)
|
23
|
+
|
24
|
+
[使用指南 User_Guide](./notes/User_Guide.md)
|
25
|
+
|
26
|
+
[免责声明 Disclaimer](./notes/Disclaimer.md)
|
27
|
+
|
28
|
+
[版本更新记录](./notes/Release_Record.md):
|
29
|
+
|
30
|
+
- v 1.4.10 (2025-04-11)【new feature】【bug fix】
|
31
|
+
|
32
|
+
- patches.for_logging
|
33
|
+
- modify build_logger() to allow parameter level to accept str input,允许参数 level 接受str输入,比如“DEBUG”或者“INFO”。
|
34
|
+
|
35
|
+
- computer_science.algorithm
|
36
|
+
- cache_manager
|
37
|
+
- 【new feature】add load_state_dict(), state_dict() to Cache_Base, Memo_Cache, Cache_Manager ,增加加载和保存状态的相关接口。
|
38
|
+
- add Cache_Manager_wto_Strategy,新增一个不绑定任何策略的缓存管理器,可以视为容量无上限的特殊情况
|
39
|
+
- refactor Cache_Manager,基于 Cache_Manager_wto_Strategy 对 Cache_Manager 代码进行简化和重构。
|
40
|
+
- 【new feature】redirector
|
41
|
+
- 该新增模块包含重定向功能的函数和类。所谓重定向,其本质是:**原目标失效或不合适时,自动转向一个新的目标,以保证流程不中断或获得正确结果**。
|
42
|
+
- add Redirectable_Sequence_Fetcher,用于从给定 seq 中获取元素,可以通过自动跳转来处理获取失败的情况。
|
43
|
+
- 功能描述:
|
44
|
+
1. 对于给定的索引 idx,若能通过 seq(idx) 成功获取,则直接返回获取的结果。
|
45
|
+
2. 若不能成功获取,则会根据给定的规则修改索引(如idx-1)重新尝试获取,递归调用直至获取成功或者递归调用次数达到上限。
|
46
|
+
1. 若不能成功获取,则会根据给定的规则修改索引(如idx-1)重新尝试获取,递归调用直至获取成功或者递归调用次数达到上限。
|
47
|
+
2. 当失败次数达到上限后,则不再进行尝试并直接返回重新向后的新的 idx 的结果。
|
48
|
+
3. 若在此过程中原来失败的 idx 又能再次获取成功,则将失败次数减1,直至归零并删除该记录。
|
49
|
+
3. 若递归次数达到上限,则进行报错或者返回给定的默认值。
|
50
|
+
1. 若开启了跳转记忆功能,在重试过程中,一旦某次调用成功,记录原始索引与最终有效索引之间的映射关系。
|
51
|
+
- 添加了对应的测试用例。
|
52
|
+
- for_seq
|
53
|
+
- 【new feature】add sample_subset_most_evenly(),对列表按给定比例or数量进行采样,并返回一个新的列表,同时保证列表中每个元素在新列表中的占比尽量相近。
|
54
|
+
- redirector
|
55
|
+
- 【new feature】modify Redirectable_Sequence_Fetcher,增加了 seed 参数并在 state_dict 中增加 rng_state 项,以便控制(保存和重现)随机行为。
|
56
|
+
- 【new feature】sampler
|
57
|
+
- 该新增模块包含采样相关的函数和类。
|
58
|
+
- add Reservoir_Sampler,水库采样器。
|
59
|
+
|
60
|
+
- data_flow.file.kevin_notation
|
61
|
+
|
62
|
+
- 【bug fix】fix bug in Kevin_Notation_Reader and Kevin_Notation_Writer
|
63
|
+
|
64
|
+
- bug 原因:由于之前的版本默认启用"//"作为注释符号,因此导致无法正确读取带有"//"的值
|
65
|
+
|
66
|
+
- 解决:在 Kevin_Notation_Reader 和 Kevin_Notation_Writer 取消默认使用注释,并限定只有在 metadata 中显式指定注释标志符才会启用
|
67
|
+
|
68
|
+
- 注意:该修改可能导致原本带有注释的旧版本 .kvt 文件无法被正确读取,遇到该情况时,可以尝试将`# --metadata--`部分修改为:
|
69
|
+
|
70
|
+
```text
|
71
|
+
# --metadata--
|
72
|
+
# sep
|
73
|
+
|
74
|
+
# comment_flag
|
75
|
+
//
|
76
|
+
...
|
77
|
+
```
|
78
|
+
|
79
|
+
- 添加了对应的测试用例。
|
80
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__ = "1.4.
|
1
|
+
__version__ = "1.4.10"
|
2
2
|
|
3
3
|
|
4
4
|
import os
|
@@ -12,5 +12,5 @@ os.system(
|
|
12
12
|
os.system(
|
13
13
|
f'python {os.path.split(__file__)[0]}/env_info/check_validity_and_uninstall.py '
|
14
14
|
f'--package_name kevin-toolbox-dev '
|
15
|
-
f'--expiration_timestamp
|
15
|
+
f'--expiration_timestamp 1759927714 --verbose 0'
|
16
16
|
)
|
@@ -12,6 +12,7 @@ class Cache_Base(ABC):
|
|
12
12
|
- 判断是否命中 has()
|
13
13
|
- 获取缓存已占空间 len()
|
14
14
|
- 清空所有内容 clear()
|
15
|
+
- 加载和保存状态 load_state_dict(), state_dict()
|
15
16
|
等方法。
|
16
17
|
|
17
18
|
对外提供:
|
@@ -21,6 +22,7 @@ class Cache_Base(ABC):
|
|
21
22
|
- 判断是否命中 has()
|
22
23
|
- 获取缓存已占空间 len()
|
23
24
|
- 清空所有内容 clear()
|
25
|
+
- 加载和保存状态 load_state_dict(), state_dict()
|
24
26
|
等接口。
|
25
27
|
"""
|
26
28
|
|
@@ -69,6 +71,14 @@ class Cache_Base(ABC):
|
|
69
71
|
def clear(self):
|
70
72
|
pass
|
71
73
|
|
74
|
+
@abstractmethod
|
75
|
+
def load_state_dict(self, state_dict):
|
76
|
+
pass
|
77
|
+
|
78
|
+
@abstractmethod
|
79
|
+
def state_dict(self, b_deepcopy=True):
|
80
|
+
pass
|
81
|
+
|
72
82
|
def __getitem__(self, key):
|
73
83
|
# self[key]
|
74
84
|
return self.read(key=key)
|
@@ -30,6 +30,23 @@ class Memo_Cache(Cache_Base):
|
|
30
30
|
def clear(self):
|
31
31
|
self.cache_s.clear()
|
32
32
|
|
33
|
+
def load_state_dict(self, state_dict):
|
34
|
+
"""
|
35
|
+
加载状态
|
36
|
+
"""
|
37
|
+
self.clear()
|
38
|
+
self.cache_s.update(state_dict["cache_s"])
|
39
|
+
|
40
|
+
def state_dict(self, b_deepcopy=True):
|
41
|
+
"""
|
42
|
+
获取状态
|
43
|
+
"""
|
44
|
+
temp = {"cache_s": self.cache_s}
|
45
|
+
if b_deepcopy:
|
46
|
+
import kevin_toolbox.nested_dict_list as ndl
|
47
|
+
temp = ndl.copy_(var=temp, b_deepcopy=True, b_keep_internal_references=True)
|
48
|
+
return temp
|
49
|
+
|
33
50
|
|
34
51
|
# 添加其他别名
|
35
52
|
for name in [":in_memory:Memo", ":in_memory:MC", ":in_memory:memory"]:
|
@@ -2,9 +2,10 @@ import time
|
|
2
2
|
from .strategy import Strategy_Base
|
3
3
|
from .cache import Cache_Base
|
4
4
|
from .variable import CACHE_STRATEGY_REGISTRY, CACHE_BUILDER_REGISTRY
|
5
|
+
from .cache_manager_wto_strategy import Cache_Manager_wto_Strategy
|
5
6
|
|
6
7
|
|
7
|
-
class Cache_Manager:
|
8
|
+
class Cache_Manager(Cache_Manager_wto_Strategy):
|
8
9
|
"""
|
9
10
|
缓存管理器
|
10
11
|
|
@@ -14,6 +15,7 @@ class Cache_Manager:
|
|
14
15
|
- 删除并返回条目 pop(key)
|
15
16
|
- 判断是否有该条目 has()
|
16
17
|
- 清空所有内容 clear()
|
18
|
+
- 加载和保存状态 load_state_dict(), state_dict()
|
17
19
|
|
18
20
|
并支持以下用法:
|
19
21
|
通过 len(.) 获取缓存大小,通过 in 操作符判断是否有某个条目
|
@@ -95,29 +97,7 @@ class Cache_Manager:
|
|
95
97
|
self.cache = cache # type:Cache_Base
|
96
98
|
self.metadata_s = dict() # 保存条目的相关信息
|
97
99
|
|
98
|
-
def
|
99
|
-
"""
|
100
|
-
以 key 为查询键,将 value 添加到缓存中
|
101
|
-
|
102
|
-
参数:
|
103
|
-
key:
|
104
|
-
value:
|
105
|
-
b_allow_overwrite: <boolean> 是否允许覆写缓存中已有的条目
|
106
|
-
默认为 True
|
107
|
-
"""
|
108
|
-
# 判断是否需要进行覆写
|
109
|
-
if self.cache.has(key=key):
|
110
|
-
if id(value) != id(self.cache.read(key=key)):
|
111
|
-
if b_allow_overwrite:
|
112
|
-
self.__remove_of_cache(key=key)
|
113
|
-
else:
|
114
|
-
raise KeyError(f'key: {key} already exists, modification of existing entries is prohibited')
|
115
|
-
else:
|
116
|
-
return
|
117
|
-
# 记录到缓存
|
118
|
-
self.__write_of_cache(key=key, value=value)
|
119
|
-
|
120
|
-
def __write_of_cache(self, key, value):
|
100
|
+
def _write_of_cache(self, key, value):
|
121
101
|
"""
|
122
102
|
向缓存中新增不存在的条目
|
123
103
|
"""
|
@@ -143,9 +123,9 @@ class Cache_Manager:
|
|
143
123
|
assert len(suggest_keys) == len(self.cache) - self.paras["refactor_size"], \
|
144
124
|
f'expect {len(self.cache) - self.paras["refactor_size"]} deletion suggestions, but got {len(suggest_keys)}'
|
145
125
|
for key in suggest_keys:
|
146
|
-
self.
|
126
|
+
self._remove_of_cache(key=key)
|
147
127
|
|
148
|
-
def
|
128
|
+
def _remove_of_cache(self, key):
|
149
129
|
"""
|
150
130
|
从缓存中删除存在的条目
|
151
131
|
"""
|
@@ -154,43 +134,7 @@ class Cache_Manager:
|
|
154
134
|
# 通知策略管理器
|
155
135
|
self.strategy.notified_by_remove_of_cache(key=key, metadata=metadata)
|
156
136
|
|
157
|
-
def
|
158
|
-
"""
|
159
|
-
获取 key 对应的值
|
160
|
-
|
161
|
-
参数:
|
162
|
-
key: <hashable>
|
163
|
-
default: 默认值
|
164
|
-
当 key 在缓存中不存在时返回
|
165
|
-
default_factory: <callable> 用于产生默认值的函数
|
166
|
-
当 key 在缓存中不存在时返回该函数的结果
|
167
|
-
使用该参数相对于 default 能延迟默认值的产生(如果不需要用到默认值就不生成),提高效率
|
168
|
-
注意!!上面两个参数同时指定时,将以前者为准。
|
169
|
-
b_add_if_not_found: <boolean> 当 key 在缓存中不存在时,是否添加到缓存中
|
170
|
-
默认为 False
|
171
|
-
"""
|
172
|
-
if self.cache.has(key=key):
|
173
|
-
value = self.__read_of_cache(key=key)
|
174
|
-
elif "default" in kwargs or callable(default_factory):
|
175
|
-
value = kwargs["default"] if "default" in kwargs else default_factory()
|
176
|
-
if b_add_if_not_found:
|
177
|
-
self.__write_of_cache(key=key, value=value)
|
178
|
-
else:
|
179
|
-
raise KeyError(key)
|
180
|
-
return value
|
181
|
-
|
182
|
-
def pop(self, key):
|
183
|
-
"""
|
184
|
-
从缓存中删除 key 对应的条目,并返回该条目的值
|
185
|
-
"""
|
186
|
-
if self.cache.has(key=key):
|
187
|
-
value = self.__read_of_cache(key=key)
|
188
|
-
self.__remove_of_cache(key=key)
|
189
|
-
else:
|
190
|
-
raise KeyError(key)
|
191
|
-
return value
|
192
|
-
|
193
|
-
def __read_of_cache(self, key):
|
137
|
+
def _read_of_cache(self, key):
|
194
138
|
"""
|
195
139
|
读取缓存中 已经存在的 条目
|
196
140
|
"""
|
@@ -205,20 +149,26 @@ class Cache_Manager:
|
|
205
149
|
|
206
150
|
return value
|
207
151
|
|
208
|
-
def has(self, key):
|
209
|
-
"""
|
210
|
-
判断 key 是否在缓存中
|
211
|
-
注意!!不会更新 metadata
|
212
|
-
"""
|
213
|
-
return self.cache.has(key=key)
|
214
|
-
|
215
152
|
def clear(self):
|
216
153
|
self.cache.clear()
|
217
154
|
self.metadata_s.clear()
|
218
155
|
self.strategy.notified_by_clear_of_cache()
|
219
156
|
|
220
|
-
|
221
|
-
|
157
|
+
# ---------------------- 用于保存和加载状态 ---------------------- #
|
158
|
+
def load_state_dict(self, state_dict):
|
159
|
+
"""
|
160
|
+
加载状态
|
161
|
+
"""
|
162
|
+
self.clear()
|
163
|
+
self.cache.load_state_dict(state_dict=state_dict["cache"])
|
164
|
+
self.metadata_s.update(state_dict["metadata_s"])
|
222
165
|
|
223
|
-
def
|
224
|
-
|
166
|
+
def state_dict(self, b_deepcopy=True):
|
167
|
+
"""
|
168
|
+
获取状态
|
169
|
+
"""
|
170
|
+
temp = {"cache": self.cache.state_dict(b_deepcopy=False), "metadata_s": self.metadata_s}
|
171
|
+
if b_deepcopy:
|
172
|
+
import kevin_toolbox.nested_dict_list as ndl
|
173
|
+
temp = ndl.copy_(var=temp, b_deepcopy=True, b_keep_internal_references=True)
|
174
|
+
return temp
|
@@ -0,0 +1,157 @@
|
|
1
|
+
from .cache import Cache_Base
|
2
|
+
from .variable import CACHE_BUILDER_REGISTRY
|
3
|
+
|
4
|
+
|
5
|
+
class Cache_Manager_wto_Strategy:
|
6
|
+
"""
|
7
|
+
不绑定任何策略的缓存管理器
|
8
|
+
|
9
|
+
提供以下接口:
|
10
|
+
- 添加条目 add(key, value, b_allow_overwrite)
|
11
|
+
- 获取条目 get(key, b_add_if_not_found, default_factory, default)
|
12
|
+
- 删除并返回条目 pop(key)
|
13
|
+
- 判断是否有该条目 has()
|
14
|
+
- 清空所有内容 clear()
|
15
|
+
- 加载和保存状态 load_state_dict(), state_dict()
|
16
|
+
|
17
|
+
并支持以下用法:
|
18
|
+
通过 len(.) 获取缓存大小,通过 in 操作符判断是否有某个条目
|
19
|
+
"""
|
20
|
+
|
21
|
+
def __init__(self, **kwargs):
|
22
|
+
"""
|
23
|
+
参数:
|
24
|
+
cache: <str/dict/Cache_Base> 缓存种类
|
25
|
+
"""
|
26
|
+
# 默认参数
|
27
|
+
paras = {
|
28
|
+
"cache": ":in_memory:Memo",
|
29
|
+
}
|
30
|
+
|
31
|
+
# 获取参数
|
32
|
+
paras.update(kwargs)
|
33
|
+
|
34
|
+
# 校验参数
|
35
|
+
# cache
|
36
|
+
assert isinstance(paras["cache"], (str, dict, Cache_Base)), \
|
37
|
+
"cache must be a string, dict of paras or a Cache_Base object"
|
38
|
+
if isinstance(paras["cache"], str):
|
39
|
+
cache = CACHE_BUILDER_REGISTRY.get(name=paras["cache"])()
|
40
|
+
elif isinstance(paras["cache"], dict):
|
41
|
+
cache = CACHE_BUILDER_REGISTRY.get(name=paras["cache"]["name"])(**paras["cache"].get("paras", dict()))
|
42
|
+
else:
|
43
|
+
cache = paras["cache"]
|
44
|
+
|
45
|
+
self.paras = paras
|
46
|
+
self.cache = cache # type:Cache_Base
|
47
|
+
|
48
|
+
def _write_of_cache(self, key, value):
|
49
|
+
"""
|
50
|
+
向缓存中新增不存在的条目
|
51
|
+
"""
|
52
|
+
#
|
53
|
+
self.cache.write(key=key, value=value)
|
54
|
+
|
55
|
+
def _remove_of_cache(self, key):
|
56
|
+
"""
|
57
|
+
从缓存中删除存在的条目
|
58
|
+
"""
|
59
|
+
self.cache.remove(key=key)
|
60
|
+
|
61
|
+
def _read_of_cache(self, key):
|
62
|
+
"""
|
63
|
+
读取缓存中 已经存在的 条目
|
64
|
+
"""
|
65
|
+
return self.cache.read(key=key)
|
66
|
+
|
67
|
+
def add(self, key, value, b_allow_overwrite=True):
|
68
|
+
"""
|
69
|
+
以 key 为查询键,将 value 添加到缓存中
|
70
|
+
|
71
|
+
参数:
|
72
|
+
key:
|
73
|
+
value:
|
74
|
+
b_allow_overwrite: <boolean> 是否允许覆写缓存中已有的条目
|
75
|
+
默认为 True
|
76
|
+
"""
|
77
|
+
# 判断是否需要进行覆写
|
78
|
+
if self.cache.has(key=key):
|
79
|
+
if id(value) != id(self.cache.read(key=key)):
|
80
|
+
if b_allow_overwrite:
|
81
|
+
self._remove_of_cache(key=key)
|
82
|
+
else:
|
83
|
+
raise KeyError(f'key: {key} already exists, modification of existing entries is prohibited')
|
84
|
+
else:
|
85
|
+
return
|
86
|
+
# 记录到缓存
|
87
|
+
self._write_of_cache(key=key, value=value)
|
88
|
+
|
89
|
+
def get(self, key, b_add_if_not_found=False, default_factory=None, **kwargs):
|
90
|
+
"""
|
91
|
+
获取 key 对应的值
|
92
|
+
|
93
|
+
参数:
|
94
|
+
key: <hashable>
|
95
|
+
default: 默认值
|
96
|
+
当 key 在缓存中不存在时返回
|
97
|
+
default_factory: <callable> 用于产生默认值的函数
|
98
|
+
当 key 在缓存中不存在时返回该函数的结果
|
99
|
+
使用该参数相对于 default 能延迟默认值的产生(如果不需要用到默认值就不生成),提高效率
|
100
|
+
注意!!上面两个参数同时指定时,将以前者为准。
|
101
|
+
b_add_if_not_found: <boolean> 当 key 在缓存中不存在时,是否添加到缓存中
|
102
|
+
默认为 False
|
103
|
+
"""
|
104
|
+
if self.cache.has(key=key):
|
105
|
+
value = self._read_of_cache(key=key)
|
106
|
+
elif "default" in kwargs or callable(default_factory):
|
107
|
+
value = kwargs["default"] if "default" in kwargs else default_factory()
|
108
|
+
if b_add_if_not_found:
|
109
|
+
self._write_of_cache(key=key, value=value)
|
110
|
+
else:
|
111
|
+
raise KeyError(key)
|
112
|
+
return value
|
113
|
+
|
114
|
+
def pop(self, key):
|
115
|
+
"""
|
116
|
+
从缓存中删除 key 对应的条目,并返回该条目的值
|
117
|
+
"""
|
118
|
+
if self.cache.has(key=key):
|
119
|
+
value = self._read_of_cache(key=key)
|
120
|
+
self._remove_of_cache(key=key)
|
121
|
+
else:
|
122
|
+
raise KeyError(key)
|
123
|
+
return value
|
124
|
+
|
125
|
+
def has(self, key):
|
126
|
+
"""
|
127
|
+
判断 key 是否在缓存中
|
128
|
+
注意!!不会更新 metadata
|
129
|
+
"""
|
130
|
+
return self.cache.has(key=key)
|
131
|
+
|
132
|
+
def clear(self):
|
133
|
+
self.cache.clear()
|
134
|
+
|
135
|
+
# ---------------------- 用于保存和加载状态 ---------------------- #
|
136
|
+
def load_state_dict(self, state_dict):
|
137
|
+
"""
|
138
|
+
加载状态
|
139
|
+
"""
|
140
|
+
self.clear()
|
141
|
+
self.cache.load_state_dict(state_dict=state_dict["cache"])
|
142
|
+
|
143
|
+
def state_dict(self, b_deepcopy=True):
|
144
|
+
"""
|
145
|
+
获取状态
|
146
|
+
"""
|
147
|
+
temp = {"cache": self.cache.state_dict(b_deepcopy=False)}
|
148
|
+
if b_deepcopy:
|
149
|
+
import kevin_toolbox.nested_dict_list as ndl
|
150
|
+
temp = ndl.copy_(var=temp, b_deepcopy=True, b_keep_internal_references=True)
|
151
|
+
return temp
|
152
|
+
|
153
|
+
def __len__(self):
|
154
|
+
return len(self.cache)
|
155
|
+
|
156
|
+
def __contains__(self, key):
|
157
|
+
return self.has(key)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import math
|
2
|
+
from kevin_toolbox.patches.for_numpy.random import get_rng
|
3
|
+
|
4
|
+
|
5
|
+
def sample_subset_most_evenly(inputs, ratio=None, nums=None, seed=None, rng=None, b_shuffle_the_tail=True):
|
6
|
+
"""
|
7
|
+
对列表按给定比例or数量进行采样,并返回一个新的列表,并保证列表中每个元素在新列表中的占比尽量相近
|
8
|
+
说明:
|
9
|
+
根据 ratio/nums 的值,将输入列表重复复制并可能随机打乱尾部元素以保证每个元素都有等概率被选取,
|
10
|
+
生成一个新列表,其长度约为 len(inputs) * ratio nums。
|
11
|
+
以 ratio 为例:
|
12
|
+
- 当 ratio 为整数时,返回原列表重复多次的结果;
|
13
|
+
- 当 ratio 为非整数时,除了重复复制整数倍部分外,
|
14
|
+
还会从打乱后的列表中随机选取部分元素以达到目标长度。
|
15
|
+
|
16
|
+
参数:
|
17
|
+
inputs: <iterable> 输入列表或其他可迭代对象
|
18
|
+
ratio: <float> 采样比例,
|
19
|
+
采样后新列表长度约为 len(inputs) * ratio
|
20
|
+
nums: <int> 采样数量。
|
21
|
+
b_shuffle_the_tail: <boolean> 是否对尾部进行随机打乱
|
22
|
+
默认为 True
|
23
|
+
seed: <int, optional> 随机种子,用于生成确定性随机数
|
24
|
+
默认为 None
|
25
|
+
rng: <Random, optional> 随机数生成器实例
|
26
|
+
仅在b_shuffle_the_tail=True时,以上两个参数起效,且仅需指定一个即可。
|
27
|
+
|
28
|
+
"""
|
29
|
+
nums = nums or math.ceil(len(inputs) * ratio)
|
30
|
+
assert nums >= 0
|
31
|
+
if len(inputs) == 0 or nums == 0:
|
32
|
+
return []
|
33
|
+
|
34
|
+
inputs = list(inputs)
|
35
|
+
temp = inputs.copy()
|
36
|
+
if b_shuffle_the_tail:
|
37
|
+
rng = get_rng(seed=seed, rng=rng)
|
38
|
+
rng.shuffle(temp)
|
39
|
+
|
40
|
+
outputs = [] + inputs * math.floor(nums / len(inputs)) + temp[:nums % len(inputs)]
|
41
|
+
return outputs
|
42
|
+
|
43
|
+
|
44
|
+
if __name__ == '__main__':
|
45
|
+
print(sample_subset_most_evenly(range(5), ratio=8 / 5, seed=114, b_shuffle_the_tail=False))
|
46
|
+
print(sample_subset_most_evenly(range(5), ratio=8 / 5, seed=114, b_shuffle_the_tail=True))
|
47
|
+
|
48
|
+
#
|
49
|
+
print(sample_subset_most_evenly(range(5), nums=8, seed=114, b_shuffle_the_tail=False))
|
50
|
+
print(sample_subset_most_evenly(range(5), nums=8, seed=114, b_shuffle_the_tail=True))
|
@@ -0,0 +1 @@
|
|
1
|
+
from .redirectable_sequence_fetcher import Redirectable_Sequence_Fetcher
|