kevin-toolbox-dev 1.4.6__tar.gz → 1.4.7__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 (375) hide show
  1. kevin-toolbox-dev-1.4.7/PKG-INFO +64 -0
  2. kevin-toolbox-dev-1.4.7/README.md +43 -0
  3. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/__init__.py +2 -2
  4. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +2 -0
  5. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_process_execute.py +109 -0
  6. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +105 -0
  7. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/__init__.py +15 -0
  8. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_1.py +69 -0
  9. kevin-toolbox-dev-1.4.7/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/utils/wrapper_with_timeout_2.py +76 -0
  10. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/data_structure/executor.py +2 -2
  11. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/write_json.py +36 -3
  12. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +2 -2
  13. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +5 -1
  14. kevin-toolbox-dev-1.4.7/kevin_toolbox_dev.egg-info/PKG-INFO +64 -0
  15. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox_dev.egg-info/SOURCES.txt +4 -0
  16. kevin-toolbox-dev-1.4.6/PKG-INFO +0 -71
  17. kevin-toolbox-dev-1.4.6/README.md +0 -50
  18. kevin-toolbox-dev-1.4.6/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -1
  19. kevin-toolbox-dev-1.4.6/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -84
  20. kevin-toolbox-dev-1.4.6/kevin_toolbox_dev.egg-info/PKG-INFO +0 -71
  21. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/__init__.py +0 -0
  22. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  23. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  24. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  25. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  26. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  27. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  28. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  29. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  30. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  31. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  32. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  33. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  34. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  35. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  36. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  37. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  38. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  39. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  40. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  41. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  42. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  43. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  44. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  45. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  46. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  47. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  48. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  49. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  50. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  51. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  52. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  53. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  54. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  55. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  56. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  57. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  58. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  59. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  60. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
  61. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  62. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  63. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  65. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  66. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  67. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  68. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  69. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  70. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
  71. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  72. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  73. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  74. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  75. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  76. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  77. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  78. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/dangerous/__init__.py +0 -0
  79. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  80. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/__init__.py +0 -0
  81. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  82. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  83. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  84. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  85. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  86. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  87. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  88. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  89. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  90. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  91. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/excel/__init__.py +0 -0
  92. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/excel/write_excel_with_matrix.py +0 -0
  93. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
  95. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  96. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  97. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  98. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
  99. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  100. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  101. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
  102. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  103. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  104. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  105. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  106. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  107. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  108. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  109. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  110. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  111. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  112. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  113. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  114. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +0 -0
  115. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  116. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -0
  117. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  118. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/link/__init__.py +0 -0
  119. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/link/find_links.py +0 -0
  120. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +0 -0
  121. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/__init__.py +0 -0
  122. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +0 -0
  123. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py +0 -0
  124. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +0 -0
  125. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +0 -0
  126. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/find_tables.py +0 -0
  127. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/generate_table.py +0 -0
  128. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/get_format.py +0 -0
  129. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +0 -0
  130. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/table/variable.py +0 -0
  131. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +0 -0
  132. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/data_flow/file/markdown/utils/save_images_in_ndl.py +0 -0
  133. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/__init__.py +0 -0
  134. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  135. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  136. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  137. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  138. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  139. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  140. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  141. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  142. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  143. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  144. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  145. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  146. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  147. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  148. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  149. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  150. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  151. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  152. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  153. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  154. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  155. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/developing/test.py +0 -0
  156. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/__init__.py +0 -0
  157. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  158. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  159. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/test/__init__.py +0 -0
  160. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/test/test_check_.py +0 -0
  161. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/test/test_variable_.py +0 -0
  162. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/test/test_version.py +0 -0
  163. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/variable_/__init__.py +0 -0
  164. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/variable_/env_vars_parser.py +0 -0
  165. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/version/__init__.py +0 -0
  166. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  167. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  168. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  169. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/__init__.py +0 -0
  170. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  171. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  172. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  173. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  174. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  175. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  176. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  177. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  178. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  179. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  180. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  181. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  182. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/__init__.py +0 -0
  183. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  184. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  186. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  187. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  188. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  189. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  190. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  191. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  192. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  193. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  195. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  196. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  197. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  198. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  199. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  200. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  201. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  202. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  203. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  204. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  205. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  206. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  207. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  208. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  209. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  210. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  211. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/__init__.py +0 -0
  212. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/__init__.py +0 -0
  213. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  214. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  215. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  216. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  217. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  218. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  219. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  220. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  221. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  222. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  223. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  224. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  225. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  226. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  227. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  228. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  229. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  230. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  231. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  232. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  233. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/cache.py +0 -0
  235. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  236. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  237. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  238. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  239. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  240. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  241. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  242. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/__init__.py +0 -0
  243. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  244. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  245. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  246. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  247. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  248. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/__init__.py +0 -0
  249. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  250. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  251. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  252. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  253. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
  254. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  255. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  256. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  257. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  258. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  259. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  260. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  261. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  262. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  263. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  264. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  265. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  266. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  267. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  268. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  269. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  270. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  271. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  272. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  273. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  274. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  275. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  276. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
  277. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
  278. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  279. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
  280. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  281. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  282. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  283. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  284. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  285. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  286. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  287. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  288. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
  289. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/__init__.py +0 -0
  290. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  291. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  292. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  293. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  294. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  295. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  296. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
  297. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
  298. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
  299. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
  300. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
  301. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
  302. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +0 -0
  303. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
  304. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +0 -0
  305. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
  306. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
  307. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
  308. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  309. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  310. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  311. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  312. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  313. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  314. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  315. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
  316. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/get_rng_state.py +0 -0
  317. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/set_rng_state.py +0 -0
  318. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  319. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  320. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  321. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  322. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  323. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  324. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  325. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  326. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  327. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  328. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  329. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  330. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  331. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  332. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  333. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  334. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  335. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/copy.py +0 -0
  336. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
  337. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/organize/__init__.py +0 -0
  338. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/organize/group_files_by_timestamp.py +0 -0
  339. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/pack.py +0 -0
  340. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
  341. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
  342. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
  343. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/remove.py +0 -0
  344. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  345. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_os/walk.py +0 -0
  346. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_streamlit/__init__.py +0 -0
  347. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +0 -0
  348. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_streamlit/markdown/show.py +0 -0
  349. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +0 -0
  350. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +0 -0
  351. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  352. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  353. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  354. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  355. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  356. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  357. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  358. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  359. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  360. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  361. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  362. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  363. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  364. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  365. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  366. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  367. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  368. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/utils/__init__.py +0 -0
  369. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox/utils/variable.py +0 -0
  370. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  371. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  372. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  373. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/pyproject.toml +0 -0
  374. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/setup.cfg +0 -0
  375. {kevin-toolbox-dev-1.4.6 → kevin-toolbox-dev-1.4.7}/setup.py +0 -0
@@ -0,0 +1,64 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.4.7
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.7 (2025-02-19)【new feature】【bug fix】【incompatible change】
50
+
51
+ - data_flow.file
52
+ - 【new feature】【incompatible change】modify json_.write(),支持使用参数 output_format 设置更复杂的输出格式。同时废弃原来的sort_keys参数。
53
+ - output_format 支持以下输入:
54
+ - "pretty_printed": 通过添加大量的空格和换行符来格式化输出,使输出更易读
55
+ - "minified": 删除所有空格和换行符,使输出更紧凑
56
+ - `<dict/tuple>`: 更加细致的格式设定,比如 `{"indent": 2, ensure_ascii=True}`,如果需要基于已有格式进行微调可以使用以下方式:`("pretty_printed", {"indent": 2, ensure_ascii=True})`
57
+ - computer_science.algorithm.parallel_and_concurrent
58
+ - 【bug fix】【incompatible change】fix bug in multi_thread_execute(),修正了参数timeout无法对每个任务起效的bug,将参数thread_nums更名为worker_nums。
59
+ - 【new feature】add multi_process_execute(),用于多进程执行任务。同样支持timeout设定和进度条显示。
60
+ - patches.for_matplotlib.common_charts
61
+ - modify plot_lines(),添加了 x_ticklabels_name 参数用于自定义x轴的坐标值
62
+ - 以上修改,均已添加了对应的测试用例。
63
+
64
+
@@ -0,0 +1,43 @@
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.7 (2025-02-19)【new feature】【bug fix】【incompatible change】
31
+
32
+ - data_flow.file
33
+ - 【new feature】【incompatible change】modify json_.write(),支持使用参数 output_format 设置更复杂的输出格式。同时废弃原来的sort_keys参数。
34
+ - output_format 支持以下输入:
35
+ - "pretty_printed": 通过添加大量的空格和换行符来格式化输出,使输出更易读
36
+ - "minified": 删除所有空格和换行符,使输出更紧凑
37
+ - `<dict/tuple>`: 更加细致的格式设定,比如 `{"indent": 2, ensure_ascii=True}`,如果需要基于已有格式进行微调可以使用以下方式:`("pretty_printed", {"indent": 2, ensure_ascii=True})`
38
+ - computer_science.algorithm.parallel_and_concurrent
39
+ - 【bug fix】【incompatible change】fix bug in multi_thread_execute(),修正了参数timeout无法对每个任务起效的bug,将参数thread_nums更名为worker_nums。
40
+ - 【new feature】add multi_process_execute(),用于多进程执行任务。同样支持timeout设定和进度条显示。
41
+ - patches.for_matplotlib.common_charts
42
+ - modify plot_lines(),添加了 x_ticklabels_name 参数用于自定义x轴的坐标值
43
+ - 以上修改,均已添加了对应的测试用例。
@@ -1,4 +1,4 @@
1
- __version__ = "1.4.6"
1
+ __version__ = "1.4.7"
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 1753280251 --verbose 0'
15
+ f'--expiration_timestamp 1755525740 --verbose 0'
16
16
  )
@@ -0,0 +1,2 @@
1
+ from .multi_thread_execute import multi_thread_execute
2
+ from .multi_process_execute import multi_process_execute
@@ -0,0 +1,109 @@
1
+ import pickle
2
+ import concurrent.futures
3
+ from multiprocessing import Manager
4
+ from kevin_toolbox.computer_science.data_structure import Executor
5
+ from kevin_toolbox.computer_science.algorithm.parallel_and_concurrent.utils import wrapper_for_mp as wrapper
6
+ from kevin_toolbox.computer_science.algorithm.parallel_and_concurrent.utils import DEFAULT_PROCESS_NUMS
7
+
8
+
9
+ def multi_process_execute(executors, worker_nums=DEFAULT_PROCESS_NUMS, b_display_progress=True, timeout=None,
10
+ _hook_for_debug=None):
11
+ """
12
+ 多进程执行
13
+
14
+ 参数:
15
+ executors: <list/generator/iterator of Executor> 执行器序列
16
+ worker_nums: <int> 进程数
17
+ b_display_progress: <boolean> 是否显示进度条
18
+ timeout: <int/float> 每个进程的最大等待时间,单位是s
19
+ 默认为 None,表示允许等待无限长的时间
20
+ _hook_for_debug: <dict/None> 当设置为非 None 值时,将保存中间的执行信息。
21
+ 包括:
22
+ - "execution_orders": 执行顺序
23
+ - "completion_orders": 完成顺序
24
+ 这些信息与最终结果无关,仅面向更底层的调试需求,任何人都不应依赖该特性
25
+ 返回:
26
+ res_ls, failed_idx_ls
27
+ 执行结果列表,以及执行失败的执行器索引列表
28
+ """
29
+ executor_ls = []
30
+ for i in executors:
31
+ assert isinstance(i, (Executor,))
32
+ try:
33
+ pickle.dumps(i)
34
+ except:
35
+ raise AttributeError(
36
+ f'非法任务。因为进程池中的任务必须要能被pickle化。\n对象 {i} 无法被 pickle,请检查其中是否使用了闭包内定义的函数')
37
+ executor_ls.append(i)
38
+ if b_display_progress:
39
+ from tqdm import tqdm
40
+ p_bar = tqdm(total=len(executor_ls))
41
+ else:
42
+ p_bar = None
43
+
44
+ if isinstance(_hook_for_debug, dict):
45
+ _execution_orders, _completion_orders = Manager().list(), Manager().list()
46
+ else:
47
+ _execution_orders, _completion_orders = None, None
48
+
49
+ res_ls = [None] * len(executor_ls)
50
+ failed_idx_ls = []
51
+ with concurrent.futures.ProcessPoolExecutor(max_workers=worker_nums) as process_pool:
52
+ # 提交任务并添加进度回调
53
+ futures = []
54
+ for i, executor in enumerate(executor_ls):
55
+ future = process_pool.submit(wrapper, executor, timeout, i, _execution_orders, _completion_orders)
56
+ if b_display_progress:
57
+ future.add_done_callback(lambda _: p_bar.update())
58
+ futures.append(future)
59
+
60
+ # 收集结果
61
+ for i, future in enumerate(futures):
62
+ try:
63
+ res, b_success = future.result()
64
+ except:
65
+ b_success = False
66
+ if b_success:
67
+ res_ls[i] = res
68
+ else:
69
+ failed_idx_ls.append(i)
70
+
71
+ if b_display_progress:
72
+ p_bar.close()
73
+
74
+ if isinstance(_hook_for_debug, (dict,)):
75
+ _hook_for_debug.update({
76
+ "execution_orders": list(_execution_orders),
77
+ "completion_orders": list(_completion_orders)
78
+ })
79
+
80
+ return res_ls, failed_idx_ls
81
+
82
+
83
+ if __name__ == '__main__':
84
+ import time
85
+
86
+
87
+ def func_(i):
88
+ # 模拟部分任务长时间运行,部分任务正常结束
89
+ if i in [2, 3, 7]:
90
+ time.sleep(100)
91
+ else:
92
+ time.sleep(0.01)
93
+ print(f"任务 {i} 执行完成")
94
+ return i * 2
95
+
96
+
97
+ hook_for_debug = dict()
98
+ a = time.time()
99
+ results, failed = multi_process_execute(
100
+ executors=[Executor(func=func_, args=(i,)) for i in range(10)],
101
+ worker_nums=10,
102
+ timeout=0.2,
103
+ _hook_for_debug=hook_for_debug
104
+ )
105
+ gap = time.time() - a
106
+ print("执行结果:", results)
107
+ print("超时失败的任务索引:", failed)
108
+ print("调试信息:", hook_for_debug)
109
+ print("总耗时:", gap)
@@ -0,0 +1,105 @@
1
+ import concurrent.futures
2
+ from multiprocessing import Manager
3
+ from kevin_toolbox.computer_science.data_structure import Executor
4
+ from kevin_toolbox.computer_science.algorithm.parallel_and_concurrent.utils import wrapper_for_mt as wrapper
5
+ from kevin_toolbox.computer_science.algorithm.parallel_and_concurrent.utils import DEFAULT_THREAD_NUMS
6
+
7
+
8
+ def multi_thread_execute(executors, worker_nums=DEFAULT_THREAD_NUMS, b_display_progress=True, timeout=None,
9
+ _hook_for_debug=None):
10
+ """
11
+ 多线程执行
12
+
13
+ 参数:
14
+ executors: <list/generator/iterator of Executor> 执行器序列
15
+ worker_nums: <int> 线程数
16
+ b_display_progress: <boolean> 是否显示进度条
17
+ timeout: <int> 每个线程的最大等待时间,单位是s
18
+ 默认为 None,表示允许等待无限长的时间
19
+ _hook_for_debug: <dict/None> 当设置为非 None 值时,将保存中间的执行信息。
20
+ 包括:
21
+ - "execution_order": 执行顺序
22
+ - "completion_order": 完成顺序
23
+ 这些信息与最终结果无关,仅面向更底层的调试需求,任何人都不应依赖该特性
24
+ 返回:
25
+ res_ls, failed_idx_ls
26
+ 执行结果列表,执行失败的执行器 idx
27
+ """
28
+ executor_ls = []
29
+ for i in executors:
30
+ assert isinstance(i, (Executor,))
31
+ executor_ls.append(i)
32
+ if b_display_progress:
33
+ from tqdm import tqdm
34
+ p_bar = tqdm(total=len(executor_ls))
35
+ else:
36
+ p_bar = None
37
+
38
+ if isinstance(_hook_for_debug, dict):
39
+ _execution_orders, _completion_orders = Manager().list(), Manager().list()
40
+ else:
41
+ _execution_orders, _completion_orders = None, None
42
+
43
+ res_ls = [None] * len(executor_ls)
44
+ failed_idx_ls = []
45
+ with concurrent.futures.ThreadPoolExecutor(max_workers=worker_nums) as thread_pool:
46
+ # 提交任务
47
+ futures = []
48
+ for i, executor in enumerate(executor_ls):
49
+ future = thread_pool.submit(wrapper, executor, timeout, i, _execution_orders, _completion_orders)
50
+ if b_display_progress:
51
+ future.add_done_callback(lambda _: p_bar.update())
52
+ futures.append(future)
53
+
54
+ # 收集结果
55
+ for i, future in enumerate(futures):
56
+ try:
57
+ res, b_success = future.result()
58
+ except:
59
+ b_success = False
60
+ if b_success:
61
+ res_ls[i] = res
62
+ else:
63
+ failed_idx_ls.append(i)
64
+
65
+ if b_display_progress:
66
+ p_bar.close()
67
+
68
+ if isinstance(_hook_for_debug, (dict,)):
69
+ _hook_for_debug.update({
70
+ "execution_orders": list(_execution_orders),
71
+ "completion_orders": list(_completion_orders)
72
+ })
73
+
74
+ return res_ls, failed_idx_ls
75
+
76
+
77
+ if __name__ == '__main__':
78
+ import time
79
+
80
+
81
+ def func_(i):
82
+ # 模拟部分任务长时间运行,部分任务正常结束
83
+ if i in [2, 3, 7]:
84
+ time.sleep(100)
85
+ elif i in [4, 5, 6]:
86
+ time.sleep(0.01)
87
+ else:
88
+ time.sleep(0.05)
89
+ print(f"任务 {i} 执行完成")
90
+ return i * 2
91
+
92
+
93
+ hook_for_debug = dict()
94
+ a = time.time()
95
+ results, failed = multi_thread_execute(
96
+ executors=[Executor(func=func_, args=(i,)) for i in range(10)],
97
+ worker_nums=5,
98
+ timeout=0.2,
99
+ _hook_for_debug=hook_for_debug
100
+ )
101
+ gap = time.time() - a
102
+ print("执行结果:", results)
103
+ print("超时失败的任务索引:", failed)
104
+ print("调试信息:", hook_for_debug)
105
+ print("总耗时:", gap)
@@ -0,0 +1,15 @@
1
+ from .wrapper_with_timeout_1 import wrapper_with_timeout_1
2
+ from .wrapper_with_timeout_2 import wrapper_with_timeout_2
3
+
4
+ import signal
5
+ import multiprocessing
6
+
7
+ if callable(getattr(signal, "setitimer", None)):
8
+ wrapper_for_mp = wrapper_with_timeout_1 # 效率更高,优先选择
9
+ else:
10
+ wrapper_for_mp = wrapper_with_timeout_2
11
+
12
+ wrapper_for_mt = wrapper_with_timeout_2
13
+
14
+ DEFAULT_PROCESS_NUMS = multiprocessing.cpu_count() + 2
15
+ DEFAULT_THREAD_NUMS = DEFAULT_PROCESS_NUMS * 2
@@ -0,0 +1,69 @@
1
+ import signal
2
+
3
+
4
+ # 定义超时异常
5
+ class TimeoutException(Exception):
6
+ pass
7
+
8
+
9
+ # 定时器信号处理函数
10
+ def __alarm_handler(*args, **kwargs):
11
+ raise TimeoutException("任务超时")
12
+
13
+
14
+ def wrapper_with_timeout_1(executor, timeout=None, idx=-1, _execution_orders=None, _completion_orders=None):
15
+ """
16
+ 限制执行时间,使用 multiprocessing.Process 强制终止超时任务
17
+ 该函数仅适用于多进程以及 unix 操作系统
18
+
19
+ 参数:
20
+ executor: <Executor>执行器,需实现 run() 方法
21
+ idx: <int> 任务索引(用于调试)
22
+ timeout: <int/float>最大等待时间(单位:秒,支持 float)
23
+ _execution_orders, _completion_orders: 用于记录调试信息的 Manager.list
24
+ 返回:
25
+ (result, b_success) 若超时或异常则 b_success 为 False
26
+ """
27
+ if _execution_orders is not None:
28
+ _execution_orders.append(idx)
29
+
30
+ # 定时器
31
+ if timeout is not None:
32
+ signal.signal(signal.SIGALRM, __alarm_handler)
33
+ signal.setitimer(signal.ITIMER_REAL, timeout)
34
+
35
+ # 执行
36
+ res, b_success = None, True
37
+ try:
38
+ res = executor.run()
39
+ if _completion_orders is not None:
40
+ _completion_orders.append(idx)
41
+ except TimeoutException:
42
+ b_success = False
43
+ finally:
44
+ signal.alarm(0) # 取消定时器
45
+ return res, b_success
46
+
47
+
48
+ if __name__ == '__main__':
49
+ import time
50
+
51
+
52
+ def func_(i):
53
+ if i in [2, 3, 7]:
54
+ time.sleep(300)
55
+ else:
56
+ time.sleep(0.5)
57
+ return i * 2
58
+
59
+
60
+ from kevin_toolbox.computer_science.data_structure import Executor
61
+
62
+ print(wrapper_with_timeout_1(Executor(func=func_, args=(2,)), timeout=1))
63
+ print(wrapper_with_timeout_1(Executor(func=func_, args=(1,)), timeout=1))
64
+
65
+ execution_orders = []
66
+ completion_orders = []
67
+ print(wrapper_with_timeout_1(Executor(func=func_, args=(2,)), timeout=1, _execution_orders=execution_orders,
68
+ _completion_orders=completion_orders))
69
+ print(execution_orders, completion_orders)
@@ -0,0 +1,76 @@
1
+ from multiprocessing import Process, Queue
2
+
3
+
4
+ def __inner_wrapper(q, executor):
5
+ try:
6
+ res = executor.run()
7
+ q.put((res, True))
8
+ except:
9
+ q.put((None, False))
10
+
11
+
12
+ def wrapper_with_timeout_2(executor, timeout=None, idx=-1, _execution_orders=None, _completion_orders=None):
13
+ """
14
+ 限制执行时间,使用 multiprocessing.Process 强制终止超时任务
15
+ 该函数适用于多线程、多进程以及所有操作系统,但是效率相较于 wrapper_with_timeout_1 较差
16
+
17
+ 参数:
18
+ executor: <Executor>执行器,需实现 run() 方法
19
+ idx: <int> 任务索引(用于调试)
20
+ timeout: <int/float>最大等待时间(单位:秒,支持 float)
21
+ _execution_orders, _completion_orders: 用于记录调试信息的 Manager.list
22
+ 返回:
23
+ (result, b_success) 若超时或异常则 b_success 为 False
24
+ """
25
+ if _execution_orders is not None:
26
+ _execution_orders.append(idx)
27
+
28
+ res, b_success = None, False
29
+ if timeout is not None:
30
+ q = Queue()
31
+ p = Process(target=__inner_wrapper, args=(q, executor))
32
+ p.start()
33
+ p.join(timeout) # 最多等待 timeout 秒
34
+
35
+ if q.qsize():
36
+ try:
37
+ res, b_success = q.get_nowait()
38
+ except:
39
+ pass
40
+ if p.is_alive():
41
+ p.terminate()
42
+ p.join()
43
+ else:
44
+ try:
45
+ res, b_success = executor.run(), True
46
+ except:
47
+ pass
48
+
49
+ if b_success:
50
+ if _completion_orders is not None:
51
+ _completion_orders.append(idx)
52
+ return res, b_success
53
+
54
+
55
+ if __name__ == '__main__':
56
+ import time
57
+
58
+
59
+ def func_(i):
60
+ if i in [2, 3, 7]:
61
+ time.sleep(300)
62
+ else:
63
+ time.sleep(0.5)
64
+ return i * 2
65
+
66
+
67
+ from kevin_toolbox.computer_science.data_structure import Executor
68
+
69
+ print(wrapper_with_timeout_2(Executor(func=func_, args=(2,)), timeout=1))
70
+ print(wrapper_with_timeout_2(Executor(func=func_, args=(1,)), timeout=1))
71
+
72
+ execution_orders = []
73
+ completion_orders = []
74
+ print(wrapper_with_timeout_2(Executor(func=func_, args=(2,)), timeout=1, _execution_orders=execution_orders,
75
+ _completion_orders=completion_orders))
76
+ print(execution_orders, completion_orders)
@@ -83,7 +83,7 @@ class Executor:
83
83
  # 校验参数
84
84
  # func
85
85
  assert paras["func"] is None or callable(paras["func"]), \
86
- f"func should be callable, but get a {type(func)}"
86
+ f'func should be callable, but get a {type(paras["func"])}'
87
87
  # args
88
88
  assert isinstance(paras["args"], (list, tuple,)) and isinstance(paras["f_args"], (list, tuple,))
89
89
  for i, f in enumerate(paras["f_args"]):
@@ -93,7 +93,7 @@ class Executor:
93
93
  assert isinstance(paras["kwargs"], (dict,)) and isinstance(paras["f_kwargs"], (dict,))
94
94
  for k, v in paras["f_kwargs"].items():
95
95
  assert callable(v) and isinstance(k, (str,)), \
96
- f"item {key} in f_kwargs should be (str, callable) pairs, but get a ({type(key)}, {type(v)})"
96
+ f"item {k} in f_kwargs should be (str, callable) pairs, but get a ({type(k)}, {type(v)})"
97
97
 
98
98
  # update paras
99
99
  self.paras = paras
@@ -4,8 +4,13 @@ import copy
4
4
  from kevin_toolbox.data_flow.file.json_.converter import integrate, escape_tuple_and_set, escape_non_str_dict_key
5
5
  from kevin_toolbox.nested_dict_list import traverse
6
6
 
7
+ format_s = {
8
+ "pretty_printed": dict(indent=4, ensure_ascii=False, sort_keys=False),
9
+ "minified": dict(indent=None, ensure_ascii=False, sort_keys=False, separators=(',', ':'))
10
+ }
7
11
 
8
- def write_json(content, file_path, sort_keys=False, converters=None, b_use_suggested_converter=False):
12
+
13
+ def write_json(content, file_path, converters=None, b_use_suggested_converter=False, output_format="pretty_printed"):
9
14
  """
10
15
  写入 json file
11
16
 
@@ -13,7 +18,6 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
13
18
  content: 待写入内容
14
19
  file_path: <path or None> 写入路径
15
20
  当设置为 None 时,将直接把(经converters处理后的)待写入内容作为结果返回,而不进行实际的写入
16
- sort_keys
17
21
  converters: <list of converters> 对写入内容中每个节点的处理方式
18
22
  转换器 converter 应该是一个形如 def(x): ... ; return x 的函数,具体可以参考
19
23
  json_.converter 中已实现的转换器
@@ -22,8 +26,27 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
22
26
  可以避免因 json 的读取/写入而丢失部分信息。
23
27
  默认为 False。
24
28
  注意:当 converters 非 None,此参数失效,以 converters 中的具体设置为准
29
+ output_format: <str/dict/tuple> json的输出格式
30
+ 对于 str 目前支持以下取值:
31
+ - "pretty_printed": 通过添加大量的空格和换行符来格式化输出,使输出更易读
32
+ - "minified": 删除所有空格和换行符,使输出更紧凑
33
+ 默认为 pretty_printed。
34
+ 对于 dict,将允许使用更加细致的格式设定,比如:
35
+ {"indent": 2, ensure_ascii=True}
36
+ 如果需要基于已有格式进行微调可以使用以下方式:
37
+ ("pretty_printed", {"indent": 2, ensure_ascii=True})
25
38
  """
39
+ global format_s
26
40
  assert isinstance(file_path, (str, type(None)))
41
+ if isinstance(output_format, (str,)):
42
+ output_format = format_s[output_format]
43
+ elif isinstance(output_format, (tuple,)):
44
+ output_format = format_s[output_format[0]]
45
+ output_format.update(output_format[1])
46
+ elif isinstance(output_format, (dict,)):
47
+ pass
48
+ else:
49
+ raise ValueError(f'Unsupported output_format: {output_format}.')
27
50
 
28
51
  if converters is None and b_use_suggested_converter:
29
52
  converters = [escape_tuple_and_set, escape_non_str_dict_key]
@@ -35,7 +58,7 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
35
58
  converter=lambda _, x: converter(x),
36
59
  b_traverse_matched_element=True)[0]
37
60
 
38
- content = json.dumps(content, indent=4, ensure_ascii=False, sort_keys=sort_keys)
61
+ content = json.dumps(content, **output_format)
39
62
 
40
63
  if file_path is not None:
41
64
  file_path = os.path.abspath(os.path.expanduser(file_path))
@@ -44,3 +67,13 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
44
67
  f.write(content)
45
68
  else:
46
69
  return content
70
+
71
+
72
+ if __name__ == "__main__":
73
+ a = {'rect': {'l:eft': [0, 1, 2], 'top': 67, 'right': 286, 'bottom': 332}}
74
+ res_0 = write_json(a, file_path=None, output_format="pretty_printed")
75
+ print(res_0)
76
+ print(len(res_0))
77
+ res_1 = write_json(a, file_path=None, output_format="minified")
78
+ print(res_1)
79
+ print(len(res_1))
@@ -35,8 +35,8 @@ class Json_(Backend_Base):
35
35
  """
36
36
  if id(var) != self.w_cache_s["id_"]:
37
37
  try:
38
- self.w_cache_s["content"] = json_.write(content=var, file_path=None, sort_keys=False,
39
- b_use_suggested_converter=True)
38
+ self.w_cache_s["content"] = json_.write(content=var, file_path=None, b_use_suggested_converter=True,
39
+ output_format=kwargs.get("output_format", "pretty_printed"))
40
40
  except:
41
41
  self.w_cache_s["content"], self.w_cache_s["id_"] = None, None
42
42
  self.w_cache_s["able"] = False
@@ -5,7 +5,7 @@ from kevin_toolbox.patches.for_os.path import replace_illegal_chars
5
5
  from kevin_toolbox.patches.for_matplotlib.color import generate_color_list
6
6
 
7
7
 
8
- def plot_lines(data_s, title, x_name, output_dir=None, **kwargs):
8
+ def plot_lines(data_s, title, x_name, x_ticklabels_name=None, output_dir=None, **kwargs):
9
9
  data_s = copy.copy(data_s)
10
10
  line_nums = len(data_s) - 1
11
11
  paras = {
@@ -23,6 +23,10 @@ def plot_lines(data_s, title, x_name, output_dir=None, **kwargs):
23
23
  plt.clf()
24
24
  #
25
25
  x_all_ls = data_s.pop(x_name)
26
+ if x_ticklabels_name is not None:
27
+ x_ticklabels = data_s.pop(x_ticklabels_name)
28
+ assert len(x_all_ls) == len(x_ticklabels)
29
+ plt.xticks(x_all_ls, x_ticklabels)
26
30
  data_s, temp = dict(), data_s
27
31
  for k, v_ls in temp.items():
28
32
  y_ls, x_ls = [], []