kevin-toolbox-dev 1.3.8__tar.gz → 1.4.0__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.0/PKG-INFO +83 -0
- kevin-toolbox-dev-1.4.0/README.md +62 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/__init__.py +2 -2
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/registration/registry.py +3 -1
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/__init__.py +6 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/__init__.py +2 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/find_links.py +84 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +10 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/__init__.py +6 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +2 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py +106 -0
- kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown/parse_table.py → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +16 -41
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +51 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/find_tables.py +111 -0
- {kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table}/generate_table.py +14 -55
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/get_format.py +15 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +22 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/variable.py +29 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +1 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +5 -3
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +2 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +3 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show.py +10 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +40 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +81 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_torch/__init__.py +0 -0
- kevin-toolbox-dev-1.4.0/kevin_toolbox_dev.egg-info/PKG-INFO +83 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/SOURCES.txt +20 -6
- kevin-toolbox-dev-1.3.8/PKG-INFO +0 -53
- kevin-toolbox-dev-1.3.8/README.md +0 -32
- kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -6
- kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown/find_tables.py +0 -65
- kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -8
- kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown/variable.py +0 -17
- kevin-toolbox-dev-1.3.8/kevin_toolbox_dev.egg-info/PKG-INFO +0 -53
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/dangerous/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
- {kevin-toolbox-dev-1.3.8/kevin_toolbox/data_flow/file/markdown → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/utils}/save_images_in_ndl.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/decorator/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/test.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/test/test_version.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/compare_version.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/parse_version.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/cache.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/copy.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/pack.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/remove.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/unpack.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/walk.py +0 -0
- {kevin-toolbox-dev-1.3.8/kevin_toolbox/patches/for_torch → kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit}/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_test/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/pyproject.toml +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/setup.cfg +0 -0
- {kevin-toolbox-dev-1.3.8 → kevin-toolbox-dev-1.4.0}/setup.py +0 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: kevin-toolbox-dev
|
3
|
+
Version: 1.4.0
|
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.0 (2024-09-11)【bug fix】【new feature】【incompatible change】
|
50
|
+
- patches
|
51
|
+
- for_matplotlib.common_charts
|
52
|
+
- 【bug fix】fix bug in plot_confusion_matrix() for paras label_to_value_s,删除了对参数 label_to_value_s 的不合理的检验,并且支持更加自由的 label_to_value_s 设置,比如允许 label_to_value_s 中缺少 data_s 中已有的 label_idx,或者含有部分 data_s 中未见的 label_idx。
|
53
|
+
- 【bug fix】fix bug in plot_lines(),对接受的输入 data_s 进行 copy,避免后续操作引起输入意外改变。
|
54
|
+
- 增加测试用例。
|
55
|
+
- for_streamlit.markdown
|
56
|
+
- 【new feature】add show_image(),对 st.markdown 中图片显示部分的改进,能够正确显示本地的图片。
|
57
|
+
- 【new feature】add show_table(),对 st.markdown 中表格显示部分的改进,支持以下多种方式来显示表格。
|
58
|
+
- 【new feature】add show(),st.markdown 的改进版。
|
59
|
+
- 增加测试用例。
|
60
|
+
- data_flow.file
|
61
|
+
- markdown【incompatible change】【new feature】
|
62
|
+
- 【refactor and modify】
|
63
|
+
- generate_table() ==> table.generate_table()
|
64
|
+
- generate_link() ==> link.generate_link()
|
65
|
+
- save_images_in_ndl() ==> utils.save_images_in_ndl()
|
66
|
+
- parse_table() ,可以使用 table.convert_format() 来代替实现表格格式的转换
|
67
|
+
- table
|
68
|
+
- 【new feature】新增 Table_Format、get_format()、convert_format() 用于表格格式的转换,目前支持以下几种格式:
|
69
|
+
- simple_dict 简易字典模式:`{<title>: <list of value>, ...}`
|
70
|
+
- complete_dict 完整字典模式:`{<index>: {"title": <title>, "values": <list of value>}, ...}`
|
71
|
+
- matrix 矩阵形式:`{"matrix": [[...], [...], ...], "orientation":...(, "chunk_nums":..., "chunk_size":...)}`
|
72
|
+
- 【new feature】add find_tables(),查找文本中的表格
|
73
|
+
- 当 b_compact_format 设为 True,此时返回 table_ls,其中每个元素是一个 MATRIX 格式的表格
|
74
|
+
- 当 b_compact_format 设置为 False,此时返回 (table_ls, part_slices_ls, table_idx_ls),其中 part_slices_ls 是表格和表格前后文本在 text 中对应的 slice,而 table_idx_ls 指出了 part_slices_ls 中第几个元素对应的是表格,table_idx_ls 与 table_ls 依次对应。
|
75
|
+
- 【new feature】add padding_misaligned_values(), 将标题下长度不相等的 values 补齐
|
76
|
+
- convert
|
77
|
+
- 格式转换相关的函数,包括 complete_to_matrix() 和 matrix_to_complete()
|
78
|
+
- link
|
79
|
+
- 【new feature】add find_links(),查找文本中的链接。与find_tables()类似,也支持 b_compact_format 参数。
|
80
|
+
- 增加测试用例。
|
81
|
+
|
82
|
+
|
83
|
+
|
@@ -0,0 +1,62 @@
|
|
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.0 (2024-09-11)【bug fix】【new feature】【incompatible change】
|
31
|
+
- patches
|
32
|
+
- for_matplotlib.common_charts
|
33
|
+
- 【bug fix】fix bug in plot_confusion_matrix() for paras label_to_value_s,删除了对参数 label_to_value_s 的不合理的检验,并且支持更加自由的 label_to_value_s 设置,比如允许 label_to_value_s 中缺少 data_s 中已有的 label_idx,或者含有部分 data_s 中未见的 label_idx。
|
34
|
+
- 【bug fix】fix bug in plot_lines(),对接受的输入 data_s 进行 copy,避免后续操作引起输入意外改变。
|
35
|
+
- 增加测试用例。
|
36
|
+
- for_streamlit.markdown
|
37
|
+
- 【new feature】add show_image(),对 st.markdown 中图片显示部分的改进,能够正确显示本地的图片。
|
38
|
+
- 【new feature】add show_table(),对 st.markdown 中表格显示部分的改进,支持以下多种方式来显示表格。
|
39
|
+
- 【new feature】add show(),st.markdown 的改进版。
|
40
|
+
- 增加测试用例。
|
41
|
+
- data_flow.file
|
42
|
+
- markdown【incompatible change】【new feature】
|
43
|
+
- 【refactor and modify】
|
44
|
+
- generate_table() ==> table.generate_table()
|
45
|
+
- generate_link() ==> link.generate_link()
|
46
|
+
- save_images_in_ndl() ==> utils.save_images_in_ndl()
|
47
|
+
- parse_table() ,可以使用 table.convert_format() 来代替实现表格格式的转换
|
48
|
+
- table
|
49
|
+
- 【new feature】新增 Table_Format、get_format()、convert_format() 用于表格格式的转换,目前支持以下几种格式:
|
50
|
+
- simple_dict 简易字典模式:`{<title>: <list of value>, ...}`
|
51
|
+
- complete_dict 完整字典模式:`{<index>: {"title": <title>, "values": <list of value>}, ...}`
|
52
|
+
- matrix 矩阵形式:`{"matrix": [[...], [...], ...], "orientation":...(, "chunk_nums":..., "chunk_size":...)}`
|
53
|
+
- 【new feature】add find_tables(),查找文本中的表格
|
54
|
+
- 当 b_compact_format 设为 True,此时返回 table_ls,其中每个元素是一个 MATRIX 格式的表格
|
55
|
+
- 当 b_compact_format 设置为 False,此时返回 (table_ls, part_slices_ls, table_idx_ls),其中 part_slices_ls 是表格和表格前后文本在 text 中对应的 slice,而 table_idx_ls 指出了 part_slices_ls 中第几个元素对应的是表格,table_idx_ls 与 table_ls 依次对应。
|
56
|
+
- 【new feature】add padding_misaligned_values(), 将标题下长度不相等的 values 补齐
|
57
|
+
- convert
|
58
|
+
- 格式转换相关的函数,包括 complete_to_matrix() 和 matrix_to_complete()
|
59
|
+
- link
|
60
|
+
- 【new feature】add find_links(),查找文本中的链接。与find_tables()类似,也支持 b_compact_format 参数。
|
61
|
+
- 增加测试用例。
|
62
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__ = "1.
|
1
|
+
__version__ = "1.4.0"
|
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 1741603427 --verbose 0'
|
16
16
|
)
|
@@ -321,7 +321,9 @@ class Registry:
|
|
321
321
|
f'such as {{"func": lambda _, __, path: path == "{path}", "scope": ["files",]}}'
|
322
322
|
)
|
323
323
|
# 加载模块
|
324
|
-
module = loader.find_module(module_name).load_module(module_name)
|
324
|
+
# module = loader.find_module(module_name).load_module(module_name)
|
325
|
+
module = module_spec.loader.load_module(module_name)
|
326
|
+
|
325
327
|
# 选择遍历过程中第一次找到的 Registry 实例
|
326
328
|
if temp is None:
|
327
329
|
for name, obj in inspect.getmembers(module):
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import re
|
2
|
+
|
3
|
+
|
4
|
+
def find_links(text, b_compact_format=True, type_ls=None):
|
5
|
+
"""
|
6
|
+
查找文本中的链接
|
7
|
+
|
8
|
+
参数:
|
9
|
+
text: <str> 文本
|
10
|
+
b_compact_format: <bool> 是否只返回 link 部分
|
11
|
+
默认为 True,此时返回 link_ls,其中每个元素是一个链接
|
12
|
+
当设置为 False,此时返回 (link_ls, part_slices_ls, link_idx_ls),
|
13
|
+
其中 part_slices_ls 是链接和链接前后文本在 text 中对应的 slice,
|
14
|
+
而 link_idx_ls 指出了 part_slices_ls 中第几个元素对应的是链接,
|
15
|
+
link_idx_ls 与 link_ls 依次对应。
|
16
|
+
type_ls: <list of str> 找出哪种类型的链接
|
17
|
+
默认为 None,此时表示找出所有类型的链接。
|
18
|
+
支持以下取值:
|
19
|
+
"url", "image"
|
20
|
+
"""
|
21
|
+
|
22
|
+
matches = re.finditer(r'\[(.*?)\]\((.*?)(?:\s*["\'](.*?)["\'])?\)', text, re.DOTALL)
|
23
|
+
|
24
|
+
link_ls = []
|
25
|
+
part_slices_ls = []
|
26
|
+
link_idx_ls = []
|
27
|
+
start = 0
|
28
|
+
for match in matches:
|
29
|
+
link_start, link_end = match.start(), match.end()
|
30
|
+
#
|
31
|
+
if text[link_start - 1] == "!":
|
32
|
+
type_ = "image"
|
33
|
+
link_start -= 1
|
34
|
+
else:
|
35
|
+
type_ = "url"
|
36
|
+
#
|
37
|
+
if type_ls is not None and type_ not in type_ls:
|
38
|
+
continue
|
39
|
+
#
|
40
|
+
part_slices_ls.append([start, link_start])
|
41
|
+
# 图片本身
|
42
|
+
link_s = dict(
|
43
|
+
type_=type_,
|
44
|
+
name=match.group(1),
|
45
|
+
target=match.group(2),
|
46
|
+
title=match.group(3) if match.group(3) else None
|
47
|
+
)
|
48
|
+
link_idx_ls.append(len(part_slices_ls))
|
49
|
+
link_ls.append(link_s)
|
50
|
+
part_slices_ls.append([link_start, link_end])
|
51
|
+
# 更新起始位置
|
52
|
+
start = match.end()
|
53
|
+
|
54
|
+
last = text[start:]
|
55
|
+
if last:
|
56
|
+
part_slices_ls.append([start, len(text)])
|
57
|
+
|
58
|
+
if b_compact_format:
|
59
|
+
return link_ls
|
60
|
+
else:
|
61
|
+
return link_ls, part_slices_ls, link_idx_ls
|
62
|
+
|
63
|
+
|
64
|
+
if __name__ == "__main__":
|
65
|
+
markdown_text = """
|
66
|
+
Here is an image:
|
67
|
+

|
68
|
+
And another one:
|
69
|
+

|
70
|
+
And one without alt text:
|
71
|
+
[](http://example.com/placeholder.jpg)
|
72
|
+
And one without title:
|
73
|
+

|
74
|
+
"""
|
75
|
+
from kevin_toolbox.data_flow.file import markdown
|
76
|
+
|
77
|
+
print(markdown.generate_list(find_links(text=markdown_text, b_compact_format=True)))
|
78
|
+
|
79
|
+
link_ls_, part_slices_ls_, link_idx_ls_ = find_links(text=markdown_text, b_compact_format=False, type_ls=["url"])
|
80
|
+
|
81
|
+
print(link_ls_)
|
82
|
+
for part_slices in part_slices_ls_:
|
83
|
+
print(part_slices)
|
84
|
+
print(markdown_text[part_slices[0]:part_slices[1]])
|
@@ -0,0 +1,10 @@
|
|
1
|
+
def generate_link(name, target, title=None, type_="url"):
|
2
|
+
assert type_ in ["url", "image"]
|
3
|
+
if title is not None:
|
4
|
+
target = f'{target} "{title}"'
|
5
|
+
return f'{"!" if type_ == "image" else ""}[{name}]({target})'
|
6
|
+
|
7
|
+
|
8
|
+
if __name__ == '__main__':
|
9
|
+
print(generate_link(name=444, target="233", type_="url"))
|
10
|
+
print(generate_link(name=444, target="233", type_="image", title="233"))
|
kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
from kevin_toolbox.math.utils import split_integer_most_evenly
|
2
|
+
from kevin_toolbox.data_flow.file.markdown.table import Table_Format, get_format, padding_misaligned_values
|
3
|
+
|
4
|
+
|
5
|
+
def complete_to_matrix(content_s, orientation="vertical", chunk_nums=None, chunk_size=None):
|
6
|
+
"""
|
7
|
+
生成表格
|
8
|
+
|
9
|
+
参数:
|
10
|
+
content_s: <dict> 内容
|
11
|
+
目前支持 Table_Format 中的两种输入模式:
|
12
|
+
1.简易模式:
|
13
|
+
content_s = {<title>: <list of value>, ...}
|
14
|
+
此时键作为标题,值作为标题下的一系列值。
|
15
|
+
由于字典的无序性,此时标题的顺序是不能保证的,若要额外指定顺序,请使用下面的 完整模式。
|
16
|
+
2. 完整模式:
|
17
|
+
content_s = {<index>: {"title": <title>,"values":<list of value>}, ...}
|
18
|
+
此时将取第 <index> 个 "title" 的值来作为第 <index> 个标题的值。values 同理。
|
19
|
+
该模式允许缺省某些 <index>,此时这些 <index> 对应的行/列将全部置空。
|
20
|
+
orientation: <str> 表格的方向
|
21
|
+
支持以下值:
|
22
|
+
"vertical" / "v": 纵向排列,亦即标题在第一行
|
23
|
+
"horizontal" / "h": 横向排列,亦即标题在第一列
|
24
|
+
chunk_nums: <int> 将表格平均分割为多少份进行并列显示。
|
25
|
+
chunk_size: <int> 将表格按照最大长度进行分割,然后并列显示。
|
26
|
+
注意:以上两个参数只能设置一个,同时设置时将报错
|
27
|
+
"""
|
28
|
+
# 检验参数
|
29
|
+
assert chunk_nums is None or 1 <= chunk_nums
|
30
|
+
assert chunk_size is None or 1 <= chunk_size
|
31
|
+
assert orientation in ["vertical", "horizontal", "h", "v"]
|
32
|
+
assert get_format(content_s) is Table_Format.COMPLETE_DICT
|
33
|
+
|
34
|
+
# 当不同标题下的 values 的长度不相等时,先使用 padding_misaligned_values() 来进行对齐
|
35
|
+
content_s = padding_misaligned_values(content_s=content_s, padding_value="")
|
36
|
+
max_length = len(list(content_s.values())[0]["values"])
|
37
|
+
|
38
|
+
# 补充缺省的 title
|
39
|
+
for i in range(max(content_s.keys()) + 1):
|
40
|
+
if i not in content_s:
|
41
|
+
content_s[i] = {"title": "", "values": [""] * max_length}
|
42
|
+
# 按照 chunk_nums 或者 chunk_size 对表格进行分割
|
43
|
+
if chunk_nums is not None or chunk_size is not None:
|
44
|
+
if chunk_nums is not None:
|
45
|
+
split_len_ls = split_integer_most_evenly(x=max_length, group_nums=chunk_nums)
|
46
|
+
else:
|
47
|
+
split_len_ls = [chunk_size] * (max_length // chunk_size)
|
48
|
+
if max_length % chunk_size != 0:
|
49
|
+
split_len_ls += [max_length % chunk_size]
|
50
|
+
max_length = max(split_len_ls)
|
51
|
+
temp = dict()
|
52
|
+
beg = 0
|
53
|
+
for i, new_length in enumerate(split_len_ls):
|
54
|
+
end = beg + new_length
|
55
|
+
temp.update({k + i * len(content_s): {"title": v["title"],
|
56
|
+
"values": v["values"][beg:end] + [""] * (max_length - new_length)} for
|
57
|
+
k, v in content_s.items()})
|
58
|
+
beg = end
|
59
|
+
content_s = temp
|
60
|
+
|
61
|
+
# 转换
|
62
|
+
row_ls = []
|
63
|
+
if orientation in ["vertical", "v"]:
|
64
|
+
row_ls.append([content_s[i]["title"] for i in range(len(content_s))])
|
65
|
+
for row in zip(*[content_s[i]["values"] for i in range(len(content_s))]):
|
66
|
+
row_ls.append(row)
|
67
|
+
else:
|
68
|
+
for i in range(len(content_s)):
|
69
|
+
row_ls.append([content_s[i]["title"]] + content_s[i]["values"])
|
70
|
+
|
71
|
+
return dict(matrix=row_ls, orientation=orientation, chunk_size=chunk_size, chunk_nums=chunk_nums,
|
72
|
+
b_remove_empty_lines=chunk_size is not None or chunk_nums is not None)
|
73
|
+
|
74
|
+
|
75
|
+
if __name__ == '__main__':
|
76
|
+
from kevin_toolbox.data_flow.file.markdown.table import convert_format
|
77
|
+
|
78
|
+
content_s = complete_to_matrix(
|
79
|
+
content_s=convert_format(
|
80
|
+
content_s={'y/n': ['False', 'False', 'False', 'False', 'False', 'True', 'True', 'True', 'True', 'True'],
|
81
|
+
'a': ['5', '8', '7', '6', '9', '2', '1', '4', '0', '3'],
|
82
|
+
'b': ['', '', '', '', '', '6', '4', ':', '2', '8']},
|
83
|
+
output_format=Table_Format.COMPLETE_DICT
|
84
|
+
),
|
85
|
+
orientation="v", chunk_size=4
|
86
|
+
)
|
87
|
+
|
88
|
+
|
89
|
+
def _show_table(row_ls):
|
90
|
+
"""
|
91
|
+
生成表格文本
|
92
|
+
|
93
|
+
参数:
|
94
|
+
row_ls: <list of row>
|
95
|
+
"""
|
96
|
+
table = ""
|
97
|
+
for idx, row in enumerate(row_ls):
|
98
|
+
row = [f'{i}' for i in row]
|
99
|
+
table += "| " + " | ".join(row) + " |\n"
|
100
|
+
if idx == 0:
|
101
|
+
table += "| " + " | ".join(["---"] * len(row)) + " |\n"
|
102
|
+
return table
|
103
|
+
|
104
|
+
|
105
|
+
doc = _show_table(content_s["matrix"])
|
106
|
+
print(doc)
|
@@ -1,17 +1,9 @@
|
|
1
|
-
|
2
|
-
from typing import Union
|
3
|
-
from kevin_toolbox.data_flow.file.markdown.variable import Table_Format
|
4
|
-
|
5
|
-
|
6
|
-
def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Format.COMPLETE_DICT, orientation="vertical",
|
7
|
-
chunk_size=None, chunk_nums=None, b_remove_empty_lines=False, f_gen_order_of_values=None):
|
1
|
+
def matrix_to_complete(matrix, orientation, chunk_size=None, chunk_nums=None, b_remove_empty_lines=False):
|
8
2
|
"""
|
9
|
-
|
3
|
+
将二维数组形式的 MATRIX 格式(比如find_tables()的返回列表的元素),转换成 COMPLETE_DICT 格式
|
10
4
|
|
11
5
|
参数:
|
12
|
-
|
13
|
-
output_format: <Table_Format or str> 目标格式
|
14
|
-
具体可以参考 Table_Format 的介绍
|
6
|
+
matrix: <list of row> 二维数组形式的表格
|
15
7
|
orientation: <str> 解释表格时取哪个方向
|
16
8
|
支持以下值:
|
17
9
|
"vertical" / "v": 将第一行作为标题
|
@@ -22,35 +14,37 @@ def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Forma
|
|
22
14
|
对解释表格无作用。但是当指定该参数时,将视为表格有可能是多个表格并列的情况,因此将尝试根据标题的重复规律,
|
23
15
|
推断出对应的 chunk_nums,并最终将其拆分成多个表格。
|
24
16
|
b_remove_empty_lines: <boolean> 移除空的行、列
|
25
|
-
f_gen_order_of_values: <callable> 生成values排序顺序的函数
|
26
|
-
具体参考 generate_table() 中的对应参数
|
27
17
|
"""
|
28
|
-
|
18
|
+
# 检验参数
|
19
|
+
assert chunk_nums is None or 1 <= chunk_nums
|
20
|
+
assert chunk_size is None or 1 <= chunk_size
|
21
|
+
assert isinstance(matrix, (list, tuple,))
|
22
|
+
assert orientation in ["vertical", "horizontal", "h", "v"]
|
29
23
|
|
30
24
|
# 转换为字典形式
|
31
25
|
if orientation not in ["vertical", "v"]:
|
32
26
|
# 需要转为垂直方向
|
33
|
-
|
34
|
-
r_nums, c_nums = len(
|
27
|
+
matrix = list(zip(*matrix))
|
28
|
+
r_nums, c_nums = len(matrix), len(matrix[0])
|
35
29
|
if chunk_size is not None:
|
36
30
|
assert chunk_size == r_nums - 1, \
|
37
31
|
(f'The number of values {r_nums - 1} actually contained in the table '
|
38
32
|
f'does not match the specified chunk_size {chunk_size}')
|
39
|
-
chunk_nums = c_nums // _find_shortest_repeating_pattern_size(arr=
|
33
|
+
chunk_nums = c_nums // _find_shortest_repeating_pattern_size(arr=matrix[0])
|
40
34
|
chunk_nums = 1 if chunk_nums is None else chunk_nums
|
41
35
|
assert c_nums % chunk_nums == 0, \
|
42
36
|
f'The number of headers actually contained in the table does not match the specified chunk_nums, ' \
|
43
37
|
f'Expected n*{chunk_nums}, but got {c_nums}'
|
44
38
|
# 解释出标题
|
45
|
-
keys =
|
39
|
+
keys = matrix[0][0:c_nums // chunk_nums]
|
46
40
|
# 解释出值
|
47
41
|
if chunk_nums == 1:
|
48
|
-
values =
|
42
|
+
values = matrix[1:]
|
49
43
|
else:
|
50
44
|
values = []
|
51
45
|
for i in range(chunk_nums):
|
52
46
|
for j in range(1, r_nums):
|
53
|
-
values.append(
|
47
|
+
values.append(matrix[j][i * len(keys):(i + 1) * len(keys)])
|
54
48
|
# 去除空行
|
55
49
|
if b_remove_empty_lines:
|
56
50
|
values = [line for line in values if any(i != '' for i in line)]
|
@@ -58,26 +52,6 @@ def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Forma
|
|
58
52
|
# 去除空列
|
59
53
|
if b_remove_empty_lines:
|
60
54
|
table_s = {k: v_s for k, v_s in table_s.items() if v_s["title"] != '' and any(i != '' for i in v_s["values"])}
|
61
|
-
# 对值进行排序
|
62
|
-
if callable(f_gen_order_of_values):
|
63
|
-
breakpoint()
|
64
|
-
# 检查是否有重复的 title
|
65
|
-
temp = [v["title"] for v in table_s.values()]
|
66
|
-
assert len(set(temp)) == len(temp), \
|
67
|
-
f'table has duplicate titles, thus cannot be sorted using f_gen_order_of_values'
|
68
|
-
idx_ls = list(range(len(values)))
|
69
|
-
idx_ls.sort(key=lambda x: f_gen_order_of_values({v["title"]: v["values"][x] for v in table_s.values()}))
|
70
|
-
for v in table_s.values():
|
71
|
-
v["values"] = [v["values"][i] for i in idx_ls]
|
72
|
-
|
73
|
-
#
|
74
|
-
if output_format is Table_Format.SIMPLE_DICT:
|
75
|
-
temp = {v_s["title"] for v_s in table_s.values()}
|
76
|
-
if len(temp) != len(set(temp)):
|
77
|
-
raise AssertionError(
|
78
|
-
f'There are columns with the same title in the table, '
|
79
|
-
f'please check the orientation of the table or use output_format="complete_dict"')
|
80
|
-
table_s = {v_s["title"]: v_s["values"] for v_s in table_s.values()}
|
81
55
|
|
82
56
|
return table_s
|
83
57
|
|
@@ -105,6 +79,7 @@ def _find_shortest_repeating_pattern_size(arr):
|
|
105
79
|
|
106
80
|
if __name__ == '__main__':
|
107
81
|
from kevin_toolbox.data_flow.file.markdown import find_tables
|
82
|
+
|
108
83
|
# # 示例Markdown表格文本
|
109
84
|
# file_path = ""
|
110
85
|
# with open(file_path, 'r') as f:
|
@@ -131,5 +106,5 @@ if __name__ == '__main__':
|
|
131
106
|
table_ls = find_tables(text=markdown_text)
|
132
107
|
|
133
108
|
# 调用函数并打印结果
|
134
|
-
tables =
|
109
|
+
tables = matrix_to_complete(matrix=table_ls[0], orientation="v", chunk_nums=3, b_remove_empty_lines=True)
|
135
110
|
print(tables)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
from kevin_toolbox.data_flow.file.markdown.table import Table_Format, get_format
|
2
|
+
from kevin_toolbox.data_flow.file.markdown.table.convert import matrix_to_complete, complete_to_matrix
|
3
|
+
|
4
|
+
|
5
|
+
def simple_to_complete(content_s):
|
6
|
+
return {i: {"title": k, "values": v} for i, (k, v) in enumerate(content_s.items())}
|
7
|
+
|
8
|
+
|
9
|
+
def complete_to_simple(content_s):
|
10
|
+
temp = {v_s["title"] for v_s in content_s.values()}
|
11
|
+
if len(temp) != len(set(temp)):
|
12
|
+
raise AssertionError(f'Fail to convert SIMPLE_DICT to COMPLETE_DICT, because there are some duplicate titles.')
|
13
|
+
content_s = {v_s["title"]: v_s["values"] for v_s in content_s.values()}
|
14
|
+
return content_s
|
15
|
+
|
16
|
+
|
17
|
+
CONVERT_PROCESS_S = {
|
18
|
+
(Table_Format.COMPLETE_DICT, Table_Format.SIMPLE_DICT): complete_to_simple, # (from, to): process
|
19
|
+
(Table_Format.COMPLETE_DICT, Table_Format.MATRIX): lambda x: complete_to_matrix(content_s=x),
|
20
|
+
(Table_Format.SIMPLE_DICT, Table_Format.COMPLETE_DICT): simple_to_complete,
|
21
|
+
(Table_Format.SIMPLE_DICT, Table_Format.MATRIX): lambda x: complete_to_matrix(content_s=simple_to_complete(x)),
|
22
|
+
(Table_Format.MATRIX, Table_Format.COMPLETE_DICT): lambda x: matrix_to_complete(**x),
|
23
|
+
(Table_Format.MATRIX, Table_Format.SIMPLE_DICT): lambda x: complete_to_simple(content_s=matrix_to_complete(**x))
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
def convert_format(content_s, output_format, input_format=None):
|
28
|
+
"""
|
29
|
+
在各种表格格式之间进行转换
|
30
|
+
!!注意!!这些转换虽然不会改变表格的内容,但是可能会导致格式信息的丢失
|
31
|
+
|
32
|
+
参数:
|
33
|
+
content_s: <表格内容>
|
34
|
+
input_format: <str> 描述输入的格式。
|
35
|
+
默认为 None,将根据 content_s 实际格式进行推断。
|
36
|
+
output_format: <str/list of str> 输出的目标格式。
|
37
|
+
当输入是一个 tuple/list 时,将输出其中任一格式,具体规则为:
|
38
|
+
- 当 input_format 不在可选的输出格式中时,优先按照第一个输出格式进行转换
|
39
|
+
- 当 input_format 在可选的输出格式中时,不进行转换。
|
40
|
+
"""
|
41
|
+
if input_format is None:
|
42
|
+
input_format = get_format(content_s=content_s)
|
43
|
+
input_format = Table_Format(input_format)
|
44
|
+
if not isinstance(output_format, (list, tuple,)):
|
45
|
+
output_format = [output_format]
|
46
|
+
output_format = [Table_Format(i) for i in output_format]
|
47
|
+
|
48
|
+
if input_format in output_format:
|
49
|
+
return content_s
|
50
|
+
else:
|
51
|
+
return CONVERT_PROCESS_S[(input_format, output_format[0])](content_s)
|