kevin-toolbox-dev 1.4.12__tar.gz → 1.4.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. kevin-toolbox-dev-1.4.13/PKG-INFO +72 -0
  2. kevin-toolbox-dev-1.4.13/README.md +51 -0
  3. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/__init__.py +2 -2
  4. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +2 -0
  5. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/redirector/redirectable_sequence_fetcher.py +3 -3
  6. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/sampler/__init__.py +1 -0
  7. kevin-toolbox-dev-1.4.13/kevin_toolbox/computer_science/algorithm/sampler/recent_sampler.py +128 -0
  8. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/sampler/reservoir_sampler.py +2 -2
  9. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/find_tables.py +38 -12
  10. kevin-toolbox-dev-1.4.13/kevin_toolbox/developing/file_management/__init__.py +1 -0
  11. kevin-toolbox-dev-1.4.13/kevin_toolbox/developing/file_management/file_feature_extractor.py +263 -0
  12. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/read.py +4 -1
  13. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +2 -0
  14. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_2d_matrix.py +7 -1
  15. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +29 -22
  16. kevin-toolbox-dev-1.4.13/kevin_toolbox/patches/for_matplotlib/common_charts/plot_mean_std_lines.py +135 -0
  17. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/log_scaling.py +7 -0
  18. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/save_record.py +1 -1
  19. kevin-toolbox-dev-1.4.13/kevin_toolbox_dev.egg-info/PKG-INFO +72 -0
  20. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox_dev.egg-info/SOURCES.txt +4 -0
  21. kevin-toolbox-dev-1.4.12/PKG-INFO +0 -59
  22. kevin-toolbox-dev-1.4.12/README.md +0 -38
  23. kevin-toolbox-dev-1.4.12/kevin_toolbox_dev.egg-info/PKG-INFO +0 -59
  24. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/__init__.py +0 -0
  25. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  26. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  27. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  28. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  29. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  30. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  31. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager_wto_strategy.py +0 -0
  32. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  33. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  34. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  35. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  36. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  37. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  38. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  39. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  40. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  41. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  42. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  43. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  44. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  45. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  46. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  47. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  48. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  49. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/decorator/__init__.py +0 -0
  50. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/decorator/restore_original_work_path.py +0 -0
  51. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/decorator/retry.py +0 -0
  52. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  53. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  54. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  55. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  56. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  57. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  58. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  59. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  60. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  61. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  62. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/for_seq/sample_subset_most_evenly.py +0 -0
  63. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  65. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  66. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  67. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_process_execute.py +0 -0
  68. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  69. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/__init__.py +0 -0
  70. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_1.py +0 -0
  71. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_2.py +0 -0
  72. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  73. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
  74. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/redirector/__init__.py +0 -0
  75. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  76. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  77. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/registration/serializer_for_registry_execution.py +0 -0
  78. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  79. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  80. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  81. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  82. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  83. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  84. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  85. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
  86. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  87. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  88. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  89. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  90. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  91. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/maximum_accumulator.py +0 -0
  92. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/statistician/minimum_accumulator.py +0 -0
  93. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  95. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  96. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/dangerous/__init__.py +0 -0
  97. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  98. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/__init__.py +0 -0
  99. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  100. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  101. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  102. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  103. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  104. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  105. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  106. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  107. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  108. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  109. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/excel/__init__.py +0 -0
  110. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/excel/write_excel_with_matrix.py +0 -0
  111. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  112. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
  113. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  114. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  115. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  116. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
  117. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  118. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  119. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
  120. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  121. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
  122. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  123. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  124. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  125. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  126. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  127. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  128. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  129. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  130. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  131. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  132. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  133. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +0 -0
  134. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  135. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -0
  136. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  137. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/link/__init__.py +0 -0
  138. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/link/find_links.py +0 -0
  139. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +0 -0
  140. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/__init__.py +0 -0
  141. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +0 -0
  142. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py +0 -0
  143. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +0 -0
  144. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +0 -0
  145. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/generate_table.py +0 -0
  146. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/get_format.py +0 -0
  147. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +0 -0
  148. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/table/variable.py +0 -0
  149. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +0 -0
  150. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/data_flow/file/markdown/utils/save_images_in_ndl.py +0 -0
  151. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/__init__.py +0 -0
  152. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  153. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  154. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  155. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  156. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  157. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  158. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  159. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  160. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  161. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  162. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  163. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  164. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  165. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  166. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  167. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  168. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  169. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  170. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  171. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/developing/test.py +0 -0
  172. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/__init__.py +0 -0
  173. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  174. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  175. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/test/__init__.py +0 -0
  176. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/test/test_check_.py +0 -0
  177. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/test/test_variable_.py +0 -0
  178. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/test/test_version.py +0 -0
  179. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/variable_/__init__.py +0 -0
  180. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/variable_/env_vars_parser.py +0 -0
  181. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/version/__init__.py +0 -0
  182. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  183. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  184. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  185. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/__init__.py +0 -0
  186. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  187. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  188. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  189. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  190. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  191. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  192. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  193. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  194. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  195. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  196. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  197. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  198. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/__init__.py +0 -0
  199. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  200. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  201. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  202. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  203. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  204. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  205. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  206. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  207. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  208. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  209. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  210. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  211. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  212. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  213. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  214. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  215. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  216. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  217. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  218. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  219. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  220. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  221. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  222. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  223. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  224. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  225. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  226. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  227. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/__init__.py +0 -0
  228. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/__init__.py +0 -0
  229. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  230. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  231. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  232. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  233. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  235. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  236. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  237. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  238. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  239. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  240. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  241. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  242. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  243. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  244. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  245. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  246. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  247. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  248. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  249. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  250. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/cache.py +0 -0
  251. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  252. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  253. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  254. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  255. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  256. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  257. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  258. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/__init__.py +0 -0
  259. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  260. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  261. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  262. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  263. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  264. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/__init__.py +0 -0
  265. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  266. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  267. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  268. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  269. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
  270. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  271. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  272. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  273. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  274. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  275. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  276. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  277. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  278. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  279. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  280. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  281. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  282. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  283. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  284. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  285. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  286. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  287. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  288. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  289. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  290. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  291. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  292. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  293. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
  294. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  295. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
  296. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  297. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  298. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  299. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  300. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  301. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  302. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  303. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  304. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
  305. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/__init__.py +0 -0
  306. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/download_file.py +0 -0
  307. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/fetch_content.py +0 -0
  308. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/fetch_metadata.py +0 -0
  309. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/get_response.py +0 -0
  310. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/network/variable.py +0 -0
  311. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/__init__.py +0 -0
  312. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  313. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  314. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  315. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  316. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  317. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  318. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
  319. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
  320. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
  321. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
  322. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
  323. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
  324. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_3d.py +0 -0
  325. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
  326. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +0 -0
  327. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_contour.py +0 -0
  328. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
  329. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_from_record.py +0 -0
  330. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
  331. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
  332. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/__init__.py +0 -0
  333. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/get_output_path.py +0 -0
  334. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/common_charts/utils/save_plot.py +0 -0
  335. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_matplotlib/variable.py +0 -0
  336. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  337. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  338. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  339. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  340. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  341. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  342. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  343. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
  344. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/get_rng_state.py +0 -0
  345. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/set_rng_state.py +0 -0
  346. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  347. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  348. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  349. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  350. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  351. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  352. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  353. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  354. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  355. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  356. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  357. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  358. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  359. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  360. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  361. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  362. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  363. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/copy.py +0 -0
  364. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
  365. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/organize/__init__.py +0 -0
  366. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/organize/group_files_by_timestamp.py +0 -0
  367. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/pack.py +0 -0
  368. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
  369. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
  370. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
  371. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/remove.py +0 -0
  372. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  373. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_os/walk.py +0 -0
  374. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_streamlit/__init__.py +0 -0
  375. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +0 -0
  376. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_streamlit/markdown/show.py +0 -0
  377. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +0 -0
  378. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +0 -0
  379. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  380. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  381. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  382. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  383. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  384. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  385. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  386. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  387. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  388. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  389. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  390. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  391. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  392. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  393. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  394. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  395. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  396. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/utils/__init__.py +0 -0
  397. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox/utils/variable.py +0 -0
  398. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  399. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  400. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  401. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/pyproject.toml +0 -0
  402. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/setup.cfg +0 -0
  403. {kevin-toolbox-dev-1.4.12 → kevin-toolbox-dev-1.4.13}/setup.py +0 -0
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.4.13
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.13 (2025-07-21)【bug fix】【new feature】
50
+ - data_flow.file.markdown
51
+ - modify find_tables(),完善读取表格函数,支持更多的表格格式,包括以梅花线作为标题栏分割线,表格最左侧和最右侧分割线省略等情况。
52
+ - nested_dict_list.serializer
53
+ - modify read(),支持在读取时通过参数 b_keep_identical_relations 对 record.json 中的同名参数进行覆盖。
54
+ - computer_science.algorithm
55
+ - redirector
56
+ - 【bug fix】fix bug in _randomly_idx_redirector() for Redirectable_Sequence_Fetcher,改正了 rng.randint(low, high) 中参数 high 的设置。
57
+ - pareto_front
58
+ - modify get_pareto_points_idx(),支持参数 directions 只输入单个值来表示所有方向都使用该值。
59
+ - sampler
60
+ - 【new feature】add Recent_Sampler,最近采样器:始终保留最近加入的 capacity 个样本。
61
+ - patches.for_matplotlib
62
+ - common_charts.utils
63
+ - modify .save_plot(),将原来在 output_path 为 None 时使用 plt.show() 展示图像的行为改为返回 np.array 形式的图像,并支持通过参数 b_show_plot 来单独控制是否展示图像。
64
+ - 【new feature】add log_scaling(),用于处理坐标系变换。
65
+ - common_charts
66
+ - 【new feature】add plot_3d(),绘制3D图,支持:散点图、三角剖分曲面及其平滑版本。
67
+ - 【new feature】add plot_contour(),绘制等高线图。
68
+ - 【new feature】add plot_mean_std_lines(),绘制均值和标准差折线图及其区域填充。
69
+ - 【new feature】add plot_2d_matrix(),计算并绘制混淆矩阵。
70
+
71
+
72
+
@@ -0,0 +1,51 @@
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.13 (2025-07-21)【bug fix】【new feature】
31
+ - data_flow.file.markdown
32
+ - modify find_tables(),完善读取表格函数,支持更多的表格格式,包括以梅花线作为标题栏分割线,表格最左侧和最右侧分割线省略等情况。
33
+ - nested_dict_list.serializer
34
+ - modify read(),支持在读取时通过参数 b_keep_identical_relations 对 record.json 中的同名参数进行覆盖。
35
+ - computer_science.algorithm
36
+ - redirector
37
+ - 【bug fix】fix bug in _randomly_idx_redirector() for Redirectable_Sequence_Fetcher,改正了 rng.randint(low, high) 中参数 high 的设置。
38
+ - pareto_front
39
+ - modify get_pareto_points_idx(),支持参数 directions 只输入单个值来表示所有方向都使用该值。
40
+ - sampler
41
+ - 【new feature】add Recent_Sampler,最近采样器:始终保留最近加入的 capacity 个样本。
42
+ - patches.for_matplotlib
43
+ - common_charts.utils
44
+ - modify .save_plot(),将原来在 output_path 为 None 时使用 plt.show() 展示图像的行为改为返回 np.array 形式的图像,并支持通过参数 b_show_plot 来单独控制是否展示图像。
45
+ - 【new feature】add log_scaling(),用于处理坐标系变换。
46
+ - common_charts
47
+ - 【new feature】add plot_3d(),绘制3D图,支持:散点图、三角剖分曲面及其平滑版本。
48
+ - 【new feature】add plot_contour(),绘制等高线图。
49
+ - 【new feature】add plot_mean_std_lines(),绘制均值和标准差折线图及其区域填充。
50
+ - 【new feature】add plot_2d_matrix(),计算并绘制混淆矩阵。
51
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.4.12"
1
+ __version__ = "1.4.13"
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 1763992975 --verbose 0'
15
+ f'--expiration_timestamp 1768647143 --verbose 0'
16
16
  )
@@ -31,6 +31,8 @@ def get_pareto_points_idx(points, directions=None):
31
31
  """
32
32
  points = np.asarray(points)
33
33
  assert points.ndim == 2 and len(points) > 0
34
+ if directions is not None and not isinstance(directions, (list, tuple,)):
35
+ directions = [directions] * points.shape[-1]
34
36
  assert directions is None or isinstance(directions, (list, tuple,)) and len(directions) == points.shape[-1]
35
37
 
36
38
  # 计算排序的权重
@@ -6,11 +6,11 @@ from kevin_toolbox.computer_science.algorithm.cache_manager import Cache_Manager
6
6
 
7
7
  def _randomly_idx_redirector(idx, seq_len, attempts, rng, *args):
8
8
  if idx == 0:
9
- return rng.randint(1, seq_len - 1)
9
+ return rng.randint(1, seq_len)
10
10
  elif idx == seq_len - 1:
11
- return rng.randint(0, seq_len - 2)
11
+ return rng.randint(0, seq_len - 1)
12
12
  else:
13
- return rng.choice([rng.randint(0, idx - 1), rng.randint(idx + 1, seq_len - 1)], size=1,
13
+ return rng.choice([rng.randint(0, idx), rng.randint(idx + 1, seq_len)], size=1,
14
14
  p=[idx / (seq_len - 1), (seq_len - idx - 1) / (seq_len - 1)])[0]
15
15
 
16
16
 
@@ -1 +1,2 @@
1
1
  from .reservoir_sampler import Reservoir_Sampler
2
+ from .recent_sampler import Recent_Sampler
@@ -0,0 +1,128 @@
1
+ class Recent_Sampler:
2
+ """
3
+ 最近采样器:始终保留最近加入的 capacity 个样本
4
+ """
5
+
6
+ def __init__(self, **kwargs):
7
+ """
8
+ 参数:
9
+ capacity: <int> 缓冲区或窗口的容量
10
+ """
11
+ # 默认参数
12
+ paras = {
13
+ "capacity": 1,
14
+ }
15
+
16
+ # 获取并更新参数
17
+ paras.update(kwargs)
18
+
19
+ # 校验 capacity
20
+ assert paras["capacity"] >= 1
21
+
22
+ self.paras = paras
23
+ self.cache = [] # 用列表来保存最近的样本
24
+ self.state = self._init_state() # state 只记录 total_nums
25
+
26
+ @staticmethod
27
+ def _init_state():
28
+ """
29
+ 初始化状态,仅记录已添加的总样本数
30
+ """
31
+ return dict(
32
+ total_nums=0,
33
+ )
34
+
35
+ def add(self, item, **kwargs):
36
+ """
37
+ 添加单个数据 item 到采样器中。
38
+ - 更新 total_nums 计数
39
+ - 将 item 追加到 cache 末尾
40
+ - 如果超出 capacity,则删除最旧的一个(即列表开头的元素)
41
+ """
42
+ self.state["total_nums"] += 1
43
+ self.cache.append(item)
44
+ if len(self.cache) > self.paras["capacity"]:
45
+ self.cache.pop(0)
46
+
47
+ def add_sequence(self, item_ls, **kwargs):
48
+ """
49
+ 批量添加:对列表中每个元素多次调用 add
50
+ """
51
+ for item in item_ls:
52
+ self.add(item, **kwargs)
53
+
54
+ def get(self, **kwargs):
55
+ """
56
+ 返回当前缓冲区中的数据列表(浅拷贝)。
57
+ """
58
+ return self.cache.copy()
59
+
60
+ def clear(self):
61
+ """
62
+ 清空已有数据和状态,重置采样器。
63
+ """
64
+ self.cache.clear()
65
+ self.state = self._init_state()
66
+
67
+ def __len__(self):
68
+ """
69
+ 返回已添加的总样本数(state["total_nums"]),
70
+ 而不是当前缓冲区长度
71
+ """
72
+ return self.state["total_nums"]
73
+
74
+ # ---------------------- 用于保存和加载状态 ---------------------- #
75
+
76
+ def load_state_dict(self, state_dict):
77
+ """
78
+ 加载状态
79
+ - 清空当前缓冲区和 state
80
+ - 恢复 state["total_nums"]
81
+ - 恢复 cache 列表内容
82
+ - 恢复 rng 状态
83
+ """
84
+ self.clear()
85
+ self.state.update(state_dict["state"])
86
+ self.cache.extend(state_dict["cache"])
87
+
88
+ def state_dict(self, b_deepcopy=True):
89
+ """
90
+ 获取当前状态,包含:
91
+ - state: {"total_nums": ...}
92
+ - cache: 当前缓冲区列表
93
+ """
94
+ temp = {
95
+ "state": self.state,
96
+ "cache": self.cache
97
+ }
98
+ if b_deepcopy:
99
+ import kevin_toolbox.nested_dict_list as ndl
100
+ temp = ndl.copy_(var=temp, b_deepcopy=True, b_keep_internal_references=True)
101
+ return temp
102
+
103
+
104
+ # 测试示例
105
+ if __name__ == "__main__":
106
+ # 创建一个容量为 5 的 Recent_Sampler
107
+ sampler = Recent_Sampler(capacity=5)
108
+
109
+ # 逐个添加 1 到 10 的数字
110
+ for i in range(1, 11):
111
+ sampler.add(i)
112
+ print(f"添加 {i} 后缓冲区: {sampler.get()}")
113
+
114
+ # 到这里,缓冲区中应该只保留最近加入的 5 个样本:6,7,8,9,10
115
+ print("最终缓冲区:", sampler.get()) # 预期输出: [6,7,8,9,10]
116
+ print("总共添加个数:", len(sampler)) # 预期输出: 10
117
+
118
+ # 保存当前状态
119
+ state = sampler.state_dict()
120
+ print("状态字典:", state)
121
+
122
+ # 清空后再恢复状态
123
+ sampler.clear()
124
+ print("清空后缓冲区:", sampler.get()) # 预期输出: []
125
+
126
+ sampler.load_state_dict(state)
127
+ print("恢复后缓冲区:", sampler.get()) # 预期输出: [6,7,8,9,10]
128
+ print("恢复后总共添加个数:", len(sampler)) # 预期输出: 10
@@ -61,13 +61,13 @@ class Reservoir_Sampler:
61
61
 
62
62
  def get(self, **kwargs):
63
63
  """
64
- 返回当前水库中的数据列表(拷贝)。
64
+ 返回当前水库中的数据列表(浅拷贝)。
65
65
  """
66
66
  return self.reservoir.copy()
67
67
 
68
68
  def clear(self):
69
69
  """
70
- 清空已有数据和状态,重置采样器。
70
+ 清空已有数据和状态,重置采样器。
71
71
  """
72
72
  self.reservoir.clear()
73
73
  self.state = self._init_state()
@@ -52,23 +52,49 @@ def find_tables(text, b_compact_format=True):
52
52
  return table_ls, part_slices_ls, table_idx_ls
53
53
 
54
54
 
55
+ # def _find_table(text):
56
+ # # 正则表达式匹配Markdown表格
57
+ # table_pattern = re.compile(r'\|([^\n]+)\|', re.DOTALL)
58
+ # table_matches = table_pattern.findall(text)
59
+ # if len(table_matches) < 2:
60
+ # # 因为一个合法的 markdown 表格需要含有表头的分隔线,所以行数至少应该为 2
61
+ # return None
62
+ #
63
+ # # 去除表头的分隔线
64
+ # table_matches.pop(1)
65
+ # #
66
+ # tables = [] # 每个元素为一行
67
+ # for match in table_matches:
68
+ # # 分割每一行
69
+ # tables.append([i.strip() for i in match.split('|', -1)])
70
+ #
71
+ # return {"matrix": tables, "orientation": None}
72
+
55
73
  def _find_table(text):
56
- # 正则表达式匹配Markdown表格
57
- table_pattern = re.compile(r'\|([^\n]+)\|', re.DOTALL)
58
- table_matches = table_pattern.findall(text)
59
- if len(table_matches) < 2:
74
+ # 按行分割文本
75
+ lines = text.splitlines()
76
+ table_rows = []
77
+ for line in lines:
78
+ # 移除行首尾空白
79
+ stripped_line = line.strip()
80
+ if not stripped_line:
81
+ continue # 跳过空行
82
+ # 移除行首尾的可选竖线(如果存在)
83
+ if stripped_line.startswith('|'):
84
+ stripped_line = stripped_line[1:]
85
+ if stripped_line.endswith('|'):
86
+ stripped_line = stripped_line[:-1]
87
+ # 分割单元格并去除每个单元格的空白
88
+ row_cells = [cell.strip() for cell in stripped_line.split('|')]
89
+ table_rows.append(row_cells)
90
+
91
+ if len(table_rows) < 2:
60
92
  # 因为一个合法的 markdown 表格需要含有表头的分隔线,所以行数至少应该为 2
61
93
  return None
62
-
63
94
  # 去除表头的分隔线
64
- table_matches.pop(1)
65
- #
66
- tables = [] # 每个元素为一行
67
- for match in table_matches:
68
- # 分割每一行
69
- tables.append([i.strip() for i in match.split('|', -1)])
95
+ table_rows.pop(1)
70
96
 
71
- return {"matrix": tables, "orientation": None}
97
+ return {"matrix": table_rows, "orientation": None}
72
98
 
73
99
 
74
100
  if __name__ == '__main__':
@@ -0,0 +1 @@
1
+ from .file_feature_extractor import File_Feature_Extractor
@@ -0,0 +1,263 @@
1
+ import os
2
+ import time
3
+ import json
4
+ import hashlib
5
+ from enum import Enum
6
+ from kevin_toolbox.patches import for_os
7
+ from kevin_toolbox.data_flow.file import json_
8
+
9
+
10
+ class F_Type(Enum):
11
+ file = 0
12
+ symlink = 1
13
+ dir = 2
14
+ unknown = -1
15
+
16
+
17
+ class File_Feature_Extractor:
18
+ """
19
+ 文件特征提取器类,用于扫描指定目录下所有文件(包括文件夹和符号链接),提取:
20
+ - 文件元数据
21
+ - 浅哈希值(仅支持对文件使用)
22
+ - 完整哈希值等特征(仅支持对文件使用)
23
+ 并支持缓存、更新和持久化。
24
+
25
+ 参数:
26
+ input_dir: <str> 根目录路径
27
+ metadata_cfg: <dict> 提取元信息的方式。
28
+ 接受一个形如 {"attribute": ["size", ...], "include": ["file", ...], ...} 的字典,
29
+ 其中 "attribute" 字段下指定需要添加的元信息,目前支持:
30
+ - size 文件大小
31
+ - created_time、modified_time、accessed_time 时间
32
+ - mode 权限
33
+ - is_symlink、is_dir、is_file 种类
34
+ - is_symlink_valid 链接是否有效
35
+ 而 "include" 字段用于指定要遍历的目标类型。
36
+ 默认 "attribute" 和 "include" 均包含以上全部支持的选项。
37
+ 当设置为 None 时,表示不提取元信息。
38
+ hash_cfg: <dict> 提取浅哈希的方式。
39
+ 接受形如 {"algorithm": ["md5", ...], "read_size": [<int>, None, ...], ...} 的字典
40
+ 其中 "algorithm" 表示使用的哈希算法类型,支持:
41
+ - 'md5', 'sha1', 'sha256'
42
+ 默认 "algorithm" 包含 "md5"。
43
+ 而 "read_size" 表示读取文件内容的最大前 N 个字节的内容来计算哈希值,支持:
44
+ - <int> 表示需要读取前 N 个字节
45
+ - None 表示读取整个文件
46
+ 默认 "read_size" 中的值为 [1024, None, ...]
47
+ b_read_dst_of_symlink: <boolean> 是否读取链接指向的目标文件。
48
+ 默认为 False。
49
+ include: <list> 指定要遍历的目标类型
50
+ 当上面的 xxx_cfg 参数中没有额外指定 "include" 字段时,将以该参数作为该字段的默认参数。
51
+ 当给定值为 str 时,支持:
52
+ - "symlink"、"dir"、"file"
53
+ 当给定值为 dict 时,支持:
54
+ - {"filter_type": "suffix", "option_ls": [...]} 根据后缀进行选择。
55
+ - {"filter_type": "small_than", "size": <int>, "b_include_equal": <boolean>} 根据文件大小(单位为字节)选择。
56
+ 当给定值为函数时,函数应该形如:
57
+ - func(file_path) ==> <boolean> 当函数返回值为 True 时,表示匹配成功。
58
+ 另有一个特殊值为 None,表示匹配所有
59
+ exclude: <list> 指定要排除的目标类型
60
+ 其设置参考 include。
61
+ 默认为 None,表示不排除任何
62
+ walk_paras: <dict> 调用 for_os.walk() 对目录进行遍历时的参数
63
+ 利用该参数可以实现更高级的指定遍历顺序、排除内容的操作
64
+
65
+ 结果的形式:
66
+ {
67
+ <folder_A>:{
68
+ <folder_B>:{
69
+ (<base_name>, <type>):
70
+ {
71
+ "metadata": {"size": ..., ...},
72
+ "hash": {
73
+ <size>: {"md5": ...., "sha": ...}
74
+ },
75
+ "dst_of_symlink": {"metadata": ...., "hash": ...}
76
+ }
77
+ }
78
+ }
79
+ }
80
+ 其中 type 有 "symlink"、"dir"、"file" None 几种取值
81
+
82
+ 方法:
83
+ scan(): 扫描所有文件,提取特征并写入缓存
84
+ update(): 增量更新,只有当文件修改时间变化时才重新提取
85
+ save_cache(file_path): 将当前缓存保存为 JSON 文件
86
+ load_cache(file_path): 从 JSON 文件中加载缓存
87
+ """
88
+
89
+ def __init__(self, **kwargs):
90
+ # 默认参数
91
+ paras = {
92
+ "input_dir": None,
93
+ "metadata_cfg": {"attribute": {"size", "created_time", "modified_time", "accessed_time",
94
+ "mode", "is_symlink", "is_dir", "is_file", "is_symlink_valid"}, },
95
+ "hash_cfg": {"algorithm": {"md5", }, "read_size": {1024, None}, },
96
+ "b_read_dst_of_symlink": False,
97
+ "include": None,
98
+ "exclude": None,
99
+ "walk_paras": dict(topdown=True, onerror=None, followlinks=False, ignore_s=None)
100
+ }
101
+
102
+ # 获取参数
103
+ paras.update(kwargs)
104
+
105
+ # 校验参数
106
+ if not paras["input_dir"] or not os.path.isdir(paras["input_dir"]):
107
+ raise ValueError(f'invalid input_dir {paras["input_dir"]}')
108
+ #
109
+ for k in ["metadata_cfg", "hash_cfg"]:
110
+ paras[k].setdefault('include', paras['include'])
111
+ paras[k].setdefault('exclude', paras['exclude'])
112
+ self.cache = {}
113
+ self.paras = paras
114
+
115
+ @staticmethod
116
+ def _matches(path, rule_ls):
117
+ """
118
+ 判断路径是否符合规则
119
+ """
120
+ path = os.path.realpath(path)
121
+ stat = os.lstat(path)
122
+ for rule in rule_ls:
123
+ # 类型字符串匹配
124
+ if isinstance(rule, str):
125
+ if rule == 'file' and os.path.isfile(path): return True
126
+ if rule == 'dir' and os.path.isdir(path): return True
127
+ if rule == 'symlink' and os.path.islink(path): return True
128
+ return False
129
+ # 后缀过滤
130
+ if isinstance(rule, dict):
131
+ ft = rule.get('filter_type')
132
+ if ft == 'suffix':
133
+ return any(path.endswith(suf) for suf in rule.get('option_ls', []))
134
+ elif ft == 'small_than':
135
+ size = stat.st_size
136
+ limit = rule.get('size', 0)
137
+ eq = rule.get('b_include_equal', False)
138
+ return size < limit or (eq and size == limit)
139
+ # 函数
140
+ if callable(rule):
141
+ return rule(path)
142
+ return False
143
+ return False
144
+
145
+ @staticmethod
146
+ def _get_metadata(path, attribute):
147
+ """
148
+ 获取文件元信息
149
+ """
150
+ path = os.path.realpath(path)
151
+ stat = os.lstat(path)
152
+ res_s = dict()
153
+ for attr in attribute:
154
+ if attr == 'size': res_s['size'] = stat.st_size
155
+ if attr == 'created_time': res_s['created_time'] = stat.st_ctime
156
+ if attr == 'modified_time': res_s['modified_time'] = stat.st_mtime
157
+ if attr == 'accessed_time': res_s['accessed_time'] = stat.st_atime
158
+ if attr == 'mode': res_s['mode'] = stat.st_mode
159
+ if attr == 'is_symlink': res_s['is_symlink'] = os.path.islink(path)
160
+ if attr == 'is_dir': res_s['is_dir'] = os.path.isdir(path)
161
+ if attr == 'is_file': res_s['is_file'] = os.path.isfile(path)
162
+ if attr == 'is_symlink_valid':
163
+ res_s['is_symlink_valid'] = os.path.islink(path) and os.path.exists(os.readlink(path))
164
+ return res_s
165
+
166
+ @staticmethod
167
+ def _get_hash(path, read_size_ls, algorithm_ls):
168
+ """
169
+ 对文件进行哈希,read_size=None 表示完整哈希,否则浅哈希
170
+ """
171
+ res_s = dict()
172
+ for size in read_size_ls:
173
+ for algo in algorithm_ls:
174
+ h = hashlib.new(algo)
175
+ with open(path, 'rb') as f:
176
+ if size is not None:
177
+ data = f.read(size)
178
+ h.update(data)
179
+ else:
180
+ for chunk in iter(lambda: f.read(8192), b''):
181
+ h.update(chunk)
182
+ res_s[size] = res_s.get(size, dict())
183
+ res_s[size][algo] = h.hexdigest()
184
+ return res_s
185
+
186
+ def extract_feature(self, path, metadata_cfg=None, hash_cfg=None):
187
+ metadata_cfg = metadata_cfg or self.paras['metadata_cfg']
188
+ hash_cfg = hash_cfg or self.paras['hash_cfg']
189
+ path = os.path.realpath(path)
190
+ res_s = dict()
191
+ base_ = os.path.basename(path)
192
+ if os.path.islink(path):
193
+ f_type = F_Type.symlink
194
+ elif os.path.isfile(path):
195
+ f_type = F_Type.file
196
+ elif os.path.isdir(path):
197
+ f_type = F_Type.dir
198
+ else:
199
+ f_type = F_Type.unknown
200
+ try:
201
+ if metadata_cfg is not None:
202
+ res_s["metadata"] = self._get_metadata(path, attribute=metadata_cfg['attribute'])
203
+ if hash_cfg is not None and f_type == F_Type.file:
204
+ res_s["hash"] = self._get_hash(path, read_size_ls=hash_cfg['read_size'],
205
+ algorithm_ls=hash_cfg['algorithm'])
206
+ if os.path.islink(path) and self.paras['b_read_dst_of_symlink']:
207
+ dst = os.readlink(path)
208
+ res_s['dst_of_symlink'] = self.extract_feature(dst)
209
+ except Exception as e:
210
+ res_s = {'error': str(e)}
211
+ return base_, f_type.value, res_s
212
+
213
+ def scan_path(self, path, metadata_cfg=None, hash_cfg=None):
214
+ """
215
+ 扫描路径,提取特征并写入缓存
216
+ """
217
+ path = os.path.realpath(path)
218
+ rel = os.path.relpath(path, self.paras["input_dir"])
219
+ parts = rel.split(os.sep)
220
+ node = self.cache
221
+ for p in parts[:-1]:
222
+ node = node.setdefault(p, {})
223
+ base_, f_type, res_s = self.extract_feature(path=path, metadata_cfg=metadata_cfg, hash_cfg=hash_cfg)
224
+ node[(base_, f_type)] = res_s
225
+
226
+ def scan_recursively(self, path=None, metadata_cfg=None, hash_cfg=None):
227
+ """
228
+ 递归扫描目录,提取特征并写入缓存
229
+ """
230
+ path = path or self.paras["input_dir"]
231
+ for root, dirs, files in for_os.walk(top=path, **self.paras["walk_paras"]):
232
+ for name in files + dirs:
233
+ full_path = os.path.join(root, name)
234
+ if self.paras["include"] is not None:
235
+ if not self._matches(full_path, rule_ls=self.paras["include"]):
236
+ continue
237
+ if self.paras["exclude"] is not None:
238
+ if self._matches(full_path, rule_ls=self.paras["exclude"]):
239
+ continue
240
+ self.scan_path(full_path, metadata_cfg=metadata_cfg, hash_cfg=hash_cfg)
241
+
242
+ def update(self):
243
+ """
244
+ 增量更新,重新扫描修改过的文件
245
+ """
246
+ # 简化:重新全量扫描覆盖旧缓存,可按需优化
247
+ self.cache.clear()
248
+ self.scan_recursively()
249
+
250
+ def save_cache(self, file_path):
251
+ json_.write(content=self.cache, file_path=file_path, b_use_suggested_converter=True)
252
+
253
+ def load_cache(self, file_path):
254
+ self.cache = json_.read(file_path=file_path, b_use_suggested_converter=True)
255
+
256
+
257
+ if __name__ == '__main__':
258
+ from kevin_toolbox.data_flow.file import markdown
259
+ file_feature_extractor = File_Feature_Extractor(
260
+ input_dir=os.path.join(os.path.dirname(__file__), "test/test_data")
261
+ )
262
+ file_feature_extractor.scan_recursively()
263
+ print(markdown.generate_list(file_feature_extractor.cache))
@@ -12,6 +12,7 @@ def read(input_path, **kwargs):
12
12
 
13
13
  参数:
14
14
  input_path: <path> 文件夹或者 .tar 文件,具体结构参考 write()
15
+ b_keep_identical_relations: <boolean> 覆盖 record.json 中记录的同名参数,该参数的作用详见 write() 中的介绍。
15
16
  """
16
17
  assert os.path.exists(input_path)
17
18
 
@@ -42,7 +43,7 @@ def _read_unpacked_ndl(input_path, **kwargs):
42
43
 
43
44
  # 读取被处理的节点
44
45
  processed_nodes = []
45
- if record_s:
46
+ if "processed" in record_s:
46
47
  for name, value in ndl.get_nodes(var=record_s["processed"], level=-1, b_strict=True):
47
48
  if value:
48
49
  processed_nodes.append(name)
@@ -68,6 +69,8 @@ def _read_unpacked_ndl(input_path, **kwargs):
68
69
  ndl.set_value(var=var, name=name, value=bk.read(**value))
69
70
 
70
71
  #
72
+ if "b_keep_identical_relations" in kwargs:
73
+ record_s["b_keep_identical_relations"] = kwargs["b_keep_identical_relations"]
71
74
  if record_s.get("b_keep_identical_relations", False):
72
75
  from kevin_toolbox.nested_dict_list import value_parser
73
76
  var = value_parser.replace_identical_with_reference(var=var, flag="same", b_reverse=True)
@@ -52,3 +52,5 @@ from .plot_2d_matrix import plot_2d_matrix
52
52
  from .plot_contour import plot_contour
53
53
  from .plot_3d import plot_3d
54
54
  from .plot_from_record import plot_from_record
55
+ # from .plot_raincloud import plot_raincloud
56
+ from .plot_mean_std_lines import plot_mean_std_lines