kevin-toolbox-dev 1.3.1__tar.gz → 1.3.3__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 (320) hide show
  1. kevin-toolbox-dev-1.3.3/PKG-INFO +70 -0
  2. kevin-toolbox-dev-1.3.3/README.md +49 -0
  3. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/__init__.py +2 -2
  4. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +1 -0
  5. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +2 -0
  6. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +89 -0
  7. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +36 -0
  8. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +218 -0
  9. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +5 -0
  10. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +21 -0
  11. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +80 -0
  12. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +43 -0
  13. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +26 -0
  14. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +45 -0
  15. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +37 -0
  16. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +197 -0
  17. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +129 -0
  18. kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +28 -0
  19. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/registration/registry.py +38 -16
  20. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/core/cache/__init__.py +1 -1
  21. kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +229 -0
  22. kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +34 -0
  23. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +44 -9
  24. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/core/reader/unified_reader.py +2 -2
  25. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +4 -5
  26. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +2 -2
  27. kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +23 -0
  28. kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple.py → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +7 -5
  29. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/read_json.py +3 -3
  30. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/write_json.py +3 -3
  31. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +6 -5
  32. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/read.py +4 -2
  33. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +15 -3
  34. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/markdown/generate_table.py +2 -2
  35. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/utils/__init__.py +1 -1
  36. kevin-toolbox-dev-1.3.1/kevin_toolbox/math/utils/spilt_integer_most_evenly.py → kevin-toolbox-dev-1.3.3/kevin_toolbox/math/utils/split_integer_most_evenly.py +2 -2
  37. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/get_nodes.py +9 -4
  38. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +1 -1
  39. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +1 -1
  40. kevin-toolbox-dev-1.3.3/kevin_toolbox/nested_dict_list/set_default.py +56 -0
  41. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/__init__.py +0 -0
  42. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_matplotlib/__init__.py +1 -0
  43. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_matplotlib/generate_color_list.py +33 -0
  44. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +1 -0
  45. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/linalg/entropy.py +26 -0
  46. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/random/__init__.py +3 -0
  47. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/random/get_rng.py +64 -0
  48. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +129 -0
  49. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +89 -0
  50. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_numpy/random/variable.py +10 -0
  51. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +10 -2
  52. kevin-toolbox-dev-1.3.3/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  53. kevin-toolbox-dev-1.3.3/kevin_toolbox_dev.egg-info/PKG-INFO +70 -0
  54. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox_dev.egg-info/SOURCES.txt +28 -3
  55. kevin-toolbox-dev-1.3.1/PKG-INFO +0 -86
  56. kevin-toolbox-dev-1.3.1/README.md +0 -68
  57. kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -361
  58. kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/file/json_/converter/escape_tuple.py +0 -20
  59. kevin-toolbox-dev-1.3.1/kevin_toolbox/nested_dict_list/set_default.py +0 -40
  60. kevin-toolbox-dev-1.3.1/kevin_toolbox_dev.egg-info/PKG-INFO +0 -86
  61. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/__init__.py +0 -0
  62. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  63. {kevin-toolbox-dev-1.3.1/kevin_toolbox/computer_science/algorithm/combinatorial_optimization → kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/cache_manager}/test/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  65. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  66. {kevin-toolbox-dev-1.3.1/kevin_toolbox/computer_science/algorithm/execution_graph → kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test}/__init__.py +0 -0
  67. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  68. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  69. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  70. {kevin-toolbox-dev-1.3.1/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/execution_graph}/__init__.py +0 -0
  71. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  72. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  73. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  74. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  75. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  76. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  77. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  78. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  79. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  80. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  81. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  82. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  83. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  84. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  85. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  86. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  87. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  88. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  89. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  90. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  91. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  92. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  93. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  95. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  96. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  97. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  98. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  99. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  100. {kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow → kevin-toolbox-dev-1.3.3/kevin_toolbox/computer_science/algorithm/utils}/__init__.py +0 -0
  101. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  102. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  103. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/dangerous/__init__.py +0 -0
  104. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  105. {kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/core → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow}/__init__.py +0 -0
  106. {kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/file/kevin_notation/test → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/core}/__init__.py +0 -0
  107. {kevin-toolbox-dev-1.3.1/kevin_toolbox/data_flow/file/kevin_notation/test/test_data → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/core/cache/test}/__init__.py +0 -0
  108. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  109. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  110. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  111. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  112. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  113. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  114. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  115. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  116. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  117. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  118. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  119. {kevin-toolbox-dev-1.3.1/kevin_toolbox/developing/numerical_characteristics → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/file/kevin_notation/test}/__init__.py +0 -0
  120. {kevin-toolbox-dev-1.3.1/kevin_toolbox/env_info/test → kevin-toolbox-dev-1.3.3/kevin_toolbox/data_flow/file/kevin_notation/test/test_data}/__init__.py +0 -0
  121. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  122. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  123. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  124. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  125. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -0
  126. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -0
  127. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  128. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/__init__.py +0 -0
  129. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  130. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  131. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  132. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  133. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  134. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  135. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  136. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  137. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  138. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  139. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  140. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  141. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  142. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  143. {kevin-toolbox-dev-1.3.1/kevin_toolbox/geometry → kevin-toolbox-dev-1.3.3/kevin_toolbox/developing/numerical_characteristics}/__init__.py +0 -0
  144. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  145. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  146. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  147. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  148. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  149. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  150. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/developing/test.py +0 -0
  151. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/__init__.py +0 -0
  152. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  153. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  154. {kevin-toolbox-dev-1.3.1/kevin_toolbox/geometry/for_boxes/__old_version → kevin-toolbox-dev-1.3.3/kevin_toolbox/env_info/test}/__init__.py +0 -0
  155. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/test/test_version.py +0 -0
  156. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/version/__init__.py +0 -0
  157. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  158. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  159. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  160. {kevin-toolbox-dev-1.3.1/kevin_toolbox/machine_learning → kevin-toolbox-dev-1.3.3/kevin_toolbox/geometry}/__init__.py +0 -0
  161. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  162. {kevin-toolbox-dev-1.3.1/kevin_toolbox/machine_learning/dataset/face → kevin-toolbox-dev-1.3.3/kevin_toolbox/geometry/for_boxes/__old_version}/__init__.py +0 -0
  163. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  164. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  165. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  166. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  167. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  168. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  169. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  170. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  171. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  172. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  173. {kevin-toolbox-dev-1.3.1/kevin_toolbox/machine_learning/statistician → kevin-toolbox-dev-1.3.3/kevin_toolbox/machine_learning}/__init__.py +0 -0
  174. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  175. {kevin-toolbox-dev-1.3.1/kevin_toolbox/math → kevin-toolbox-dev-1.3.3/kevin_toolbox/machine_learning/dataset/face}/__init__.py +0 -0
  176. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  177. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  178. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  179. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  180. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  181. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  182. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  183. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  184. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  186. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  187. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  188. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  189. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  190. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  191. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  192. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  193. {kevin-toolbox-dev-1.3.1/kevin_toolbox/math/dimension → kevin-toolbox-dev-1.3.3/kevin_toolbox/machine_learning/statistician}/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  195. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  196. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  197. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  198. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  199. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  200. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  201. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  202. {kevin-toolbox-dev-1.3.1/kevin_toolbox/math/number_theory/test → kevin-toolbox-dev-1.3.3/kevin_toolbox/math}/__init__.py +0 -0
  203. {kevin-toolbox-dev-1.3.1/kevin_toolbox/math/transform → kevin-toolbox-dev-1.3.3/kevin_toolbox/math/dimension}/__init__.py +0 -0
  204. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  205. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  206. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  207. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  208. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  209. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  210. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  211. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  212. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  213. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  214. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  215. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  216. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  217. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  218. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  219. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  220. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  221. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  222. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  223. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  224. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  225. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/cache.py +0 -0
  226. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  227. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  228. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  229. {kevin-toolbox-dev-1.3.1/kevin_toolbox/patches → kevin-toolbox-dev-1.3.3/kevin_toolbox/math/number_theory/test}/__init__.py +0 -0
  230. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  231. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  232. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  233. {kevin-toolbox-dev-1.3.1/kevin_toolbox/patches/for_torch → kevin-toolbox-dev-1.3.3/kevin_toolbox/math/transform}/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  235. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  236. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  237. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  238. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  239. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  240. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  241. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  242. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  243. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  244. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  245. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  246. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  247. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  248. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  249. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  250. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  251. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  252. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  253. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  254. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  255. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  256. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  257. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  258. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  259. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  260. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  261. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  262. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  263. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
  264. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  265. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
  266. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  267. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  268. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  269. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  270. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  271. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  272. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  273. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  274. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  275. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  276. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  277. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  278. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  279. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  280. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  281. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  282. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  283. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  284. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  285. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  286. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  287. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  288. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  289. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  290. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  291. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  292. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  293. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  294. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  295. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_os/pack.py +0 -0
  296. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_os/remove.py +0 -0
  297. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  298. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_os/walk.py +0 -0
  299. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  300. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  301. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  302. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  303. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  304. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  305. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  306. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  307. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  308. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  309. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  310. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  311. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  312. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  313. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  314. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  315. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  316. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  317. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  318. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/pyproject.toml +0 -0
  319. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/setup.cfg +0 -0
  320. {kevin-toolbox-dev-1.3.1 → kevin-toolbox-dev-1.3.3}/setup.py +0 -0
@@ -0,0 +1,70 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.3.3
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.3 (2024-04-01)【bug fix】【new feature】
50
+ - math.utils
51
+ - 【bug fix】更正拼写错误,将原有的 spilt_integer_most_evenly() 中的 "spilt" 改正为 "split",新的函数名为 split_integer_most_evenly
52
+
53
+ - patches.for_numpy.random
54
+ - 【bug fix】modify get_rng(),改进以避免遇到 rng 中不存在的函数时报错。
55
+
56
+ - data_flow.file
57
+ - json_
58
+ - 【new feature】将 escape_tuple() 改成 escape_tuple_and_set(),新增对 set 进行处理。
59
+ - 【new feature】将 unescape_tuple() 改成 unescape_tuple_and_set()。
60
+
61
+ - core.reader
62
+ - 【new feature】为 File_Iterative_Reader 新增了 file_obj 参数,支持直接输入文件对象。
63
+
64
+ - kevin_notation
65
+ - 【new feature】根据 File_Iterative_Reader 的修改,为 Kevin_Notation_Reader 和 read() 对应增加 file_obj 参数,以支持直接输入文件对象。
66
+ - 补充了对应的测试用例。
67
+
68
+
69
+
70
+
@@ -0,0 +1,49 @@
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.3 (2024-04-01)【bug fix】【new feature】
31
+ - math.utils
32
+ - 【bug fix】更正拼写错误,将原有的 spilt_integer_most_evenly() 中的 "spilt" 改正为 "split",新的函数名为 split_integer_most_evenly
33
+
34
+ - patches.for_numpy.random
35
+ - 【bug fix】modify get_rng(),改进以避免遇到 rng 中不存在的函数时报错。
36
+
37
+ - data_flow.file
38
+ - json_
39
+ - 【new feature】将 escape_tuple() 改成 escape_tuple_and_set(),新增对 set 进行处理。
40
+ - 【new feature】将 unescape_tuple() 改成 unescape_tuple_and_set()。
41
+
42
+ - core.reader
43
+ - 【new feature】为 File_Iterative_Reader 新增了 file_obj 参数,支持直接输入文件对象。
44
+
45
+ - kevin_notation
46
+ - 【new feature】根据 File_Iterative_Reader 的修改,为 Kevin_Notation_Reader 和 read() 对应增加 file_obj 参数,以支持直接输入文件对象。
47
+ - 补充了对应的测试用例。
48
+
49
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.3.1"
1
+ __version__ = "1.3.3"
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 1719996516 --verbose 0'
15
+ f'--expiration_timestamp 1727520805 --verbose 0'
16
16
  )
@@ -0,0 +1 @@
1
+ from .cache_manager import Cache_Manager
@@ -0,0 +1,2 @@
1
+ from .cache_base import Cache_Base
2
+ from .memo_cache import Memo_Cache
@@ -0,0 +1,89 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class Cache_Base(ABC):
5
+ """
6
+ 缓存结构的基类
7
+
8
+ 要求实现:
9
+ - 读取 _read_freely()
10
+ - 写入 _write_freely()
11
+ - 清除单个条目 _remove_freely()
12
+ - 判断是否命中 has()
13
+ - 获取缓存已占空间 len()
14
+ - 清空所有内容 clear()
15
+ 等方法。
16
+
17
+ 对外提供:
18
+ - 只读取已有条目 read()
19
+ - 只写入不存在条目 write()
20
+ - 只清除已存在的单个条目 remove()
21
+ - 判断是否命中 has()
22
+ - 获取缓存已占空间 len()
23
+ - 清空所有内容 clear()
24
+ 等接口。
25
+ """
26
+
27
+ def read(self, key):
28
+ """只允许读取已存在的条目"""
29
+ if self.has(key=key):
30
+ return self._read_freely(key=key)
31
+ else:
32
+ raise KeyError(f"key {key} not found")
33
+
34
+ def write(self, key, value):
35
+ """只允许写入不已存在的条目"""
36
+ if not self.has(key=key):
37
+ self._write_freely(key=key, value=value)
38
+ else:
39
+ raise KeyError(f"key {key} already exists")
40
+
41
+ def remove(self, key):
42
+ """只允许删除已存在的条目"""
43
+ if self.has(key=key):
44
+ self._remove_freely(key=key)
45
+ else:
46
+ raise KeyError(f"key {key} not found")
47
+
48
+ @abstractmethod
49
+ def _read_freely(self, key):
50
+ return self.read(key=key)
51
+
52
+ @abstractmethod
53
+ def _write_freely(self, key, value):
54
+ pass
55
+
56
+ @abstractmethod
57
+ def _remove_freely(self, key):
58
+ pass
59
+
60
+ @abstractmethod
61
+ def has(self, key) -> bool:
62
+ pass
63
+
64
+ @abstractmethod
65
+ def len(self) -> int:
66
+ pass
67
+
68
+ @abstractmethod
69
+ def clear(self):
70
+ pass
71
+
72
+ def __getitem__(self, key):
73
+ # self[key]
74
+ return self.read(key=key)
75
+
76
+ def __setitem__(self, key, value):
77
+ # self[key] = value
78
+ self.write(key=key, value=value)
79
+
80
+ def __contains__(self, key):
81
+ # if key in self:
82
+ # return True
83
+ # else:
84
+ # return False
85
+ return self.has(key=key)
86
+
87
+ def __len__(self):
88
+ # len(self)
89
+ return self.len()
@@ -0,0 +1,36 @@
1
+ from kevin_toolbox.computer_science.algorithm.cache_manager.cache import Cache_Base
2
+ from kevin_toolbox.computer_science.algorithm.cache_manager.variable import CACHE_BUILDER_REGISTRY
3
+
4
+
5
+ @CACHE_BUILDER_REGISTRY.register()
6
+ class Memo_Cache(Cache_Base):
7
+ """
8
+ 基于内存的缓存结构
9
+ """
10
+ name = ":in_memory:Memo_Cache"
11
+
12
+ def __init__(self, **kwargs):
13
+ self.cache_s = dict()
14
+
15
+ def _read_freely(self, key):
16
+ return self.cache_s[key]
17
+
18
+ def _write_freely(self, key, value):
19
+ self.cache_s[key] = value
20
+
21
+ def _remove_freely(self, key):
22
+ self.cache_s.pop(key)
23
+
24
+ def has(self, key):
25
+ return key in self.cache_s
26
+
27
+ def len(self):
28
+ return len(self.cache_s)
29
+
30
+ def clear(self):
31
+ self.cache_s.clear()
32
+
33
+
34
+ # 添加其他别名
35
+ for name in [":in_memory:Memo", ":in_memory:MC", ":in_memory:memory"]:
36
+ CACHE_BUILDER_REGISTRY.add(obj=Memo_Cache, name=name, b_force=False, b_execute_now=False)
@@ -0,0 +1,218 @@
1
+ import time
2
+ from .strategy import Strategy_Base
3
+ from .cache import Cache_Base
4
+ from .variable import CACHE_STRATEGY_REGISTRY, CACHE_BUILDER_REGISTRY
5
+
6
+
7
+ class Cache_Manager:
8
+ """
9
+ 缓存管理器
10
+
11
+ 提供以下接口:
12
+ - 添加条目 add(key, value, b_allow_overwrite)
13
+ - 获取条目 get(key, b_add_if_not_found, default_factory, default)
14
+ - 删除并返回条目 pop(key)
15
+ - 判断是否有该条目 has()
16
+ - 清空所有内容 clear()
17
+
18
+ 并支持以下用法:
19
+ 通过 len(.) 获取缓存大小,通过 in 操作符判断是否有某个条目
20
+
21
+
22
+ 相关变量:
23
+ self.cache: 缓存
24
+ self.metadata_s:缓存的属性数据
25
+ 包含以下字段,各字段将自动更新
26
+ 例如:{
27
+ <key>: {
28
+ "last_time": xxx, # 最近读取时间
29
+ "initial_time": xxx, # 最初读取时间
30
+ "survival_time": xxx, # survival_time:=last_time-initial_time
31
+ "counts": xxx, # 读取次数
32
+ },
33
+ ...
34
+ }
35
+ self.strategy: 缓存更新策略
36
+ """
37
+
38
+ def __init__(self, **kwargs):
39
+ """
40
+ 参数:
41
+ upper_bound: <int> 当缓存容量超过该值时,触发重整(抛弃部分条目以将容量降低到 refactor_size 指定的大小)
42
+ refactor_size: <int/float> 内存重整后的容量大小
43
+ 当设置为 int 时,表示具体容量的大小;
44
+ 当设置为 float 时表示占 upper_bound 的比例
45
+ 默认为 0.5
46
+ strategy: <str/dict/Strategy_Base> 管理策略
47
+ cache: <str/dict/Cache_Base> 缓存种类
48
+ """
49
+ # 默认参数
50
+ paras = {
51
+ "upper_bound": None,
52
+ "refactor_size": 0.5,
53
+ "strategy": ":by_last_time:LRU",
54
+ "cache": ":in_memory:Memo",
55
+ }
56
+
57
+ # 获取参数
58
+ paras.update(kwargs)
59
+
60
+ # 校验参数
61
+ assert isinstance(paras["upper_bound"], int) and paras["upper_bound"] > 0, \
62
+ "upper_bound must be a positive integer"
63
+ if isinstance(paras["refactor_size"], float):
64
+ paras["refactor_size"] = int(paras["refactor_size"] * paras["upper_bound"])
65
+ assert 0 <= paras["refactor_size"] <= paras["upper_bound"], \
66
+ "refactor_size must be less than upper_bound and bigger than zero"
67
+ # strategy
68
+ assert isinstance(paras["strategy"], (str, dict, Strategy_Base)), \
69
+ "strategy must be a string, dict of paras or a Strategy_Base object"
70
+ if isinstance(paras["strategy"], str):
71
+ strategy = CACHE_STRATEGY_REGISTRY.get(name=paras["strategy"])()
72
+ elif isinstance(paras["strategy"], dict):
73
+ strategy = CACHE_STRATEGY_REGISTRY.get(name=paras["strategy"]["name"])(
74
+ **paras["strategy"].get("paras", dict()))
75
+ else:
76
+ strategy = paras["strategy"]
77
+ # cache
78
+ assert isinstance(paras["cache"], (str, dict, Cache_Base)), \
79
+ "cache must be a string, dict of paras or a Cache_Base object"
80
+ if isinstance(paras["cache"], str):
81
+ cache = CACHE_BUILDER_REGISTRY.get(name=paras["cache"])()
82
+ elif isinstance(paras["cache"], dict):
83
+ cache = CACHE_BUILDER_REGISTRY.get(name=paras["cache"]["name"])(**paras["cache"].get("paras", dict()))
84
+ else:
85
+ cache = paras["cache"]
86
+
87
+ self.paras = paras
88
+ self.strategy = strategy # type:Strategy_Base
89
+ self.cache = cache # type:Cache_Base
90
+ self.metadata_s = dict() # 保存条目的相关信息
91
+
92
+ def add(self, key, value, b_allow_overwrite=True):
93
+ """
94
+ 以 key 为查询键,将 value 添加到缓存中
95
+
96
+ 参数:
97
+ key:
98
+ value:
99
+ b_allow_overwrite: <boolean> 是否允许覆写缓存中已有的条目
100
+ 默认为 True
101
+ """
102
+ # 判断是否需要进行覆写
103
+ if self.cache.has(key=key):
104
+ if id(value) != id(self.cache.read(key=key)):
105
+ if b_allow_overwrite:
106
+ self.__remove_of_cache(key=key)
107
+ else:
108
+ raise KeyError(f'key: {key} already exists, modification of existing entries is prohibited')
109
+ else:
110
+ return
111
+ # 记录到缓存
112
+ self.__write_of_cache(key=key, value=value)
113
+
114
+ def __write_of_cache(self, key, value):
115
+ """
116
+ 向缓存中新增不存在的条目
117
+ """
118
+ temp = time.time()
119
+ metadata = {
120
+ "initial_time": temp, # 最初读取时间(加入缓存的时间)
121
+ "last_time": temp, # 最近读取时间
122
+ "survival_time": 0.0, # 最后一次读取与加入缓存时间之差,last_time - initial_time
123
+ "counts": 0, # 读取次数
124
+ }
125
+ #
126
+ self.cache.write(key=key, value=value)
127
+ self.metadata_s[key] = metadata
128
+ # 通知策略管理器
129
+ self.strategy.notified_by_write_of_cache(key=key, value=value, metadata=metadata)
130
+
131
+ # 判断是否重构
132
+ if len(self.cache) <= self.paras["upper_bound"]:
133
+ return
134
+ # 从策略管理器获取建议
135
+ # 根据建议删除条目
136
+ suggest_keys = self.strategy.suggest(refactor_size=self.paras["refactor_size"])
137
+ assert len(suggest_keys) == len(self.cache) - self.paras["refactor_size"], \
138
+ f'expect {len(self.cache) - self.paras["refactor_size"]} deletion suggestions, but got {len(suggest_keys)}'
139
+ for key in suggest_keys:
140
+ self.__remove_of_cache(key=key)
141
+
142
+ def __remove_of_cache(self, key):
143
+ """
144
+ 从缓存中删除存在的条目
145
+ """
146
+ self.cache.remove(key=key)
147
+ metadata = self.metadata_s.pop(key)
148
+ # 通知策略管理器
149
+ self.strategy.notified_by_remove_of_cache(key=key, metadata=metadata)
150
+
151
+ def get(self, key, b_add_if_not_found=False, default_factory=None, **kwargs):
152
+ """
153
+ 获取 key 对应的值
154
+
155
+ 参数:
156
+ key: <hashable>
157
+ default: 默认值
158
+ 当 key 在缓存中不存在时返回
159
+ default_factory: <callable> 用于产生默认值的函数
160
+ 当 key 在缓存中不存在时返回该函数的结果
161
+ 使用该参数相对于 default 能延迟默认值的产生(如果不需要用到默认值就不生成),提高效率
162
+ 注意!!上面两个参数同时指定时,将以前者为准。
163
+ b_add_if_not_found: <boolean> 当 key 在缓存中不存在时,是否添加到缓存中
164
+ 默认为 False
165
+ """
166
+ if self.cache.has(key=key):
167
+ value = self.__read_of_cache(key=key)
168
+ elif "default" in kwargs or callable(default_factory):
169
+ value = kwargs["default"] if "default" in kwargs else default_factory()
170
+ if b_add_if_not_found:
171
+ self.__write_of_cache(key=key, value=value)
172
+ else:
173
+ raise KeyError(key)
174
+ return value
175
+
176
+ def pop(self, key):
177
+ """
178
+ 从缓存中删除 key 对应的条目,并返回该条目的值
179
+ """
180
+ if self.cache.has(key=key):
181
+ value = self.__read_of_cache(key=key)
182
+ self.__remove_of_cache(key=key)
183
+ else:
184
+ raise KeyError(key)
185
+ return value
186
+
187
+ def __read_of_cache(self, key):
188
+ """
189
+ 读取缓存中 已经存在的 条目
190
+ """
191
+ value = self.cache.read(key=key)
192
+ metadata = self.metadata_s[key]
193
+ # 更新 metadata
194
+ metadata["last_time"] = time.time()
195
+ metadata["survival_time"] = metadata["last_time"] - metadata["initial_time"]
196
+ metadata["counts"] += 1
197
+ # 通知策略管理器
198
+ self.strategy.notified_by_read_of_cache(key=key, value=value, metadata=metadata)
199
+
200
+ return value
201
+
202
+ def has(self, key):
203
+ """
204
+ 判断 key 是否在缓存中
205
+ 注意!!不会更新 metadata
206
+ """
207
+ return self.cache.has(key=key)
208
+
209
+ def clear(self):
210
+ self.cache.clear()
211
+ self.metadata_s.clear()
212
+ self.strategy.notified_by_clear_of_cache()
213
+
214
+ def __len__(self):
215
+ return len(self.cache)
216
+
217
+ def __contains__(self, key):
218
+ return self.has(key)
@@ -0,0 +1,5 @@
1
+ from .strategy_base import Strategy_Base
2
+ from .lru_strategy import LRU_Strategy
3
+ from .lfu_strategy import LFU_Strategy
4
+ from .fifo_strategy import FIFO_Strategy
5
+ from .lst_strategy import LST_Strategy
@@ -0,0 +1,21 @@
1
+ from collections import OrderedDict
2
+ from kevin_toolbox.computer_science.algorithm.cache_manager.strategy import LRU_Strategy
3
+ from kevin_toolbox.computer_science.algorithm.cache_manager.variable import CACHE_STRATEGY_REGISTRY
4
+
5
+
6
+ @CACHE_STRATEGY_REGISTRY.register()
7
+ class FIFO_Strategy(LRU_Strategy):
8
+ """
9
+ 删除最后一次访问时间最久远的部分
10
+ drop items with smaller initial_time
11
+ """
12
+
13
+ name = ":by_initial_time:FIFO_Strategy"
14
+
15
+ def notified_by_read_of_cache(self, key, value, metadata):
16
+ pass
17
+
18
+
19
+ # 添加其他别名
20
+ for name in [":by_initial_time:FIFO", ":by_initial_time:First_In_First_Out", ":by_initial_time:drop_smaller"]:
21
+ CACHE_STRATEGY_REGISTRY.add(obj=FIFO_Strategy, name=name, b_force=False, b_execute_now=False)
@@ -0,0 +1,80 @@
1
+ import heapq
2
+ from kevin_toolbox.computer_science.algorithm.cache_manager.strategy import Strategy_Base
3
+ from kevin_toolbox.computer_science.algorithm.cache_manager.variable import CACHE_STRATEGY_REGISTRY
4
+
5
+
6
+ class Score_to_Key:
7
+ def __init__(self, score, key):
8
+ self.score = score
9
+ self.key = key
10
+
11
+ def __lt__(self, other):
12
+ return self.score < other.score
13
+
14
+ def __eq__(self, other):
15
+ return self.score == other.score
16
+
17
+ def __gt__(self, other):
18
+ return self.score > other.score
19
+
20
+ def __repr__(self):
21
+ return f"Counts_to_Key(key:{self.key}, score:{self.score})"
22
+
23
+
24
+ @CACHE_STRATEGY_REGISTRY.register()
25
+ class LFU_Strategy(Strategy_Base):
26
+ """
27
+ 删除访问频率最低的部分
28
+ drop items with smaller counts
29
+ """
30
+
31
+ name = ":by_counts:LFU_Strategy"
32
+
33
+ def __init__(self):
34
+ self.order_ls = list() # 最小堆
35
+ self.record_s = dict()
36
+
37
+ def notified_by_write_of_cache(self, key, value, metadata):
38
+ assert (metadata is None or metadata["counts"] == 0) and key not in self.record_s
39
+ self.record_s[key] = Score_to_Key(score=0, key=key)
40
+ heapq.heappush(self.order_ls, self.record_s[key])
41
+
42
+ def notified_by_read_of_cache(self, key, value, metadata):
43
+ assert metadata is None or metadata["counts"] == self.record_s[key].score + 1
44
+ self.record_s[key].score += 1
45
+
46
+ def notified_by_remove_of_cache(self, key, metadata):
47
+ temp = self.record_s.pop(key)
48
+ temp.score = -1
49
+ heapq.heapify(self.order_ls)
50
+ temp = heapq.heappop(self.order_ls)
51
+ assert temp.key == key
52
+
53
+ def notified_by_clear_of_cache(self):
54
+ self.record_s.clear()
55
+ self.order_ls.clear()
56
+
57
+ def suggest(self, refactor_size):
58
+ heapq.heapify(self.order_ls)
59
+ res = []
60
+ temp_ls = []
61
+ for _ in range(len(self.order_ls) - refactor_size):
62
+ temp = heapq.heappop(self.order_ls)
63
+ res.append(temp.key)
64
+ temp_ls.append(temp)
65
+ self.order_ls = temp_ls + self.order_ls
66
+ return res
67
+
68
+ def clear(self):
69
+ self.notified_by_clear_of_cache()
70
+
71
+
72
+ # 添加其他别名
73
+ for name in [":by_counts:LFU", ":by_counts:Least_Frequently_Used", ":by_counts:drop_smaller"]:
74
+ CACHE_STRATEGY_REGISTRY.add(obj=LFU_Strategy, name=name, b_force=False, b_execute_now=False)
75
+
76
+ if __name__ == "__main__":
77
+ max_heap = []
78
+ for i, j in [(-5, "a"), (-2, "adafd"), (-7, "ad"), (-1, "a"), (-10, "fasfde")]:
79
+ heapq.heappush(max_heap, Score_to_Key(i, j))
80
+ print(max_heap)
@@ -0,0 +1,43 @@
1
+ from collections import OrderedDict
2
+ from kevin_toolbox.computer_science.algorithm.cache_manager.strategy import Strategy_Base
3
+ from kevin_toolbox.computer_science.algorithm.cache_manager.variable import CACHE_STRATEGY_REGISTRY
4
+
5
+
6
+ @CACHE_STRATEGY_REGISTRY.register()
7
+ class LRU_Strategy(Strategy_Base):
8
+ """
9
+ 删除最后一次访问时间最久远的部分
10
+ drop items with smaller last_time
11
+ """
12
+
13
+ name = ":by_last_time:LRU_Strategy"
14
+
15
+ def __init__(self):
16
+ self.record_s = OrderedDict()
17
+
18
+ def notified_by_write_of_cache(self, key, value, metadata):
19
+ self.record_s[key] = None
20
+
21
+ def notified_by_read_of_cache(self, key, value, metadata):
22
+ self.record_s.pop(key)
23
+ self.record_s[key] = None
24
+
25
+ def notified_by_remove_of_cache(self, key, metadata):
26
+ self.record_s.pop(key)
27
+
28
+ def notified_by_clear_of_cache(self):
29
+ self.record_s.clear()
30
+
31
+ def suggest(self, refactor_size):
32
+ if refactor_size == 0:
33
+ return list(self.record_s.keys())
34
+ else:
35
+ return list(self.record_s.keys())[:-refactor_size]
36
+
37
+ def clear(self):
38
+ self.record_s.clear()
39
+
40
+
41
+ # 添加其他别名
42
+ for name in [":by_last_time:LRU", ":by_last_time:Least_Recently_Used", ":by_last_time:drop_smaller"]:
43
+ CACHE_STRATEGY_REGISTRY.add(obj=LRU_Strategy, name=name, b_force=False, b_execute_now=False)
@@ -0,0 +1,26 @@
1
+ import heapq
2
+ from kevin_toolbox.computer_science.algorithm.cache_manager.strategy import Strategy_Base, LFU_Strategy
3
+ from kevin_toolbox.computer_science.algorithm.cache_manager.strategy.lfu_strategy import Score_to_Key
4
+ from kevin_toolbox.computer_science.algorithm.cache_manager.variable import CACHE_STRATEGY_REGISTRY
5
+
6
+
7
+ @CACHE_STRATEGY_REGISTRY.register()
8
+ class LST_Strategy(LFU_Strategy):
9
+ """
10
+ 删除访问频率最低的部分
11
+ drop items with smaller survival_time
12
+ """
13
+
14
+ name = ":by_survival_time:LST_Strategy"
15
+
16
+ def notified_by_write_of_cache(self, key, value, metadata):
17
+ self.record_s[key] = Score_to_Key(score=metadata["survival_time"], key=key)
18
+ heapq.heappush(self.order_ls, self.record_s[key])
19
+
20
+ def notified_by_read_of_cache(self, key, value, metadata):
21
+ self.record_s[key].score = metadata["survival_time"]
22
+
23
+
24
+ # 添加其他别名
25
+ for name in [":by_survival_time:LST", ":by_survival_time:Least_Survival_Time", ":by_survival_time:drop_smaller"]:
26
+ CACHE_STRATEGY_REGISTRY.add(obj=LST_Strategy, name=name, b_force=False, b_execute_now=False)