kevin-toolbox-dev 1.3.5__tar.gz → 1.3.6__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 (338) hide show
  1. kevin-toolbox-dev-1.3.6/PKG-INFO +90 -0
  2. kevin-toolbox-dev-1.3.6/README.md +69 -0
  3. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/__init__.py +2 -2
  4. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +1 -0
  5. kevin-toolbox-dev-1.3.6/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +218 -0
  6. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +1 -0
  7. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +2 -2
  8. kevin-toolbox-dev-1.3.6/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +69 -0
  9. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +16 -4
  10. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +5 -12
  11. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +3 -0
  12. kevin-toolbox-dev-1.3.6/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +27 -0
  13. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/write.py +3 -0
  14. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/markdown/__init__.py +3 -0
  15. kevin-toolbox-dev-1.3.6/kevin_toolbox/data_flow/file/markdown/find_tables.py +65 -0
  16. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/markdown/generate_table.py +19 -5
  17. kevin-toolbox-dev-1.3.6/kevin_toolbox/data_flow/file/markdown/parse_table.py +135 -0
  18. kevin-toolbox-dev-1.3.6/kevin_toolbox/data_flow/file/markdown/save_images_in_ndl.py +81 -0
  19. kevin-toolbox-dev-1.3.6/kevin_toolbox/data_flow/file/markdown/variable.py +17 -0
  20. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/read.py +1 -1
  21. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/write.py +9 -2
  22. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +6 -0
  23. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +54 -0
  24. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +60 -0
  25. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +65 -0
  26. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +61 -0
  27. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +53 -0
  28. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +54 -0
  29. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/__init__.py +2 -0
  30. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_os/find_files_in_dir.py +30 -0
  31. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_os/path/__init__.py +2 -0
  32. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +47 -0
  33. kevin-toolbox-dev-1.3.6/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +49 -0
  34. kevin-toolbox-dev-1.3.6/kevin_toolbox_dev.egg-info/PKG-INFO +90 -0
  35. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox_dev.egg-info/SOURCES.txt +18 -0
  36. kevin-toolbox-dev-1.3.5/PKG-INFO +0 -69
  37. kevin-toolbox-dev-1.3.5/README.md +0 -48
  38. kevin-toolbox-dev-1.3.5/kevin_toolbox_dev.egg-info/PKG-INFO +0 -69
  39. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/__init__.py +0 -0
  40. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  41. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  42. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  43. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  44. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  45. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  46. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  47. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  48. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  49. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  50. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  51. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  52. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  53. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  54. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  55. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  56. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  57. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  58. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  59. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  60. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  61. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  62. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  63. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  65. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  66. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  67. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  68. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  69. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  70. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  71. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  72. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  73. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  74. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  75. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  76. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  77. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  78. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  79. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  80. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  81. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  82. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  83. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  84. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  85. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  86. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  87. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  88. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  89. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  90. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  91. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  92. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/dangerous/__init__.py +0 -0
  93. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  94. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/__init__.py +0 -0
  95. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  96. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  97. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  98. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  99. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  100. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  101. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  102. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  103. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  104. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  105. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  106. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
  107. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  108. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  109. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  110. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
  111. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  112. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  113. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
  114. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  115. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
  116. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  117. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  118. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  119. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  120. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  121. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  122. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  123. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  124. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  125. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  126. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -0
  127. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  128. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/__init__.py +0 -0
  129. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  130. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  131. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  132. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  133. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  134. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  135. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  136. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  137. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  138. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  139. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  140. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  141. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  142. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  143. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  144. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  145. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  146. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  147. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  148. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  149. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  150. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/developing/test.py +0 -0
  151. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/__init__.py +0 -0
  152. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  153. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  154. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/test/__init__.py +0 -0
  155. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/test/test_version.py +0 -0
  156. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/version/__init__.py +0 -0
  157. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  158. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  159. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  160. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/__init__.py +0 -0
  161. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  162. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  163. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  164. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  165. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  166. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  167. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  168. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  169. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  170. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  171. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  172. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  173. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/__init__.py +0 -0
  174. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  175. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  176. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  177. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  178. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  179. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  180. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  181. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  182. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  183. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  184. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  186. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  187. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  188. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  189. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  190. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  191. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  192. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  193. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  195. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  196. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  197. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  198. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  199. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  200. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  201. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  202. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/__init__.py +0 -0
  203. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/__init__.py +0 -0
  204. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  205. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  206. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  207. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  208. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  209. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  210. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  211. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  212. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  213. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  214. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  215. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  216. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  217. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  218. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  219. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  220. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  221. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  222. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  223. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  224. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  225. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/cache.py +0 -0
  226. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  227. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  228. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  229. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  230. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  231. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  232. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  233. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  235. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  236. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  237. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  238. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  239. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/__init__.py +0 -0
  240. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  241. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  242. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  243. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  244. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
  245. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  246. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  247. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  248. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  249. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  250. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  251. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  252. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  253. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  254. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  255. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  256. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  257. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  258. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  259. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  260. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  261. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  262. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  263. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  264. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  265. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  266. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  267. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  268. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
  269. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  270. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  271. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  272. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  273. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  274. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  275. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  276. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  277. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  278. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
  279. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/__init__.py +0 -0
  280. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  281. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  282. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  283. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  284. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  285. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  286. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_matplotlib/generate_color_list.py +0 -0
  287. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  288. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  289. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  290. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  291. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  292. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  293. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  294. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
  295. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  296. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  297. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  298. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  299. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  300. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  301. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  302. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  303. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  304. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  305. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  306. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  307. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  308. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  309. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  310. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  311. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/copy.py +0 -0
  312. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/pack.py +0 -0
  313. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/remove.py +0 -0
  314. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  315. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_os/walk.py +0 -0
  316. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  317. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  318. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  319. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  320. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  321. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  322. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  323. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  324. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  325. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  326. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  327. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  328. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  329. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  330. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  331. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  332. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  333. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  334. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  335. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  336. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/pyproject.toml +0 -0
  337. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/setup.cfg +0 -0
  338. {kevin-toolbox-dev-1.3.5 → kevin-toolbox-dev-1.3.6}/setup.py +0 -0
@@ -0,0 +1,90 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.3.6
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.3.6 (2024-07-03)【new feature】
50
+ - patches
51
+ - for_os
52
+ - 【new feature】add find_files_in_dir(),找出目录下带有给定后缀的所有文件的生成器。
53
+ - for_os.path
54
+ - 【new feature】add find_illegal_chars(),找出给定的文件名/路径中出现了哪些非法符号。
55
+ - 【new feature】add replace_illegal_chars(),将给定的文件名/路径中的非法符号替换为合法形式。
56
+ - for_matplotlib
57
+ - 【new feature】add module common_charts,新增模块——常用图表,该模块下包含以下函数:
58
+ - plot_bars(),绘制柱状图
59
+ - plot_scatters(),绘制散点图
60
+ - plot_lines(),绘制折线图
61
+ - plot_distribution(),绘制分布图
62
+ - plot_scatters_matrix(),绘制散点图矩阵(常用于多变量关系分析)
63
+ - plot_confusion_matrix(),绘制混淆矩阵(常用于混淆矩阵、相关性矩阵、特征图可视化)
64
+ - 添加了测试用例。
65
+ - data_flow.file
66
+ - markdown
67
+ - 【new feature】add save_images_in_ndl(),将ndl结构叶节点下的图片对象保存到 plot_dir 中,并替换为该图片的markdown链接。
68
+ - 便于对表格中的图片或者列表中的图片进行保存和替换。
69
+ - 【new feature】add find_tables(),用于从文本中找出markdown格式的表格,并以二维数组的列表形式返回。
70
+ - 【new feature】add parse_table(),将二维数组形式的表格(比如find_tables()的返回列表的元素),解析成指定的格式。
71
+ - kevin_notation
72
+ - 【bug fix】fix bug in Kevin_Notation_Writer,增加检验写入的列的元素数量是否一致,不一致时进行报错。
73
+ - 【bug fix】fix bug in write(),避免对输入参数 metadata 中的内容进行意料之外的改动。
74
+ - nested_dict_list
75
+ - add para b_allow_override to serializer.write to allow overwriting,增加参数用于允许强制覆盖已有文件。
76
+ - computer_science.algorithm
77
+ - pareto_front
78
+ - 【new feature】add Optimum_Picker,帕累托最优值选取器。
79
+ - 记录并更新帕累托最优值
80
+ - 同时支持监控以下行为,并触发设定的执行器,详见参数 trigger_for_new 和 trigger_for_out。
81
+ - 新加值是一个新的帕累托最优值
82
+ - 抛弃一个不再是最优的旧的最优值
83
+ - statistician
84
+ - 【new feature】add Accumulator_for_Ndl,适用于 ndl 结构的统计器。
85
+ - 【bug fix】fix bug in Accumulator_Base._init_var()
86
+ - 【new feature】modify Average_Accumulator,在 add() 中新增了 weight 参数用于计算带权重的平均值
87
+ - modify Exponential_Moving_Average,add_sequence() 不再支持 weight_ls 参数,让该接口与其他类更加一致。
88
+ - 添加了测试用例。
89
+
90
+
@@ -0,0 +1,69 @@
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.3.6 (2024-07-03)【new feature】
31
+ - patches
32
+ - for_os
33
+ - 【new feature】add find_files_in_dir(),找出目录下带有给定后缀的所有文件的生成器。
34
+ - for_os.path
35
+ - 【new feature】add find_illegal_chars(),找出给定的文件名/路径中出现了哪些非法符号。
36
+ - 【new feature】add replace_illegal_chars(),将给定的文件名/路径中的非法符号替换为合法形式。
37
+ - for_matplotlib
38
+ - 【new feature】add module common_charts,新增模块——常用图表,该模块下包含以下函数:
39
+ - plot_bars(),绘制柱状图
40
+ - plot_scatters(),绘制散点图
41
+ - plot_lines(),绘制折线图
42
+ - plot_distribution(),绘制分布图
43
+ - plot_scatters_matrix(),绘制散点图矩阵(常用于多变量关系分析)
44
+ - plot_confusion_matrix(),绘制混淆矩阵(常用于混淆矩阵、相关性矩阵、特征图可视化)
45
+ - 添加了测试用例。
46
+ - data_flow.file
47
+ - markdown
48
+ - 【new feature】add save_images_in_ndl(),将ndl结构叶节点下的图片对象保存到 plot_dir 中,并替换为该图片的markdown链接。
49
+ - 便于对表格中的图片或者列表中的图片进行保存和替换。
50
+ - 【new feature】add find_tables(),用于从文本中找出markdown格式的表格,并以二维数组的列表形式返回。
51
+ - 【new feature】add parse_table(),将二维数组形式的表格(比如find_tables()的返回列表的元素),解析成指定的格式。
52
+ - kevin_notation
53
+ - 【bug fix】fix bug in Kevin_Notation_Writer,增加检验写入的列的元素数量是否一致,不一致时进行报错。
54
+ - 【bug fix】fix bug in write(),避免对输入参数 metadata 中的内容进行意料之外的改动。
55
+ - nested_dict_list
56
+ - add para b_allow_override to serializer.write to allow overwriting,增加参数用于允许强制覆盖已有文件。
57
+ - computer_science.algorithm
58
+ - pareto_front
59
+ - 【new feature】add Optimum_Picker,帕累托最优值选取器。
60
+ - 记录并更新帕累托最优值
61
+ - 同时支持监控以下行为,并触发设定的执行器,详见参数 trigger_for_new 和 trigger_for_out。
62
+ - 新加值是一个新的帕累托最优值
63
+ - 抛弃一个不再是最优的旧的最优值
64
+ - statistician
65
+ - 【new feature】add Accumulator_for_Ndl,适用于 ndl 结构的统计器。
66
+ - 【bug fix】fix bug in Accumulator_Base._init_var()
67
+ - 【new feature】modify Average_Accumulator,在 add() 中新增了 weight 参数用于计算带权重的平均值
68
+ - modify Exponential_Moving_Average,add_sequence() 不再支持 weight_ls 参数,让该接口与其他类更加一致。
69
+ - 添加了测试用例。
@@ -1,4 +1,4 @@
1
- __version__ = "1.3.5"
1
+ __version__ = "1.3.6"
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 1731518184 --verbose 0'
15
+ f'--expiration_timestamp 1735563213 --verbose 0'
16
16
  )
@@ -1 +1,2 @@
1
1
  from .get_pareto_points_idx import get_pareto_points_idx, Direction
2
+ from .optimum_picker import Optimum_Picker
@@ -0,0 +1,218 @@
1
+ from kevin_toolbox.computer_science.data_structure import Executor
2
+ from kevin_toolbox.computer_science.algorithm.pareto_front import get_pareto_points_idx, Direction
3
+ import kevin_toolbox.nested_dict_list as ndl
4
+ import numpy as np
5
+
6
+
7
+ class Optimum_Picker:
8
+ """
9
+ 记录并更新帕累托最优值
10
+ 同时支持监控以下行为:
11
+ - 新加值是一个新的帕累托最优值
12
+ - 抛弃一个不再是最优的旧的最优值
13
+ 并触发设定的执行器,详见参数 trigger_for_new 和 trigger_for_out
14
+ """
15
+
16
+ def __init__(self, **kwargs):
17
+ """
18
+ 参数:
19
+ directions: <list of Direction> 比较的方向
20
+ trigger_for_new: <Executor> 触发器
21
+ 当 add() 新添加的监控值是一个新的帕累托最优时,执行该触发器
22
+ 在执行前,将自动往触发器的 kwargs 中添加 {"metrics": <metrics>, "step": <step>, ...} 等信息
23
+ trigger_for_out: <Executor> 触发器
24
+ 当 add() 时候需要抛弃一些不再是的帕累托最优的历史值时,执行该触发器
25
+ 在执行前,将自动往触发器的 kwargs 中添加 {"metrics": <metrics>, "step": <step>, ...} 等信息
26
+ warmup_steps: <int> 在经过多少次 add() 之后,再开始比较监控值
27
+ 默认为 0
28
+ pick_per_steps: <int> 每经过多少次 add(),就比较一次监控值
29
+ 默认为 1
30
+ """
31
+ # 默认参数
32
+ paras = {
33
+ "directions": None,
34
+ "trigger_for_new": None,
35
+ "trigger_for_out": None,
36
+ "warmup_steps": 0,
37
+ "pick_per_steps": 1,
38
+ }
39
+
40
+ # 获取参数
41
+ paras.update(kwargs)
42
+
43
+ # 校验参数
44
+ assert paras["warmup_steps"] >= 0 and paras["pick_per_steps"] >= 1
45
+ paras["directions"] = [Direction(i) for i in paras["directions"]]
46
+ for k in ["trigger_for_out", "trigger_for_new"]:
47
+ assert isinstance(paras[k], (type(None), Executor))
48
+
49
+ self.paras = paras
50
+ self._state = self._init_state()
51
+
52
+ def _init_state(self):
53
+ return dict(
54
+ optimal_ls=list(), # [{"metrics":metrics, "record":record, "step":step}, ...]
55
+ step=0,
56
+ b_empty_cache=True,
57
+ last_optimal_nums=0
58
+ )
59
+
60
+ def add(self, metrics, b_force_clear_cache=False, **kwargs):
61
+ """
62
+ 添加指标
63
+
64
+ 参数:
65
+ metrics: 指标
66
+ b_force_clear_cache: <boolean> 是否强制清空缓存
67
+ 默认为 False,此时将根据设定的 warmup_steps 和 pick_per_steps 来决定何时清空一次缓存
68
+ **kwargs: 用户自定义记录
69
+ 将被添加到 record 中
70
+ """
71
+ assert metrics is not None
72
+ metrics = np.asarray(metrics).reshape(1, -1)
73
+ assert metrics.shape[-1] == len(self.paras["directions"])
74
+
75
+ optimal_ls, step = self._state["optimal_ls"], self._state["step"]
76
+ new_record = dict(metrics=metrics, step=step)
77
+ new_record.update(kwargs)
78
+ #
79
+ optimal_ls.append(new_record)
80
+ self._state["step"] += 1
81
+
82
+ # warmup & cache
83
+ if not b_force_clear_cache and (step < self.paras["warmup_steps"] or
84
+ (step - self.paras["warmup_steps"]) % self.paras["pick_per_steps"] != 0):
85
+ self._state["b_empty_cache"] = False
86
+ return
87
+
88
+ # 找出新的帕累托最优值
89
+ points = np.concatenate([i["metrics"] for i in optimal_ls])
90
+ idx_ls = get_pareto_points_idx(points=points, directions=self.paras["directions"])
91
+ idx_ls.sort()
92
+ # 进行触发操作
93
+ if self.paras["trigger_for_new"] is not None:
94
+ for i in filter(lambda i: i >= self._state["last_optimal_nums"], idx_ls):
95
+ self.paras["trigger_for_new"].run(**optimal_ls[i])
96
+ #
97
+ if self.paras["trigger_for_out"] is not None:
98
+ for i in set(range(self._state["last_optimal_nums"])).difference(set(idx_ls)):
99
+ self.paras["trigger_for_out"].run(**optimal_ls[i])
100
+
101
+ # 更新
102
+ self._state["optimal_ls"] = [optimal_ls[i] for i in idx_ls]
103
+ self._state["b_empty_cache"] = True
104
+ self._state["last_optimal_nums"] = len(idx_ls)
105
+
106
+ def get(self, b_force_clear_cache=False):
107
+ """
108
+ 获取当前最优值记录
109
+
110
+ 参数:
111
+ b_force_clear_cache: <boolean> 是否强制清空缓存
112
+
113
+ 返回:
114
+ record_ls: <list of dict> 最优记录
115
+ b_empty_cache: <boolean> 缓存是否清空,亦即 record_ls 是否是真正的最优记录
116
+ 当 pick_per_steps > 1 时,将有部分记录留存在缓存中,没有进行比较,此时的最优记录并不是完整的也不是最新的
117
+ """
118
+ if b_force_clear_cache and not self._state["b_empty_cache"] and len(self._state["optimal_ls"]) > 0:
119
+ # 需要清空缓存,就把最后一次缓存的记录拿出来,重新使用 b_force_clear_cache=False 去 add 一次
120
+ record = self._state["optimal_ls"].pop(-1)
121
+ metrics, step = record.pop("metrics"), record.pop("step")
122
+ self._state["step"] -= 1
123
+ assert self._state["step"] == step
124
+ self.add(metrics=metrics, b_force_clear_cache=True, **record)
125
+
126
+ return self._state["optimal_ls"][:], self._state["b_empty_cache"] or b_force_clear_cache
127
+
128
+ def clear(self):
129
+ self._state = self._init_state()
130
+
131
+ def __len__(self):
132
+ return self._state["step"]
133
+
134
+ # ---------------------- 用于保存和加载状态 ---------------------- #
135
+ def load_state_dict(self, state_dict):
136
+ """
137
+ 加载状态
138
+ """
139
+ self.clear()
140
+ self._state.update(state_dict)
141
+
142
+ def state_dict(self):
143
+ """
144
+ 获取状态
145
+ """
146
+ return ndl.copy_(var=self._state, b_deepcopy=True, b_keep_internal_references=True)
147
+
148
+
149
+ if __name__ == '__main__':
150
+ """
151
+ 模拟场景
152
+ 在训练模型时,要求比较 val_acc_1(maximize) 和 val_error_2(minimize),
153
+ 要求保存其帕累托最优时的模型。
154
+ """
155
+ import torch
156
+ import matplotlib.pyplot as plt
157
+
158
+ # 一个打乱的圆的采样点序列
159
+ metrics = torch.tensor([(-4.045084971874739, -2.9389262614623632),
160
+ (-3.1871199487434474, -3.852566213878947),
161
+ (-2.1288964578253635, 4.524135262330097),
162
+ (-4.648882429441257, -1.8406227634233896),
163
+ (-4.648882429441256, 1.8406227634233907),
164
+ (-0.936906572928623, 4.911436253643443),
165
+ (0.31395259764656414, -4.990133642141358),
166
+ (-4.960573506572389, 0.6266661678215226),
167
+ (-3.1871199487434487, 3.852566213878946),
168
+ (4.381533400219316, -2.4087683705085805),
169
+ (0.31395259764656763, 4.990133642141358),
170
+ (2.6791339748949827, 4.221639627510076),
171
+ (4.8429158056431545, -1.2434494358242767),
172
+ (1.5450849718747361, -4.755282581475768),
173
+ (4.842915805643155, 1.243449435824274),
174
+ (3.644843137107056, -3.422735529643445),
175
+ (5.0, 0.0),
176
+ (-2.128896457825361, -4.524135262330099),
177
+ (2.6791339748949836, -4.221639627510075),
178
+ (-4.9605735065723895, -0.6266661678215214),
179
+ (3.644843137107058, 3.422735529643443),
180
+ (4.381533400219318, 2.4087683705085765),
181
+ (-0.9369065729286231, -4.911436253643443),
182
+ (-4.045084971874736, 2.9389262614623664),
183
+ (1.5450849718747373, 4.755282581475767)])
184
+ # 右下角的点是帕累托最优
185
+ best_idx_ls = [6, 9, 12, 13, 15, 16, 18]
186
+
187
+ # 将x和y坐标分别存储在两个列表中
188
+ x_coords = metrics[:, 0].numpy().tolist()
189
+ y_coords = metrics[:, 1].numpy().tolist()
190
+ # 按顺序绘制点
191
+ plt.plot(x_coords, y_coords, marker='o')
192
+ # 添加顺序标签
193
+ for i, txt in enumerate(range(len(metrics))):
194
+ plt.annotate(txt, (x_coords[i], y_coords[i]), textcoords="offset points", xytext=(0, 5), ha='center')
195
+ plt.show()
196
+ import os
197
+ from kevin_toolbox.data_flow.file import json_
198
+ from kevin_toolbox.patches.for_os import remove
199
+
200
+ temp_dir = os.path.join(os.path.dirname(__file__), "temp")
201
+ remove(temp_dir, ignore_errors=True)
202
+
203
+ opt_picker = Optimum_Picker(
204
+ warmup_steps=9, pick_per_steps=5,
205
+ trigger_for_new=Executor(
206
+ func=lambda metrics, step: json_.write(metrics.tolist(), os.path.join(temp_dir, f'{step}.json'))),
207
+ trigger_for_out=Executor(func=lambda step, **kwargs: remove(os.path.join(temp_dir, f'{step}.json'))),
208
+ directions=["maximize", "minimize"]
209
+ )
210
+ for s, v in enumerate(metrics):
211
+ opt_picker.add(metrics=v)
212
+ print()
213
+ print(s, v)
214
+ print(opt_picker.get()[1])
215
+ print([i["step"] for i in opt_picker.get()[0]])
216
+
217
+ for i in best_idx_ls:
218
+ assert os.path.isfile(os.path.join(temp_dir, f'{i}.json'))
@@ -1,3 +1,4 @@
1
1
  from .accumulator_base import Accumulator_Base
2
2
  from .exponential_moving_average import Exponential_Moving_Average
3
3
  from .average_accumulator import Average_Accumulator
4
+ from .accumulator_for_ndl import Accumulator_for_Ndl
@@ -71,7 +71,7 @@ class Accumulator_Base(object):
71
71
 
72
72
  def add_sequence(self, var_ls, **kwargs):
73
73
  # for var in var_ls:
74
- # self.add(var)
74
+ # self.add(var, **kwargs)
75
75
  raise NotImplementedError
76
76
 
77
77
  def add(self, var, **kwargs):
@@ -112,7 +112,7 @@ class Accumulator_Base(object):
112
112
  if like is not None:
113
113
  var = init_var.by_like(var=like)
114
114
  elif data_format is not None:
115
- var = init_var.by_data_format(**kwargs)
115
+ var = init_var.by_data_format(**data_format)
116
116
  else:
117
117
  var = None
118
118
  return var
@@ -0,0 +1,69 @@
1
+ import torch
2
+ import kevin_toolbox.nested_dict_list as ndl
3
+ from kevin_toolbox.computer_science.algorithm.statistician import Accumulator_Base
4
+
5
+
6
+ class Accumulator_for_Ndl:
7
+ """
8
+ 适用于 ndl 结构的统计器
9
+ """
10
+
11
+ def __init__(self, accumulator_builder):
12
+ """
13
+ 参数:
14
+ accumulator_builder: ndl叶节点统计器的构造函数
15
+ """
16
+ assert callable(accumulator_builder) or isinstance(accumulator_builder, Accumulator_Base)
17
+ self.accumulator_builder = accumulator_builder
18
+
19
+ self.var = None
20
+
21
+ def add(self, var, **kwargs):
22
+ if self.var is None and isinstance(var, (dict, list)):
23
+ self.var = type(var)()
24
+ for name, value in ndl.get_nodes(var=var, level=-1, b_strict=True):
25
+ accumulator = ndl.get_value(var=self.var, name=name, default=None)
26
+ if accumulator is None:
27
+ accumulator = self.accumulator_builder()
28
+ self.var = ndl.set_value(var=self.var, name=name, value=accumulator, b_force=True)
29
+ value = value.detach().cpu().numpy() if torch.is_tensor(value) else value
30
+ accumulator.add(value, **kwargs)
31
+
32
+ def add_sequence(self, var_ls, **kwargs):
33
+ for var in var_ls:
34
+ self.add(var, **kwargs)
35
+
36
+ def get(self, **kwargs):
37
+ return ndl.traverse(
38
+ var=ndl.copy_(var=self.var, b_deepcopy=False),
39
+ match_cond=lambda _, __, v: not isinstance(v, (dict, list)) and hasattr(v, "get"), action_mode="replace",
40
+ converter=lambda _, v: v.get(**kwargs)
41
+ )
42
+
43
+
44
+ if __name__ == '__main__':
45
+ from kevin_toolbox.data_flow.file import markdown
46
+ import numpy as np
47
+ from kevin_toolbox.computer_science.algorithm.statistician import Average_Accumulator
48
+
49
+ worker = Accumulator_for_Ndl(accumulator_builder=Average_Accumulator)
50
+
51
+ worker.add({
52
+ 1: 2.1,
53
+ "233": torch.ones(10),
54
+ "543": [
55
+ np.array([1, 2, 3]),
56
+ np.array([4, 5, 6]),
57
+ ]
58
+ }, weight=0.8)
59
+
60
+ worker.add({
61
+ 1: 3.1,
62
+ "233": torch.zeros(10),
63
+ "543": [
64
+ np.array([0, 2, 3]),
65
+ np.array([0, 5, 6]),
66
+ ]
67
+ }, weight=1.4)
68
+
69
+ print(markdown.generate_list(var=worker.get()))
@@ -31,20 +31,22 @@ class Average_Accumulator(Accumulator_Base):
31
31
 
32
32
  def add_sequence(self, var_ls, **kwargs):
33
33
  for var in var_ls:
34
- self.add(var)
34
+ self.add(var, **kwargs)
35
35
 
36
- def add(self, var, **kwargs):
36
+ def add(self, var, weight=1, **kwargs):
37
37
  """
38
38
  添加单个数据
39
39
 
40
40
  参数:
41
41
  var: 数据
42
+ weight: 权重
42
43
  """
43
44
  if self.var is None:
44
45
  self.var = self._init_var(like=var)
45
46
  # 累积
46
- self.var += var
47
+ self.var = self.var + var * weight
47
48
  self.state["total_nums"] += 1
49
+ self.state["total_weights"] += weight
48
50
 
49
51
  def get(self, **kwargs):
50
52
  """
@@ -53,7 +55,17 @@ class Average_Accumulator(Accumulator_Base):
53
55
  """
54
56
  if len(self) == 0:
55
57
  return None
56
- return self.var / len(self)
58
+ return self.var / self.state["total_weights"]
59
+
60
+ @staticmethod
61
+ def _init_state():
62
+ """
63
+ 初始化状态
64
+ """
65
+ return dict(
66
+ total_nums=0,
67
+ total_weights=0,
68
+ )
57
69
 
58
70
 
59
71
  if __name__ == '__main__':
@@ -58,18 +58,11 @@ class Exponential_Moving_Average(Accumulator_Base):
58
58
  #
59
59
  super(Exponential_Moving_Average, self).__init__(**paras)
60
60
 
61
- def add_sequence(self, var_ls, weight_ls=None):
62
- if weight_ls is not None:
63
- if isinstance(weight_ls, (int, float,)):
64
- weight_ls = [weight_ls] * len(var_ls)
65
- assert len(weight_ls) == len(var_ls)
66
- for var, weight in enumerate(var_ls, weight_ls):
67
- self.add(var, weight)
68
- else:
69
- for var in var_ls:
70
- self.add(var)
61
+ def add_sequence(self, var_ls, **kwargs):
62
+ for var in var_ls:
63
+ self.add(var, **kwargs)
71
64
 
72
- def add(self, var, weight=1):
65
+ def add(self, var, weight=1, **kwargs):
73
66
  """
74
67
  添加单个数据
75
68
 
@@ -88,7 +81,7 @@ class Exponential_Moving_Average(Accumulator_Base):
88
81
  self.state["total_nums"] += 1
89
82
  self.state["bias_fix"] *= keep_ratio
90
83
 
91
- def get(self, bias_correction=None):
84
+ def get(self, bias_correction=None, **kwargs):
92
85
  """
93
86
  获取当前累加值
94
87
  当未初始化时,返回 None
@@ -313,6 +313,9 @@ class Kevin_Notation_Writer:
313
313
  try:
314
314
  # 解释为多行
315
315
  assert paras.get("b_single_line", None) in (None, False)
316
+ temp = [len(paras["column_dict"][k]) for k in self.metadata["column_name"]]
317
+ if temp:
318
+ assert max(temp) == min(temp), f"Error: the length of each column is not equal!"
316
319
  row_ls = list(zip(*[paras["column_dict"][k] for k in self.metadata["column_name"]]))
317
320
  except:
318
321
  # 解释为单行
@@ -0,0 +1,27 @@
1
+ import pytest
2
+ from kevin_toolbox.patches.for_test import check_consistency
3
+
4
+ import os
5
+ import numpy as np
6
+
7
+ from kevin_toolbox.data_flow.file import kevin_notation
8
+ from kevin_toolbox.data_flow.file.kevin_notation.test.test_data.data_all import metadata_ls, content_ls, file_path_ls
9
+
10
+
11
+ @pytest.mark.parametrize("expected_metadata, expected_content, file_path",
12
+ zip(metadata_ls, content_ls, file_path_ls))
13
+ def test_write(expected_metadata, expected_content, file_path):
14
+ print("test write()")
15
+
16
+ """
17
+ 当写入的列的元素不一致时,是否能正常报错
18
+ """
19
+
20
+ # 新建
21
+ file_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "test_data/temp", os.path.basename(file_path))
22
+
23
+ # 字典方式写入
24
+ if len(expected_content) > 1:
25
+ with pytest.raises(AssertionError):
26
+ list(expected_content.values())[0].clear()
27
+ kevin_notation.write(metadata=expected_metadata, content=expected_content, file_path=file_path)
@@ -5,6 +5,9 @@ def write(metadata, content, file_path):
5
5
  """
6
6
  写入整个文件的快捷接口
7
7
  """
8
+ if "column_num" in metadata:
9
+ metadata=metadata.copy()
10
+ metadata.pop("column_num")
8
11
  with kevin_notation.Writer(file_path=file_path, mode="w", sep=metadata.get("sep", "\t")) as writer:
9
12
  writer.write_metadata(metadata=metadata)
10
13
  if isinstance(content, (dict,)):
@@ -1,3 +1,6 @@
1
1
  from .generate_link import generate_link
2
2
  from .generate_list import generate_list
3
3
  from .generate_table import generate_table
4
+ from .parse_table import parse_table
5
+ from .find_tables import find_tables
6
+ from .save_images_in_ndl import save_images_in_ndl