kevin-toolbox-dev 1.0.2__tar.gz → 1.0.11__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 (232) hide show
  1. kevin-toolbox-dev-1.0.11/PKG-INFO +61 -0
  2. kevin-toolbox-dev-1.0.11/README.md +43 -0
  3. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/__init__.py +2 -2
  4. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +1 -1
  5. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +1 -1
  6. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/__init__.py +6 -0
  7. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/count_leaf_node_nums.py +21 -0
  8. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/get_hash.py +38 -0
  9. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/get_leaf_nodes.py +22 -0
  10. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/get_value_by_name.py +44 -0
  11. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/set_value_by_name.py +55 -0
  12. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/for_nested_dict_list/traverse.py +56 -0
  13. {kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm}/for_seq/flatten_list.py +2 -2
  14. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/locks/__init__.py +1 -0
  15. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +74 -0
  16. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +2 -0
  17. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +244 -0
  18. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +42 -0
  19. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +1 -0
  20. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/statistician/_init_var.py +27 -0
  21. kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +93 -0
  22. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +9 -30
  23. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +1 -0
  24. kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +19 -0
  25. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +1 -1
  26. kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow/file/json_/write_json.py +19 -0
  27. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +10 -3
  28. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/test/test_version.py +4 -2
  29. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/version/compare_version.py +4 -2
  30. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/version/parse_version.py +5 -10
  31. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +3 -5
  32. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/utils/__init__.py +1 -0
  33. kevin-toolbox-dev-1.0.11/kevin_toolbox/math/utils/spilt_integer_most_evenly.py +13 -0
  34. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_numpy/linalg/__init__.py +3 -0
  35. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +12 -0
  36. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_numpy/linalg/normalize.py +20 -0
  37. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_numpy/linalg/softmax.py +11 -0
  38. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_optuna/__init__.py +1 -0
  39. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +78 -0
  40. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_os/remove.py +2 -1
  41. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  42. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/concat.py +1 -1
  43. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +1 -1
  44. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +1 -1
  45. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +1 -1
  46. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/tile.py +1 -1
  47. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/where.py +2 -2
  48. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_torch/nn/__init__.py +1 -0
  49. kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +11 -0
  50. kevin-toolbox-dev-1.0.11/kevin_toolbox_dev.egg-info/PKG-INFO +61 -0
  51. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox_dev.egg-info/SOURCES.txt +30 -9
  52. kevin-toolbox-dev-1.0.2/PKG-INFO +0 -82
  53. kevin-toolbox-dev-1.0.2/README.md +0 -64
  54. kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -1
  55. kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils/get_hash.py +0 -31
  56. kevin-toolbox-dev-1.0.2/kevin_toolbox/data_flow/file/json_/write_json.py +0 -10
  57. kevin-toolbox-dev-1.0.2/kevin_toolbox/developing/visualization/multiple_axis.py +0 -53
  58. kevin-toolbox-dev-1.0.2/kevin_toolbox/env_info/of_torch.py +0 -6
  59. kevin-toolbox-dev-1.0.2/kevin_toolbox_dev.egg-info/PKG-INFO +0 -82
  60. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/__init__.py +0 -0
  61. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  62. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  63. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  64. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  65. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  66. {kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm}/for_dict/__init__.py +0 -0
  67. {kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm}/for_dict/deep_update.py +0 -0
  68. {kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm}/for_seq/__init__.py +0 -0
  69. {kevin-toolbox-dev-1.0.2/kevin_toolbox/computer_science/algorithm/utils → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm}/for_seq/get_subsets.py +0 -0
  70. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  71. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  72. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  73. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  74. {kevin-toolbox-dev-1.0.2/kevin_toolbox/data_flow → kevin-toolbox-dev-1.0.11/kevin_toolbox/computer_science/algorithm/utils}/__init__.py +0 -0
  75. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  76. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  77. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/dangerous/__init__.py +0 -0
  78. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  79. {kevin-toolbox-dev-1.0.2/kevin_toolbox/data_flow/core → kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow}/__init__.py +0 -0
  80. {kevin-toolbox-dev-1.0.2/kevin_toolbox/data_flow/file/kevin_notation/test → kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow/core}/__init__.py +0 -0
  81. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  82. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  83. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  84. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  85. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  86. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  87. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  88. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  89. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  90. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  91. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  92. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  93. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  94. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  95. {kevin-toolbox-dev-1.0.2/kevin_toolbox/data_flow/file/kevin_notation/test/test_data → kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow/file/kevin_notation/test}/__init__.py +0 -0
  96. {kevin-toolbox-dev-1.0.2/kevin_toolbox/developing/numerical_characteristics → kevin-toolbox-dev-1.0.11/kevin_toolbox/data_flow/file/kevin_notation/test/test_data}/__init__.py +0 -0
  97. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  98. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  99. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  100. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  101. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/__init__.py +0 -0
  102. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  103. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  104. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  105. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  106. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  107. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  108. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  109. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  110. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  111. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  112. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  113. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  114. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  115. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  116. {kevin-toolbox-dev-1.0.2/kevin_toolbox/developing/visualization → kevin-toolbox-dev-1.0.11/kevin_toolbox/developing/numerical_characteristics}/__init__.py +0 -0
  117. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  118. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  119. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  120. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  121. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  122. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  123. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/developing/test.py +0 -0
  124. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/__init__.py +0 -0
  125. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  126. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  127. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/test/__init__.py +0 -0
  128. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/version/__init__.py +0 -0
  129. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  130. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/__init__.py +0 -0
  131. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  132. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  133. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  134. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  135. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  136. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  137. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  138. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  139. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  140. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  141. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  142. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/__init__.py +0 -0
  143. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  144. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  145. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  146. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  147. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  148. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  149. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  150. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  151. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  152. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  153. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  154. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  155. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  156. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  157. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  158. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  159. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  160. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  161. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  162. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  163. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  164. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  165. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  166. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  167. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  168. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  169. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  170. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  171. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/__init__.py +0 -0
  172. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/__init__.py +0 -0
  173. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  174. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  175. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  176. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  177. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  178. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  179. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  180. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  181. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  182. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  183. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  184. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  185. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  186. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  187. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  188. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  189. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  190. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  191. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  192. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  193. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/cache.py +0 -0
  195. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  196. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  197. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  198. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  199. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  200. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  201. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  202. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/__init__.py +0 -0
  203. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  204. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  205. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  206. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  207. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  208. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  209. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  210. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  211. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  212. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/__init__.py +0 -0
  213. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  214. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  215. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  216. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  217. {kevin-toolbox-dev-1.0.2/kevin_toolbox/patches/for_torch → kevin-toolbox-dev-1.0.11/kevin_toolbox/patches/for_numpy}/__init__.py +0 -0
  218. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  219. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  220. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  221. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  222. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  223. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  224. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  225. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  226. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  227. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  228. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  229. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  230. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/pyproject.toml +0 -0
  231. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/setup.cfg +0 -0
  232. {kevin-toolbox-dev-1.0.2 → kevin-toolbox-dev-1.0.11}/setup.py +0 -0
@@ -0,0 +1,61 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.0.11
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
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Programming Language :: Python :: 3
14
+ Requires-Python: >=3.6
15
+ Description-Content-Type: text/markdown
16
+ Provides-Extra: plot
17
+ Provides-Extra: rest
18
+
19
+ # kevin_toolbox
20
+
21
+ 一个通用的工具代码包集合
22
+
23
+
24
+
25
+ 环境要求
26
+
27
+ ```shell
28
+ numpy>=1.19
29
+ pytorch>=1.2
30
+ ```
31
+
32
+ 安装方法:
33
+
34
+ ```shell
35
+ pip install kevin-toolbox --no-dependencies
36
+ ```
37
+
38
+
39
+
40
+ [项目地址 Repo](https://github.com/cantbeblank96/kevin_toolbox)
41
+
42
+ [使用指南 User_Guide](./notes/User_Guide.md)
43
+
44
+ [免责声明 Disclaimer](./notes/Disclaimer.md)
45
+
46
+ [版本更新记录](./notes/Release_Record.md):
47
+
48
+ - v 1.0.11(2023-6-11)
49
+ - kevin_toolbox.data_flow.file
50
+ - 让 kevin_notation 中的 column_dict 方式支持单行写入
51
+ - 将原来 computer_science.algorithm.utils 下的 for_dict 和 for_seq 移动到 computer_science.algorithm 下。
52
+ - computer_science.algorithm.for_nested_dict_list
53
+ - 将原来 utils 下面向 嵌套字典列表 类型数据的算法移动至到 utils.for_nested_dict_list 下,包括:get_hash()、get_value_by_name()、set_value_by_name()、traverse()
54
+ - 改进 set_value_by_name(),增加强制赋值模式,相应参数为 b_force
55
+ - 改进 traverse() 增加了 b_use_name_as_idx 参数以控制传入 match_cond/converter 中 idx 参数的类型(传入整体的 name 还是父节点的 index 或 key)
56
+ - add count_leaf_node_nums(),用于获取嵌套字典列表 var 中所有叶节点的数量。
57
+ - add get_leaf_nodes(),用于获取嵌套字典列表 var 中所有叶节点。该函数基于新版的 traverse() 来实现。
58
+ - 添加了单元测试
59
+
60
+
61
+
@@ -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.0.11(2023-6-11)
31
+ - kevin_toolbox.data_flow.file
32
+ - 让 kevin_notation 中的 column_dict 方式支持单行写入
33
+ - 将原来 computer_science.algorithm.utils 下的 for_dict 和 for_seq 移动到 computer_science.algorithm 下。
34
+ - computer_science.algorithm.for_nested_dict_list
35
+ - 将原来 utils 下面向 嵌套字典列表 类型数据的算法移动至到 utils.for_nested_dict_list 下,包括:get_hash()、get_value_by_name()、set_value_by_name()、traverse()
36
+ - 改进 set_value_by_name(),增加强制赋值模式,相应参数为 b_force
37
+ - 改进 traverse() 增加了 b_use_name_as_idx 参数以控制传入 match_cond/converter 中 idx 参数的类型(传入整体的 name 还是父节点的 index 或 key)
38
+ - add count_leaf_node_nums(),用于获取嵌套字典列表 var 中所有叶节点的数量。
39
+ - add get_leaf_nodes(),用于获取嵌套字典列表 var 中所有叶节点。该函数基于新版的 traverse() 来实现。
40
+ - 添加了单元测试
41
+
42
+
43
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.0.2"
1
+ __version__ = "1.0.11"
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 1696683467 --verbose 0'
15
+ f'--expiration_timestamp 1702102643 --verbose 0'
16
16
  )
@@ -2,7 +2,7 @@ import pytest
2
2
  import numpy as np
3
3
  from kevin_toolbox.patches.for_test import check_consistency
4
4
  from kevin_toolbox.computer_science.algorithm.combinatorial_optimization import get_subset_with_largest_product
5
- from kevin_toolbox.computer_science.algorithm.utils.for_seq import get_subsets
5
+ from kevin_toolbox.computer_science.algorithm.for_seq import get_subsets
6
6
 
7
7
 
8
8
  def test_get_subset_with_largest_product():
@@ -2,7 +2,7 @@ import pytest
2
2
  import numpy as np
3
3
  from kevin_toolbox.patches.for_test import check_consistency
4
4
  from kevin_toolbox.computer_science.algorithm.combinatorial_optimization import zero_one_knapsack_problem
5
- from kevin_toolbox.computer_science.algorithm.utils.for_seq import get_subsets
5
+ from kevin_toolbox.computer_science.algorithm.for_seq import get_subsets
6
6
 
7
7
 
8
8
  def test_zero_one_knapsack_problem():
@@ -0,0 +1,6 @@
1
+ from .get_hash import get_hash
2
+ from .traverse import traverse
3
+ from .get_value_by_name import get_value_by_name
4
+ from .set_value_by_name import set_value_by_name
5
+ from .count_leaf_node_nums import count_leaf_node_nums
6
+ from .get_leaf_nodes import get_leaf_nodes
@@ -0,0 +1,21 @@
1
+ from kevin_toolbox.computer_science.algorithm.for_nested_dict_list import traverse
2
+
3
+
4
+ def count_leaf_node_nums(var):
5
+ """
6
+ 获取嵌套字典列表 var 中所有叶节点的数量
7
+
8
+ 参数:
9
+ var: 待处理数据
10
+ 当 var 不是 dict 或者 list 时,直接将 var 视为根节点,叶节点数量视为 0
11
+ """
12
+ nums = 0
13
+
14
+ def count(_, __, v):
15
+ nonlocal nums
16
+ if not isinstance(v, (list, dict,)):
17
+ nums += 1
18
+ return False
19
+
20
+ traverse(var=var, match_cond=count, action_mode="skip", b_use_name_as_idx=False)
21
+ return nums
@@ -0,0 +1,38 @@
1
+ import hashlib
2
+ import json
3
+ import warnings
4
+
5
+
6
+ def get_hash(item, length=None, mode="md5"):
7
+ """
8
+ 将输入 item 序列化,再计算出 hash 值
9
+ 本函数对于无序的字典能够提供唯一的 hash 值
10
+
11
+ 参数:
12
+ item:
13
+ length: <int> 返回 hash 字符串的前多少位
14
+ 默认为 None,返回所有结果
15
+ mode: <str> 支持 hashlib 中提供的 hash 方法
16
+ 当设置为 None 时候表示不使用 hash 处理而直接返回序列化后的字符串
17
+ """
18
+ assert mode is None or mode in hashlib.__all__
19
+
20
+ try:
21
+ hash_ = json.dumps(item, sort_keys=True).encode('utf-8')
22
+ except:
23
+ warnings.warn(
24
+ f"the item {type(item)} unable to be serialized by json, reproducibility is no longer guaranteed!",
25
+ UserWarning
26
+ )
27
+ hash_ = f"{item}".encode('utf-8')
28
+ if mode is not None:
29
+ worker = eval(f'hashlib.{mode}()')
30
+ worker.update(hash_)
31
+ hash_ = worker.hexdigest()
32
+ hash_ = hash_ if length is None else hash_[:length]
33
+ return hash_
34
+
35
+
36
+ if __name__ == '__main__':
37
+ print(get_hash(item={2, 4}, mode="sha512"))
38
+ print(get_hash(item=[2, 4], mode="sha512"))
@@ -0,0 +1,22 @@
1
+ from kevin_toolbox.computer_science.algorithm.for_nested_dict_list import traverse
2
+
3
+
4
+ def get_leaf_nodes(var):
5
+ """
6
+ 获取嵌套字典列表 var 中所有叶节点
7
+ 以列表 [(name,value), ...] 形式返回,其中名字 name 的解释方式参考 get_value_by_name() 介绍
8
+
9
+ 参数:
10
+ var: 待处理数据
11
+ 当 var 不是 dict 或者 list 时,返回空列表
12
+ """
13
+ res = []
14
+
15
+ def func(_, idx, v):
16
+ nonlocal res
17
+ if not isinstance(v, (list, dict,)):
18
+ res.append((idx, v))
19
+ return False
20
+
21
+ traverse(var=var, match_cond=func, action_mode="skip", b_use_name_as_idx=True)
22
+ return res
@@ -0,0 +1,44 @@
1
+ import re
2
+
3
+
4
+ def get_value_by_name(var, name):
5
+ """
6
+ 通过解释名字得到取值方式,然后到 var 中获取对应部分的值。
7
+
8
+ 参数:
9
+ var: 任意支持索引取值的变量
10
+ name: <string> 取值方式。
11
+ 由多组 "<解释方式><键>" 组成。
12
+ 解释方式支持以下几种:
13
+ "@" 使用 eval() 读取键
14
+ ":" 使用 str() 读取键
15
+ "|" 依次尝试 str() 和 eval() 两种方式
16
+ 示例:
17
+ "@100" 表示读取 var[eval("100")]
18
+ ":epoch" 表示读取 var["epoch"]
19
+ "|1+1" 表示首先尝试读取 var["1+1"],若不成功则尝试读取 var[eval("1+1")]
20
+ 假设 var=dict(acc=[0.66,0.78,0.99]),如果你想读取 var["acc"][1] => 0.78,那么可以将 name 写成:
21
+ ":acc@1" 或者 "|acc|1" 等。
22
+ 注意,在 name 的开头也可以添加任意非解释方式的字符,本函数将直接忽略它们,比如下面的:
23
+ "var:acc@1" 和 "xxxx|acc|1" 也能正常读取。
24
+ """
25
+ assert isinstance(name, (str,))
26
+
27
+ key_ls = re.split('[:@|]', name)
28
+ # assert len(key_ls) > 0
29
+ flag_idx = len(key_ls[0])
30
+ for key in key_ls[1:]:
31
+ flag = name[flag_idx]
32
+ flag_idx += len(key) + 1
33
+ #
34
+ if flag == "@":
35
+ var = var[eval(key)]
36
+ elif flag == "|":
37
+ try:
38
+ var = var[key]
39
+ except:
40
+ var = var[eval(key)]
41
+ else: # ":"
42
+ var = var[key]
43
+
44
+ return var
@@ -0,0 +1,55 @@
1
+ from kevin_toolbox.computer_science.algorithm.for_nested_dict_list import get_value_by_name
2
+
3
+
4
+ def set_value_by_name(var, name, value, b_force=False):
5
+ """
6
+ 通过解释名字得到取值方式,然后到 var 中将对应部分的值修改为 value。
7
+
8
+ 参数:
9
+ var: 任意支持索引赋值的变量
10
+ name: <string> 取值方式
11
+ 由多组 "<解释方式><键>" 组成。
12
+ 解释方式支持以下几种:
13
+ "@" 使用 eval() 读取键
14
+ ":" 使用 str() 读取键
15
+ "|" 依次尝试 str() 和 eval() 两种方式
16
+ 示例:
17
+ "@100" 表示指向 var[eval("100")]
18
+ ":epoch" 表示指向 var["epoch"]
19
+ "|1+1" 表示首先尝试指向 var["1+1"],若不成功则尝试指向 var[eval("1+1")]
20
+ 假设 var=dict(acc=[0.66,0.78,0.99]),如果你想将 var["acc"][1] 设置为 100,那么可以将 name 写成:
21
+ ":acc@1" 或者 "|acc|1" 等。
22
+ 注意,在 name 的开头也可以添加任意非解释方式的字符,本函数将直接忽略它们,比如下面的:
23
+ "var:acc@1" 和 "xxxx|acc|1" 也能正常写入。
24
+ value: 待赋给的值
25
+ b_force: <boolean> 当无法设置时,是否尝试创建或者修改节点
26
+ 默认为 False,
27
+ 当设置为 True,可能会对 var 的结构产生不可逆的改变,请谨慎使用。新创建或者修改的节点的类型是 dict。
28
+ """
29
+ assert isinstance(name, (str,))
30
+ key = name
31
+ for char in ":@|":
32
+ key = key.rsplit(char, 1)[-1]
33
+ assert len(key) < len(name), f'invalid name: {name}'
34
+
35
+ try:
36
+ item = get_value_by_name(var=var, name=name[:-1 - len(key)])
37
+
38
+ flag = name[-1 - len(key)]
39
+ key_t = key
40
+ if flag == "@":
41
+ key_t = eval(key)
42
+ elif flag == "|":
43
+ try:
44
+ _ = item[key]
45
+ except:
46
+ key_t = eval(key)
47
+
48
+ item[key_t] = value
49
+ except:
50
+ if not b_force:
51
+ raise ValueError(f'The location pointed to by name {name} does not exist in var')
52
+ else:
53
+ var = set_value_by_name(var=var, name=name[:-1 - len(key)], value={key: value}, b_force=b_force)
54
+
55
+ return var
@@ -0,0 +1,56 @@
1
+ def traverse(var, match_cond, action_mode="remove", converter=None, b_use_name_as_idx=False):
2
+ """
3
+ 遍历 var 找到符合 match_cond 的元素,将其按照 action_mode 指定的操作进行处理
4
+
5
+ 参数:
6
+ var: 待处理数据
7
+ 当 var 不是 dict 或者 list 时,将直接返回 var 而不做处理
8
+ match_cond: <func> 元素的匹配条件
9
+ 函数类型为 def(parent_type, idx, value): xxxx
10
+ 其中:
11
+ parent_type 该元素源自哪种结构体,有两个可能传入的值: list,dict
12
+ idx 该元素在结构体中的位置
13
+ 当 b_use_name_as_idx=False 时,
14
+ 对于列表是 index,对于字典是 key
15
+ 当为 True 时,传入的是元素在整体结构中的 name 位置,name的格式和含义参考
16
+ get_value_by_name() 中的介绍
17
+ value 元素的值
18
+ action_mode: <str> 如何对匹配上的元素进行处理
19
+ 目前支持:
20
+ "remove" 将该元素移除
21
+ "replace" 将该元素替换为 converter() 处理后的结果
22
+ "skip": 不进行任何操作
23
+ converter: <func> 参见 action_mode 中的 "replace" 模式
24
+ 函数类型为 def(idx, value): xxxx
25
+ 其中 idx 和 value 的含义参见参数 match_cond 介绍
26
+ b_use_name_as_idx <boolean> 对于 match_cond/converter 中的 idx 参数,是传入整体的 name 还是父节点的 index 或 key。
27
+ 默认为 False
28
+ """
29
+ assert callable(match_cond)
30
+ assert action_mode in {"replace", "remove", "skip"}
31
+ if action_mode == "replace":
32
+ assert callable(converter)
33
+
34
+ return recursive_(var, match_cond, action_mode, converter, b_use_name_as_idx, "")
35
+
36
+
37
+ def recursive_(var, match_cond, action_mode, converter, b_use_name_as_idx, pre_name):
38
+ if isinstance(var, (list, dict)):
39
+ items = reversed(list(enumerate(var))) if isinstance(var, list) else list(var.items())
40
+ for k, v in items:
41
+ if b_use_name_as_idx:
42
+ idx = f'{pre_name}@{k}' if isinstance(var, list) else f'{pre_name}:{k}'
43
+ else:
44
+ idx = k
45
+ if match_cond(type(var), idx, v):
46
+ if action_mode == "remove":
47
+ var.pop(k)
48
+ elif action_mode == "replace":
49
+ var[k] = converter(idx, v)
50
+ else:
51
+ pass
52
+ else:
53
+ var[k] = recursive_(v, match_cond, action_mode, converter, b_use_name_as_idx, idx)
54
+ else:
55
+ pass
56
+ return var
@@ -22,7 +22,7 @@ def _recursion(ls, depth):
22
22
  res = []
23
23
  for i in ls:
24
24
  if isinstance(i, (list, tuple,)):
25
- res.extend(_recursion(i, depth=depth - 1))
25
+ res.extend(_recursion(i, depth=depth if depth is None else depth - 1))
26
26
  else:
27
27
  res.append(i)
28
28
  return res
@@ -30,4 +30,4 @@ def _recursion(ls, depth):
30
30
 
31
31
  if __name__ == '__main__':
32
32
  a = [[1, 2, (3, 4)], [(5,)], 6]
33
- print(flatten_list(ls=a, depth=5))
33
+ print(flatten_list(ls=a, depth=None))
@@ -0,0 +1 @@
1
+ from .mutex_lock import Mutex_Lock
@@ -0,0 +1,74 @@
1
+ import fcntl
2
+ import os
3
+ import time
4
+ from kevin_toolbox.patches import for_os
5
+
6
+
7
+ class Mutex_Lock:
8
+ """
9
+ 互斥锁
10
+ 基于非阻塞锁实现,可以避免死锁
11
+ """
12
+
13
+ def __init__(self, **kwargs):
14
+ """
15
+ 参数:
16
+ lock_name: <str> string or file_path
17
+ 当为单纯的字符串时,将在当前文件夹下创建锁文件
18
+ wait_interval: <int/float> 处于阻塞状态时,获取锁的每次尝试之间的时间间隔,单位为 second。
19
+ 默认为 1e-1
20
+
21
+ """
22
+ # 默认参数
23
+ paras = {
24
+ # 必要参数
25
+ "lock_name": ".233",
26
+ "wait_interval": 1e-1,
27
+ }
28
+
29
+ # 获取参数
30
+ paras.update(kwargs)
31
+
32
+ # 校验参数
33
+ self.paras = paras
34
+
35
+ if os.path.dirname(self.paras["lock_name"]):
36
+ os.makedirs(os.path.dirname(self.paras["lock_name"]), exist_ok=True)
37
+ self.fd = open(self.paras["lock_name"], 'a')
38
+ self.state = dict(acquired=False)
39
+
40
+ def acquire(self, b_block_if_fail=True, time_out=None):
41
+ start_time = time.time()
42
+ while True:
43
+ try:
44
+ # 尝试获取文件锁
45
+ fcntl.flock(self.fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
46
+ self.state["acquired"] = True
47
+ break
48
+ except IOError:
49
+ # 获取锁失败
50
+ if not b_block_if_fail or (time_out is not None and time.time() - start_time > time_out):
51
+ # 超时或者设置了不阻塞
52
+ self.state["acquired"] = False
53
+ break
54
+ else:
55
+ # 未超时,等待一段时间后重试
56
+ time.sleep(self.paras["wait_interval"])
57
+ return self.state["acquired"]
58
+
59
+ def release(self, b_cool_down=True):
60
+ assert self.state["acquired"], \
61
+ f'Please use acquire() to acquire the lock before calling release()'
62
+ fcntl.flock(self.fd, fcntl.LOCK_UN)
63
+ if b_cool_down:
64
+ time.sleep(self.paras["wait_interval"] * 2) # 冷却当前锁,让其他排队中的锁有机会获取资源,避免当前锁对资源的长期占用
65
+
66
+ @property
67
+ def acquired(self):
68
+ return self.state["acquired"]
69
+
70
+ def __del__(self):
71
+ try:
72
+ self.fd.close()
73
+ except:
74
+ pass
@@ -0,0 +1,2 @@
1
+ from .strategy_manager import Strategy_Manager
2
+ from .trigger import Trigger