kevin-toolbox-dev 1.3.2__tar.gz → 1.3.4__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 (321) hide show
  1. kevin-toolbox-dev-1.3.4/PKG-INFO +62 -0
  2. kevin-toolbox-dev-1.3.4/README.md +41 -0
  3. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/__init__.py +2 -2
  4. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +44 -9
  5. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/reader/unified_reader.py +2 -2
  6. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +2 -2
  7. kevin-toolbox-dev-1.3.4/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +23 -0
  8. kevin-toolbox-dev-1.3.2/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple.py → kevin-toolbox-dev-1.3.4/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +7 -5
  9. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/read_json.py +3 -3
  10. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/write_json.py +3 -3
  11. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +6 -5
  12. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/read.py +4 -2
  13. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +15 -3
  14. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/markdown/generate_table.py +2 -2
  15. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/utils/__init__.py +1 -1
  16. kevin-toolbox-dev-1.3.2/kevin_toolbox/math/utils/spilt_integer_most_evenly.py → kevin-toolbox-dev-1.3.4/kevin_toolbox/math/utils/split_integer_most_evenly.py +2 -2
  17. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/__init__.py +1 -0
  18. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/read.py +11 -4
  19. kevin-toolbox-dev-1.3.4/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +31 -0
  20. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/write.py +51 -26
  21. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +1 -0
  22. kevin-toolbox-dev-1.3.4/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +127 -0
  23. kevin-toolbox-dev-1.3.4/kevin_toolbox/patches/for_numpy/random/get_rng.py +64 -0
  24. kevin-toolbox-dev-1.3.4/kevin_toolbox_dev.egg-info/PKG-INFO +62 -0
  25. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox_dev.egg-info/SOURCES.txt +5 -3
  26. kevin-toolbox-dev-1.3.2/PKG-INFO +0 -91
  27. kevin-toolbox-dev-1.3.2/README.md +0 -73
  28. kevin-toolbox-dev-1.3.2/kevin_toolbox/data_flow/file/json_/converter/escape_tuple.py +0 -20
  29. kevin-toolbox-dev-1.3.2/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -18
  30. kevin-toolbox-dev-1.3.2/kevin_toolbox_dev.egg-info/PKG-INFO +0 -91
  31. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/__init__.py +0 -0
  32. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  33. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  34. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  35. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  36. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  37. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  38. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  39. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  40. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  41. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  42. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  43. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  44. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  45. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  46. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  47. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  48. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  49. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  50. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  51. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  52. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  53. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  54. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  55. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  56. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  57. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  58. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  59. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  60. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  61. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  62. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  63. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  64. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  65. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  66. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  67. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  68. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  69. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  70. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  71. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  72. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  73. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  74. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  75. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  76. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  77. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  78. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  79. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  80. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  81. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  82. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  83. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  84. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  85. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  86. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  87. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  88. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  89. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/dangerous/__init__.py +0 -0
  90. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  91. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/__init__.py +0 -0
  92. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  93. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  95. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  96. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  97. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  98. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  99. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  100. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  101. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  102. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  103. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  104. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  105. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  106. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  107. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  108. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  109. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  110. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  111. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  112. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  113. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  114. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  115. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -0
  116. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -0
  117. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  118. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/__init__.py +0 -0
  119. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  120. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  121. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  122. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  123. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  124. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  125. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  126. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  127. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  128. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  129. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  130. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  131. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  132. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  133. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  134. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  135. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  136. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  137. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  138. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  139. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  140. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/developing/test.py +0 -0
  141. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/__init__.py +0 -0
  142. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  143. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  144. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/test/__init__.py +0 -0
  145. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/test/test_version.py +0 -0
  146. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/version/__init__.py +0 -0
  147. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  148. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  149. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  150. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/__init__.py +0 -0
  151. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  152. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  153. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  154. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  155. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  156. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  157. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  158. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  159. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  160. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  161. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  162. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  163. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/__init__.py +0 -0
  164. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  165. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  166. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  167. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  168. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  169. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  170. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  171. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  172. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  173. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  174. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  175. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  176. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  177. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  178. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  179. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  180. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  181. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  182. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  183. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  184. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  186. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  187. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  188. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  189. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  190. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  191. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  192. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/__init__.py +0 -0
  193. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  195. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  196. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  197. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  198. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  199. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  200. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  201. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  202. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  203. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  204. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  205. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  206. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  207. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  208. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  209. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  210. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  211. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  212. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  213. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  214. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  215. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/cache.py +0 -0
  216. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  217. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  218. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  219. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  220. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  221. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  222. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  223. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/__init__.py +0 -0
  224. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  225. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  226. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  227. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  228. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  229. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  230. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  231. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  232. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  233. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  235. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  236. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  237. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  238. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  239. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  240. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  241. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  242. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  243. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  244. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  245. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  246. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  247. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  248. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  249. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  250. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  251. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  252. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  253. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  254. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  255. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  256. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  257. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  258. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  259. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  260. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  261. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  262. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  263. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/__init__.py +0 -0
  264. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  265. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  266. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  267. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  268. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  269. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  270. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_matplotlib/generate_color_list.py +0 -0
  271. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  272. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  273. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  274. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  275. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  276. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  277. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  278. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  279. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  280. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  281. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  282. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  283. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  284. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  285. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  286. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  287. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  288. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  289. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  290. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  291. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  292. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  293. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  294. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  295. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_os/pack.py +0 -0
  296. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_os/remove.py +0 -0
  297. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  298. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_os/walk.py +0 -0
  299. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  300. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  301. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  302. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  303. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  304. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  305. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  306. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  307. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  308. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  309. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  310. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  311. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  312. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  313. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  314. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  315. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  316. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  317. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  318. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  319. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/pyproject.toml +0 -0
  320. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/setup.cfg +0 -0
  321. {kevin-toolbox-dev-1.3.2 → kevin-toolbox-dev-1.3.4}/setup.py +0 -0
@@ -0,0 +1,62 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.3.4
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.4 (2024-04-06)【bug fix】【new feature】
50
+ - nested_dict_list
51
+ - 【new feature】add replace_identical_with_reference() to value_parser,新增该函数用于将具有相同 id 的多个节点,替换为单个节点和其多个引用的形式。一般用于去除冗余部分,压缩 ndl 的结构。
52
+ - 【bug fix】【new feature】fix bug in write(),添加了 saved_node_name_format 参数控制 nodes 下文件名的生成。
53
+ - bug:在 v1.3.3 前直接使用原始的 node_name 来作为 nodes/ 目录下的文件名,这导致当 node_name 中带有特殊字符时,比如 "/"(在linux下) 和 ":"(在windows下),将会导致保存失败。
54
+ - fix:使用 saved_node_name_format 指定生成文件名的方式,默认方式 '{count}_{hash_name}' 可以避免出现特殊字符。
55
+ - 【bug fix】fix bug in write()
56
+ - bug:在 v1.3.3 前 processed_s 通过 ndl.set_value() 来逐个节点构建,但是由于根据节点名创建的结果可能和原结构存在差异(详见 ndl.set_value() 中b_force参数的介绍),因此导致 processed_s 和 var 结构不一致,导致出错。
57
+ - fix:使用 ndl.copy_() 来创建结构与 var 一致的 processed_s。
58
+ - 【new feature】add b_keep_identical_relations to write(),增加该参数用于决定是否保留不同节点之间的 id 相等关系。
59
+ - 添加了对应的测试用例。
60
+
61
+
62
+
@@ -0,0 +1,41 @@
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.4 (2024-04-06)【bug fix】【new feature】
31
+ - nested_dict_list
32
+ - 【new feature】add replace_identical_with_reference() to value_parser,新增该函数用于将具有相同 id 的多个节点,替换为单个节点和其多个引用的形式。一般用于去除冗余部分,压缩 ndl 的结构。
33
+ - 【bug fix】【new feature】fix bug in write(),添加了 saved_node_name_format 参数控制 nodes 下文件名的生成。
34
+ - bug:在 v1.3.3 前直接使用原始的 node_name 来作为 nodes/ 目录下的文件名,这导致当 node_name 中带有特殊字符时,比如 "/"(在linux下) 和 ":"(在windows下),将会导致保存失败。
35
+ - fix:使用 saved_node_name_format 指定生成文件名的方式,默认方式 '{count}_{hash_name}' 可以避免出现特殊字符。
36
+ - 【bug fix】fix bug in write()
37
+ - bug:在 v1.3.3 前 processed_s 通过 ndl.set_value() 来逐个节点构建,但是由于根据节点名创建的结果可能和原结构存在差异(详见 ndl.set_value() 中b_force参数的介绍),因此导致 processed_s 和 var 结构不一致,导致出错。
38
+ - fix:使用 ndl.copy_() 来创建结构与 var 一致的 processed_s。
39
+ - 【new feature】add b_keep_identical_relations to write(),增加该参数用于决定是否保留不同节点之间的 id 相等关系。
40
+ - 添加了对应的测试用例。
41
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.3.2"
1
+ __version__ = "1.3.4"
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 1725197084 --verbose 0'
15
+ f'--expiration_timestamp 1727961379 --verbose 0'
16
16
  )
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import copy
2
3
 
3
4
 
4
5
  class File_Iterative_Reader:
@@ -12,11 +13,14 @@ class File_Iterative_Reader:
12
13
  设定关键参数
13
14
  必要参数:
14
15
  file_path: 文件路径
16
+ file_obj: 文件对象
17
+ 注意!!以上两个参数指定其一即可,同时指定时候,以后者为准。
15
18
  读取模式相关参数:
16
19
  paras_for_open: open() 函数的补充参数
17
20
  mode: 读取模式,默认为 "lines"
18
21
  "lines": 按行数计算批次大小
19
22
  "bytes": 按字节数计算
23
+ 注意!!以上两个参数在指定了 file_obj 参数后将失效。
20
24
  chunk_size: 批次大小
21
25
  默认为 1k
22
26
  当为-1时,读取整个文件
@@ -51,6 +55,7 @@ class File_Iterative_Reader:
51
55
  paras = {
52
56
  # 必要参数
53
57
  "file_path": None,
58
+ "file_obj": None,
54
59
  # 读取模式相关参数
55
60
  "paras_for_open": dict(mode="r", encoding='utf-8'),
56
61
  "mode": "lines",
@@ -74,16 +79,21 @@ class File_Iterative_Reader:
74
79
  assert mode in ["lines", "bytes"]
75
80
  paras["chunk_size"] = int(paras["chunk_size"])
76
81
  paras["loop_num"] = int(paras["loop_num"]) - 1
77
- #
78
- file_path = paras["file_path"]
79
- assert isinstance(file_path, (str,)) and os.path.exists(file_path), \
80
- Exception(f"Error: file {file_path} not exists!")
81
- #
82
- paras_for_open = paras["paras_for_open"]
83
- assert isinstance(paras_for_open, (dict,))
84
82
 
85
83
  # 获取文件对象
86
- self.file = open(file_path, **paras_for_open)
84
+ if paras["file_obj"] is None:
85
+ assert isinstance(paras["file_path"], (str,)) and os.path.isfile(paras["file_path"]), \
86
+ Exception(f'Error: file {paras["file_path"]} not exists!')
87
+ #
88
+ assert isinstance(paras["paras_for_open"], (dict,))
89
+ self.file = open(paras["file_path"], **paras["paras_for_open"])
90
+ else:
91
+ # 拷贝对象,防止修改外部对象
92
+ try:
93
+ self.file = copy.deepcopy(paras["file_obj"])
94
+ except:
95
+ self.file = open(paras["file_obj"].name, mode=paras["file_obj"].mode)
96
+
87
97
  # 选择相应模式
88
98
  self.__read_func = {"lines": self.__read_lines, "bytes": self.__read_bytes}[mode]
89
99
  self.__jump_func = {"lines": self.__jump_lines, "bytes": self.__jump_bytes}[mode]
@@ -225,9 +235,34 @@ class File_Iterative_Reader:
225
235
  if __name__ == "__main__":
226
236
  import numpy as np
227
237
 
228
- reader = File_Iterative_Reader(file_path="developing/test_data.txt", chunk_size=2, drop=True, loop_num=2,
238
+ print("使用 file_path")
239
+ reader = File_Iterative_Reader(file_path="test/test_data/test_data.txt", chunk_size=2, drop=True, loop_num=2,
229
240
  pre_jump_size=3, convert_func=lambda x: np.array(x))
230
241
  for i in reader:
231
242
  print(i)
232
243
 
233
244
  del reader
245
+
246
+ print("使用 file_obj")
247
+ reader = File_Iterative_Reader(
248
+ file_obj=open("test/test_data/test_data.txt", "r"), chunk_size=2, drop=True, loop_num=2,
249
+ pre_jump_size=3, convert_func=lambda x: np.array(x))
250
+ for i in reader:
251
+ print(i)
252
+
253
+ del reader
254
+
255
+ print("从字符串构建文件对象作为 file_obj")
256
+ from io import StringIO
257
+
258
+ file_obj = StringIO(initial_value=open("test/test_data/test_data.txt", "r").read())
259
+ reader = File_Iterative_Reader(
260
+ file_obj=file_obj, chunk_size=2, drop=True, loop_num=2,
261
+ pre_jump_size=3, convert_func=lambda x: np.array(x))
262
+ for i in reader:
263
+ print(i)
264
+
265
+ print("证明不会修改外部对象")
266
+ print(file_obj.read())
267
+
268
+ del reader
@@ -49,7 +49,7 @@ if __name__ == '__main__':
49
49
  print(reader.read([3, 3]).shape)
50
50
  print(reader.find(1))
51
51
 
52
- reader = UReader(file_path="test_data.txt", chunk_size=2, folder_path="./temp/233")
52
+ reader = UReader(file_path="test/test_data/test_data.txt", chunk_size=2, folder_path="./temp/233")
53
53
 
54
54
  print(reader.read(2, 7))
55
55
  # del reader
@@ -67,7 +67,7 @@ if __name__ == '__main__':
67
67
 
68
68
  print(reader.find('data/6/horse_race_pan/2132020102319002000161_43_4.bmp'))
69
69
 
70
- reader = Reader_for_files(file_path="test_data.txt", chunk_size=2, pre_jump_size=2, jump_size=2)
70
+ reader = Reader_for_files(file_path="test/test_data/test_data.txt", chunk_size=2, pre_jump_size=2, jump_size=2)
71
71
 
72
72
  for i in reader:
73
73
  print(2333, i)
@@ -2,6 +2,6 @@ from .convert_dict_key_to_number import convert_dict_key_to_number
2
2
  from .convert_ndarray_to_list import convert_ndarray_to_list
3
3
  from .escape_non_str_dict_key import escape_non_str_dict_key
4
4
  from .unescape_non_str_dict_key import unescape_non_str_dict_key
5
- from .escape_tuple import escape_tuple
6
- from .unescape_tuple import unescape_tuple
5
+ from .escape_tuple_and_set import escape_tuple_and_set
6
+ from .unescape_tuple_and_set import unescape_tuple_and_set
7
7
  from .integrate import integrate
@@ -0,0 +1,23 @@
1
+ def escape_tuple_and_set(x):
2
+ """
3
+ 将 tuple 和 set 进行转义
4
+ 转义: x ==> f"<eval>{x}"
5
+ 反转义: f"<eval>{x}" ==> x
6
+
7
+ 为什么要进行转义?
8
+ 由于 json 中会将 tuple 作为 list 进行保存,同时也无法保存 set,因此在保存过程中会丢失相应信息。
9
+ """
10
+ if isinstance(x, (tuple, set,)) or (isinstance(x, (str,)) and x.startswith("<eval>")):
11
+ return f'<eval>{x}'
12
+ else:
13
+ return x
14
+
15
+
16
+ if __name__ == '__main__':
17
+ print(escape_tuple_and_set((1, 2, "\'1\'")))
18
+ # <eval>(1, 2, "'1'")
19
+ print(escape_tuple_and_set({"1", (1, 2, 3), 233}))
20
+ # <eval>{'1', 233, (1, 2, 3)}
21
+
22
+ print(escape_tuple_and_set("<eval>233"))
23
+ # <eval><eval>233
@@ -1,11 +1,11 @@
1
- def unescape_tuple(x):
1
+ def unescape_tuple_and_set(x):
2
2
  """
3
- 将 tuple 进行反转义
3
+ 将 tuple 和 set 进行反转义
4
4
  转义: x ==> f"<eval>{x}"
5
5
  反转义: f"<eval>{x}" ==> x
6
6
 
7
7
  为什么要进行转义?
8
- 由于 json 中会将 tuple 作为 list 进行保存,因此在保存过程中会丢失相应信息。
8
+ 由于 json 中会将 tuple 作为 list 进行保存,同时也无法保存 set,因此在保存过程中会丢失相应信息。
9
9
  """
10
10
  if isinstance(x, str) and x.startswith("<eval>"):
11
11
  x = x[6:]
@@ -17,7 +17,9 @@ def unescape_tuple(x):
17
17
 
18
18
 
19
19
  if __name__ == '__main__':
20
- print(unescape_tuple("<eval>(1, 2, \"'1'\")"))
20
+ print(unescape_tuple_and_set("<eval>(1, 2, \"'1'\")"))
21
21
  # (1, 2, "\'1\'")
22
- print(unescape_tuple("<eval><eval>233"))
22
+ print(unescape_tuple_and_set("<eval>{'1', 233, (1, 2, 3)}"))
23
+ # {'1', 233, (1, 2, 3)}
24
+ print(unescape_tuple_and_set("<eval><eval>233"))
23
25
  # "<eval>233"
@@ -1,6 +1,6 @@
1
1
  import os
2
2
  import json
3
- from kevin_toolbox.data_flow.file.json_.converter import integrate, unescape_tuple, unescape_non_str_dict_key
3
+ from kevin_toolbox.data_flow.file.json_.converter import integrate, unescape_tuple_and_set, unescape_non_str_dict_key
4
4
  from kevin_toolbox.nested_dict_list import traverse
5
5
 
6
6
 
@@ -14,14 +14,14 @@ def read_json(file_path, converters=None, b_use_suggested_converter=False):
14
14
  转换器 converter 应该是一个形如 def(x): ... ; return x 的函数,具体可以参考
15
15
  json_.converter 中已实现的转换器
16
16
  b_use_suggested_converter: <boolean> 是否使用建议的转换器
17
- 建议使用 unescape/escape_non_str_dict_key 和 unescape/escape_tuple 这两对转换器,
17
+ 建议使用 unescape/escape_non_str_dict_key 和 unescape/escape_tuple_and_set 这两对转换器,
18
18
  可以避免因 json 的读取/写入而丢失部分信息。
19
19
  默认为 False。
20
20
  注意:当 converters 非 None,此参数失效,以 converters 中的具体设置为准
21
21
  """
22
22
  assert os.path.isfile(file_path), f'file {file_path} not found'
23
23
  if converters is None and b_use_suggested_converter:
24
- converters = [unescape_tuple, unescape_non_str_dict_key]
24
+ converters = [unescape_tuple_and_set, unescape_non_str_dict_key]
25
25
 
26
26
  with open(file_path, 'r') as f:
27
27
  content = json.load(f)
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import json
3
3
  import copy
4
- from kevin_toolbox.data_flow.file.json_.converter import integrate, escape_tuple, escape_non_str_dict_key
4
+ from kevin_toolbox.data_flow.file.json_.converter import integrate, escape_tuple_and_set, escape_non_str_dict_key
5
5
  from kevin_toolbox.nested_dict_list import traverse
6
6
 
7
7
 
@@ -18,7 +18,7 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
18
18
  转换器 converter 应该是一个形如 def(x): ... ; return x 的函数,具体可以参考
19
19
  json_.converter 中已实现的转换器
20
20
  b_use_suggested_converter: <boolean> 是否使用建议的转换器
21
- 建议使用 unescape/escape_non_str_dict_key 和 unescape/escape_tuple 这两对转换器,
21
+ 建议使用 unescape/escape_non_str_dict_key 和 unescape/escape_tuple_and_set 这两对转换器,
22
22
  可以避免因 json 的读取/写入而丢失部分信息。
23
23
  默认为 False。
24
24
  注意:当 converters 非 None,此参数失效,以 converters 中的具体设置为准
@@ -26,7 +26,7 @@ def write_json(content, file_path, sort_keys=False, converters=None, b_use_sugge
26
26
  assert isinstance(file_path, (str, type(None)))
27
27
 
28
28
  if converters is None and b_use_suggested_converter:
29
- converters = [escape_tuple, escape_non_str_dict_key]
29
+ converters = [escape_tuple_and_set, escape_non_str_dict_key]
30
30
 
31
31
  if converters is not None:
32
32
  converter = integrate(converters)
@@ -15,6 +15,8 @@ class Kevin_Notation_Reader:
15
15
 
16
16
  必要参数:
17
17
  file_path: <string> 文件路径
18
+ file_obj: <file object> 文件对象
19
+ 以上参数2选一,具体参见 File_Iterative_Reader
18
20
  读取相关参数:
19
21
  chunk_size: <integer> 每次读取多少行数据
20
22
  beg: <integer> 开始读取的位置
@@ -28,6 +30,7 @@ class Kevin_Notation_Reader:
28
30
  paras = {
29
31
  # 必要参数
30
32
  "file_path": None,
33
+ "file_obj": None,
31
34
  # 读取相关参数
32
35
  "chunk_size": 100,
33
36
  "beg": 0,
@@ -38,9 +41,7 @@ class Kevin_Notation_Reader:
38
41
  paras.update(kwargs)
39
42
 
40
43
  # 校验参数
41
- assert isinstance(paras["file_path"], (str,)) and os.path.isfile(paras["file_path"]), \
42
- f'file not exists :{paras["file_path"]}'
43
- #
44
+ # file_path file_obj 交给 File_Iterative_Reader 校验
44
45
  assert isinstance(paras["chunk_size"], (int,)) and (paras["chunk_size"] > 0 or paras["chunk_size"] == -1)
45
46
  assert isinstance(paras["beg"], (int,)) and paras["beg"] >= 0
46
47
  assert isinstance(paras["converter"], (Converter, dict,))
@@ -48,7 +49,7 @@ class Kevin_Notation_Reader:
48
49
  self.paras = paras
49
50
 
50
51
  # 读取开头
51
- self.reader = File_Iterative_Reader(file_path=self.paras["file_path"],
52
+ self.reader = File_Iterative_Reader(file_path=self.paras["file_path"], file_obj=self.paras["file_obj"],
52
53
  pre_jump_size=self.paras["beg"],
53
54
  filter_=lambda x: x != "\n" and not x.startswith("//"), # 去除注释
54
55
  map_func=lambda x: x.rsplit("\n", 1)[0].split("//", 1)[0],
@@ -64,7 +65,7 @@ class Kevin_Notation_Reader:
64
65
  del self.reader
65
66
 
66
67
  # 读取内容
67
- self.reader = File_Iterative_Reader(file_path=self.paras["file_path"],
68
+ self.reader = File_Iterative_Reader(file_path=self.paras["file_path"], file_obj=self.paras["file_obj"],
68
69
  pre_jump_size=self.paras["beg"] + offset,
69
70
  filter_=lambda x: x != "\n" and not x.startswith("//"), # 去除注释
70
71
  map_func=lambda x: x.rsplit("\n", 1)[0].split("//", 1)[0],
@@ -1,11 +1,13 @@
1
1
  from kevin_toolbox.data_flow.file import kevin_notation
2
2
 
3
3
 
4
- def read(file_path):
4
+ def read(file_path=None, file_obj=None):
5
5
  """
6
6
  读取整个文件的快捷接口
7
7
  """
8
- with kevin_notation.Reader(file_path=file_path, chunk_size=-1) as reader:
8
+ assert file_path is not None or file_obj is not None
9
+
10
+ with kevin_notation.Reader(file_path=file_path, chunk_size=-1, file_obj=file_obj) as reader:
9
11
  # metadata
10
12
  metadata = reader.metadata
11
13
  # content
@@ -134,11 +134,23 @@ def test_writer_1(expected_metadata, expected_content, file_path):
134
134
  zip(metadata_ls, content_ls, file_path_ls))
135
135
  def test_read(expected_metadata, expected_content, file_path):
136
136
  print("test read()")
137
- # 读取
137
+ # 使用 file_path 读取
138
138
  metadata, content = kevin_notation.read(file_path=file_path)
139
+
140
+ # 使用 file_obj 读取
141
+ file_obj = open(file_path, "r")
142
+ metadata_1, content_1 = kevin_notation.read(file_obj=file_obj)
143
+ assert len(file_obj.read()) > 0 # 不影响输入的 file_obj
144
+
145
+ # 使用字符串构造 file_obj 读取
146
+ from io import StringIO
147
+ file_obj = StringIO(initial_value=open(file_path, "r").read())
148
+ metadata_2, content_2 = kevin_notation.read(file_obj=file_obj)
149
+ assert len(file_obj.read()) > 0
150
+
139
151
  # 检验
140
- check_consistency(expected_metadata, metadata)
141
- check_consistency(expected_content, content)
152
+ check_consistency(expected_metadata, metadata, metadata_1, metadata_2)
153
+ check_consistency(expected_content, content, content_1, content_2)
142
154
 
143
155
 
144
156
  @pytest.mark.parametrize("expected_metadata, expected_content, file_path",
@@ -1,4 +1,4 @@
1
- from kevin_toolbox.math.utils import spilt_integer_most_evenly
1
+ from kevin_toolbox.math.utils import split_integer_most_evenly
2
2
 
3
3
 
4
4
  def generate_table(content_s, orientation="vertical", chunk_nums=None, chunk_size=None, b_allow_misaligned_values=False,
@@ -60,7 +60,7 @@ def generate_table(content_s, orientation="vertical", chunk_nums=None, chunk_siz
60
60
  # 按照 chunk_nums 或者 chunk_size 对表格进行分割
61
61
  if chunk_nums is not None or chunk_size is not None:
62
62
  if chunk_nums is not None:
63
- split_len_ls = spilt_integer_most_evenly(x=max_length, group_nums=chunk_nums)
63
+ split_len_ls = split_integer_most_evenly(x=max_length, group_nums=chunk_nums)
64
64
  else:
65
65
  split_len_ls = [chunk_size] * (max_length // chunk_size)
66
66
  if max_length % chunk_size != 0:
@@ -2,4 +2,4 @@ from .get_function_table_for_array_and_tensor import get_function_table_for_arra
2
2
  from .convert_dtype import convert_dtype
3
3
  from .get_crop_by_box import get_crop_by_box
4
4
  from .set_crop_by_box import set_crop_by_box
5
- from .spilt_integer_most_evenly import spilt_integer_most_evenly
5
+ from .split_integer_most_evenly import split_integer_most_evenly
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
2
 
3
3
 
4
- def spilt_integer_most_evenly(x, group_nums):
4
+ def split_integer_most_evenly(x, group_nums):
5
5
  assert isinstance(x, (int, np.integer,)) and x >= 0 and group_nums > 0
6
6
 
7
7
  res = np.ones(group_nums, dtype=int) * (x // group_nums)
@@ -10,4 +10,4 @@ def spilt_integer_most_evenly(x, group_nums):
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- print(spilt_integer_most_evenly(x=100, group_nums=7))
13
+ print(split_integer_most_evenly(x=100, group_nums=7))
@@ -1,3 +1,4 @@
1
1
  from .write import write
2
2
  from .read import read
3
3
  from .enum_variable import Strictness_Level
4
+ from .saved_node_name_builder import Saved_Node_Name_Builder
@@ -29,13 +29,15 @@ def read(input_path, **kwargs):
29
29
 
30
30
  # 读取 var
31
31
  var = json_.read(file_path=os.path.join(input_path, "var.json"), b_use_suggested_converter=True)
32
+ # 读取 record
33
+ record_s = dict()
34
+ if os.path.isfile(os.path.join(input_path, "record.json")):
35
+ record_s = json_.read(file_path=os.path.join(input_path, "record.json"), b_use_suggested_converter=True)
32
36
 
33
37
  # 读取被处理的节点
34
38
  processed_nodes = []
35
- if os.path.isfile(os.path.join(input_path, "record.json")):
36
- for name, value in ndl.get_nodes(
37
- var=json_.read(file_path=os.path.join(input_path, "record.json"),
38
- b_use_suggested_converter=True)["processed"], level=-1, b_strict=True):
39
+ if record_s:
40
+ for name, value in ndl.get_nodes(var=record_s["processed"], level=-1, b_strict=True):
39
41
  if value:
40
42
  processed_nodes.append(name)
41
43
  else:
@@ -56,6 +58,11 @@ def read(input_path, **kwargs):
56
58
  bk = SERIALIZER_BACKEND.get(name=value.pop("backend"))(folder=os.path.join(input_path, "nodes"))
57
59
  ndl.set_value(var=var, name=name, value=bk.read(**value))
58
60
 
61
+ #
62
+ if record_s.get("b_keep_identical_relations", False):
63
+ from kevin_toolbox.nested_dict_list import value_parser
64
+ var = value_parser.replace_identical_with_reference(var=var, flag="same", b_reverse=True)
65
+
59
66
  #
60
67
  if temp_dir is not None:
61
68
  for_os.remove(path=temp_dir, ignore_errors=True)
@@ -0,0 +1,31 @@
1
+ class Saved_Node_Name_Builder:
2
+ """
3
+ 生成保存节点内容时的文件夹/文件名称
4
+ """
5
+
6
+ def __init__(self, format_):
7
+ try:
8
+ temp = format_.format(**{k: k + "_" * 3 for k in {"raw_name", "id", "hash_name", "count"}})
9
+ assert len(temp) > len(format_)
10
+ except:
11
+ raise ValueError(f'invalid saved_node_name_format {format_}')
12
+
13
+ self.format_ = format_
14
+ self.count = 0
15
+
16
+ def __call__(self, name, value):
17
+ from kevin_toolbox.nested_dict_list import get_hash
18
+
19
+ res = self.format_.format(
20
+ **{"raw_name": name, "id": id(value), "hash_name": get_hash(name, length=12), "count": self.count})
21
+ self.count += 1
22
+ return res
23
+
24
+
25
+ if __name__ == '__main__':
26
+ bd = Saved_Node_Name_Builder(format_="{raw_name}_{count}_{hash_name}_{id}")
27
+ print(bd(":a@0", 1))
28
+ print(bd(":b:c", []))
29
+
30
+ # bd = Saved_Node_Name_Builder(format_="")
31
+ # bd = Saved_Node_Name_Builder(format_="{raw_name2}_{count}")