kevin-toolbox-dev 1.3.9__tar.gz → 1.4.0__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 (361) hide show
  1. kevin-toolbox-dev-1.4.0/PKG-INFO +83 -0
  2. kevin-toolbox-dev-1.4.0/README.md +62 -0
  3. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/__init__.py +2 -2
  4. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/__init__.py +6 -0
  5. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/__init__.py +2 -0
  6. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/find_links.py +84 -0
  7. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +10 -0
  8. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/__init__.py +6 -0
  9. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +2 -0
  10. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/complete_to_matrix.py +106 -0
  11. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/parse_table.py → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +16 -41
  12. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +51 -0
  13. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/find_tables.py +111 -0
  14. {kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table}/generate_table.py +14 -55
  15. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/get_format.py +15 -0
  16. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +22 -0
  17. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/table/variable.py +29 -0
  18. kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +1 -0
  19. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +5 -3
  20. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +2 -0
  21. kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +3 -0
  22. kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show.py +10 -0
  23. kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +40 -0
  24. kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +81 -0
  25. kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  26. kevin-toolbox-dev-1.4.0/kevin_toolbox_dev.egg-info/PKG-INFO +83 -0
  27. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/SOURCES.txt +20 -6
  28. kevin-toolbox-dev-1.3.9/PKG-INFO +0 -53
  29. kevin-toolbox-dev-1.3.9/README.md +0 -32
  30. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -6
  31. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/find_tables.py +0 -65
  32. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -8
  33. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/variable.py +0 -17
  34. kevin-toolbox-dev-1.3.9/kevin_toolbox_dev.egg-info/PKG-INFO +0 -53
  35. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/__init__.py +0 -0
  36. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  37. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  38. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  39. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  40. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  41. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  42. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  43. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  44. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  45. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  46. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  47. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  48. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  49. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  50. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  51. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  52. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  53. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  54. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  55. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  56. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  57. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  58. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  59. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  60. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  61. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  62. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  63. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  65. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  66. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  67. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  68. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  69. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  70. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  71. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  72. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  73. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  74. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  75. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  76. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
  77. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  78. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  79. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  80. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  81. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  82. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  83. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  84. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  85. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  86. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
  87. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  88. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  89. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  90. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  91. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  92. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  93. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  95. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/dangerous/__init__.py +0 -0
  96. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  97. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/__init__.py +0 -0
  98. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  99. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  100. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  101. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  102. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  103. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  104. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  105. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  106. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  107. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  108. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  109. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
  110. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  111. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  112. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  113. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
  114. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  115. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  116. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
  117. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  118. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
  119. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  120. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  121. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  122. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  123. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  124. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  125. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  126. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  127. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  128. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  129. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  130. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +0 -0
  131. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  132. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  133. {kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown → kevin-toolbox-dev-1.4.0/kevin_toolbox/data_flow/file/markdown/utils}/save_images_in_ndl.py +0 -0
  134. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/__init__.py +0 -0
  135. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  136. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  137. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  138. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  139. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  140. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  141. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  142. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  143. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  144. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  145. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  146. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  147. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  148. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  149. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  150. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  151. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  152. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  153. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  154. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  155. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  156. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/developing/test.py +0 -0
  157. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/__init__.py +0 -0
  158. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  159. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  160. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/test/__init__.py +0 -0
  161. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/test/test_version.py +0 -0
  162. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/__init__.py +0 -0
  163. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  164. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  165. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  166. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/__init__.py +0 -0
  167. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  168. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  169. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  170. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  171. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  172. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  173. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  174. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  175. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  176. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  177. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  178. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  179. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/__init__.py +0 -0
  180. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  181. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  182. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  183. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  184. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  186. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  187. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  188. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  189. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  190. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  191. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  192. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  193. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  194. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  195. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  196. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  197. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  198. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  199. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  200. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  201. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  202. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  203. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  204. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  205. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  206. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  207. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  208. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/__init__.py +0 -0
  209. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/__init__.py +0 -0
  210. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  211. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  212. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  213. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  214. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  215. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  216. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  217. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  218. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  219. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  220. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  221. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  222. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  223. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  224. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  225. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  226. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  227. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  228. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  229. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  230. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  231. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/cache.py +0 -0
  232. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  233. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  234. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  235. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  236. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  237. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  238. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  239. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/__init__.py +0 -0
  240. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  241. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  242. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  243. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  244. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  245. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/__init__.py +0 -0
  246. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  247. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  248. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  249. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  250. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
  251. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  252. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  253. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  254. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  255. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  256. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  257. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  258. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  259. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  260. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  261. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  262. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  263. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  264. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  265. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  266. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  267. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  268. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  269. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  270. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  271. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  272. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  273. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  274. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
  275. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
  276. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  277. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
  278. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  279. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  280. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  281. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  282. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  283. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  284. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  285. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  286. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
  287. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/__init__.py +0 -0
  288. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  289. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  290. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  291. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  292. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  293. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  294. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
  295. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
  296. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
  297. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
  298. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
  299. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
  300. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +0 -0
  301. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
  302. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
  303. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
  304. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
  305. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  306. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  307. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  308. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  309. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  310. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  311. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  312. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
  313. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  314. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  315. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  316. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  317. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  318. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  319. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  320. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  321. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  322. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  323. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  324. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  325. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  326. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  327. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  328. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  329. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  330. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/copy.py +0 -0
  331. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
  332. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/pack.py +0 -0
  333. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
  334. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
  335. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
  336. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/remove.py +0 -0
  337. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  338. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_os/walk.py +0 -0
  339. {kevin-toolbox-dev-1.3.9/kevin_toolbox/patches/for_torch → kevin-toolbox-dev-1.4.0/kevin_toolbox/patches/for_streamlit}/__init__.py +0 -0
  340. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  341. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  342. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  343. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  344. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  345. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  346. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  347. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  348. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  349. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  350. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  351. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  352. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  353. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  354. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  355. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  356. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  357. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  358. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  359. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/pyproject.toml +0 -0
  360. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/setup.cfg +0 -0
  361. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.0}/setup.py +0 -0
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.1
2
+ Name: kevin-toolbox-dev
3
+ Version: 1.4.0
4
+ Summary: 一个常用的工具代码包集合
5
+ Home-page: https://github.com/cantbeblank96/kevin_toolbox
6
+ Download-URL: https://github.com/username/your-package/archive/refs/tags/v1.0.0.tar.gz
7
+ Author: kevin hsu
8
+ Author-email: xukaiming1996@163.com
9
+ License: MIT
10
+ Keywords: mathematics,pytorch,numpy,machine-learning,algorithm
11
+ Platform: UNKNOWN
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Requires-Python: >=3.6
16
+ Description-Content-Type: text/markdown
17
+ Provides-Extra: plot
18
+ Provides-Extra: rest
19
+
20
+ # kevin_toolbox
21
+
22
+ 一个通用的工具代码包集合
23
+
24
+
25
+
26
+ 环境要求
27
+
28
+ ```shell
29
+ numpy>=1.19
30
+ pytorch>=1.2
31
+ ```
32
+
33
+ 安装方法:
34
+
35
+ ```shell
36
+ pip install kevin-toolbox --no-dependencies
37
+ ```
38
+
39
+
40
+
41
+ [项目地址 Repo](https://github.com/cantbeblank96/kevin_toolbox)
42
+
43
+ [使用指南 User_Guide](./notes/User_Guide.md)
44
+
45
+ [免责声明 Disclaimer](./notes/Disclaimer.md)
46
+
47
+ [版本更新记录](./notes/Release_Record.md):
48
+
49
+ - v 1.4.0 (2024-09-11)【bug fix】【new feature】【incompatible change】
50
+ - patches
51
+ - for_matplotlib.common_charts
52
+ - 【bug fix】fix bug in plot_confusion_matrix() for paras label_to_value_s,删除了对参数 label_to_value_s 的不合理的检验,并且支持更加自由的 label_to_value_s 设置,比如允许 label_to_value_s 中缺少 data_s 中已有的 label_idx,或者含有部分 data_s 中未见的 label_idx。
53
+ - 【bug fix】fix bug in plot_lines(),对接受的输入 data_s 进行 copy,避免后续操作引起输入意外改变。
54
+ - 增加测试用例。
55
+ - for_streamlit.markdown
56
+ - 【new feature】add show_image(),对 st.markdown 中图片显示部分的改进,能够正确显示本地的图片。
57
+ - 【new feature】add show_table(),对 st.markdown 中表格显示部分的改进,支持以下多种方式来显示表格。
58
+ - 【new feature】add show(),st.markdown 的改进版。
59
+ - 增加测试用例。
60
+ - data_flow.file
61
+ - markdown【incompatible change】【new feature】
62
+ - 【refactor and modify】
63
+ - generate_table() ==> table.generate_table()
64
+ - generate_link() ==> link.generate_link()
65
+ - save_images_in_ndl() ==> utils.save_images_in_ndl()
66
+ - parse_table() ,可以使用 table.convert_format() 来代替实现表格格式的转换
67
+ - table
68
+ - 【new feature】新增 Table_Format、get_format()、convert_format() 用于表格格式的转换,目前支持以下几种格式:
69
+ - simple_dict 简易字典模式:`{<title>: <list of value>, ...}`
70
+ - complete_dict 完整字典模式:`{<index>: {"title": <title>, "values": <list of value>}, ...}`
71
+ - matrix 矩阵形式:`{"matrix": [[...], [...], ...], "orientation":...(, "chunk_nums":..., "chunk_size":...)}`
72
+ - 【new feature】add find_tables(),查找文本中的表格
73
+ - 当 b_compact_format 设为 True,此时返回 table_ls,其中每个元素是一个 MATRIX 格式的表格
74
+ - 当 b_compact_format 设置为 False,此时返回 (table_ls, part_slices_ls, table_idx_ls),其中 part_slices_ls 是表格和表格前后文本在 text 中对应的 slice,而 table_idx_ls 指出了 part_slices_ls 中第几个元素对应的是表格,table_idx_ls 与 table_ls 依次对应。
75
+ - 【new feature】add padding_misaligned_values(), 将标题下长度不相等的 values 补齐
76
+ - convert
77
+ - 格式转换相关的函数,包括 complete_to_matrix() 和 matrix_to_complete()
78
+ - link
79
+ - 【new feature】add find_links(),查找文本中的链接。与find_tables()类似,也支持 b_compact_format 参数。
80
+ - 增加测试用例。
81
+
82
+
83
+
@@ -0,0 +1,62 @@
1
+ # kevin_toolbox
2
+
3
+ 一个通用的工具代码包集合
4
+
5
+
6
+
7
+ 环境要求
8
+
9
+ ```shell
10
+ numpy>=1.19
11
+ pytorch>=1.2
12
+ ```
13
+
14
+ 安装方法:
15
+
16
+ ```shell
17
+ pip install kevin-toolbox --no-dependencies
18
+ ```
19
+
20
+
21
+
22
+ [项目地址 Repo](https://github.com/cantbeblank96/kevin_toolbox)
23
+
24
+ [使用指南 User_Guide](./notes/User_Guide.md)
25
+
26
+ [免责声明 Disclaimer](./notes/Disclaimer.md)
27
+
28
+ [版本更新记录](./notes/Release_Record.md):
29
+
30
+ - v 1.4.0 (2024-09-11)【bug fix】【new feature】【incompatible change】
31
+ - patches
32
+ - for_matplotlib.common_charts
33
+ - 【bug fix】fix bug in plot_confusion_matrix() for paras label_to_value_s,删除了对参数 label_to_value_s 的不合理的检验,并且支持更加自由的 label_to_value_s 设置,比如允许 label_to_value_s 中缺少 data_s 中已有的 label_idx,或者含有部分 data_s 中未见的 label_idx。
34
+ - 【bug fix】fix bug in plot_lines(),对接受的输入 data_s 进行 copy,避免后续操作引起输入意外改变。
35
+ - 增加测试用例。
36
+ - for_streamlit.markdown
37
+ - 【new feature】add show_image(),对 st.markdown 中图片显示部分的改进,能够正确显示本地的图片。
38
+ - 【new feature】add show_table(),对 st.markdown 中表格显示部分的改进,支持以下多种方式来显示表格。
39
+ - 【new feature】add show(),st.markdown 的改进版。
40
+ - 增加测试用例。
41
+ - data_flow.file
42
+ - markdown【incompatible change】【new feature】
43
+ - 【refactor and modify】
44
+ - generate_table() ==> table.generate_table()
45
+ - generate_link() ==> link.generate_link()
46
+ - save_images_in_ndl() ==> utils.save_images_in_ndl()
47
+ - parse_table() ,可以使用 table.convert_format() 来代替实现表格格式的转换
48
+ - table
49
+ - 【new feature】新增 Table_Format、get_format()、convert_format() 用于表格格式的转换,目前支持以下几种格式:
50
+ - simple_dict 简易字典模式:`{<title>: <list of value>, ...}`
51
+ - complete_dict 完整字典模式:`{<index>: {"title": <title>, "values": <list of value>}, ...}`
52
+ - matrix 矩阵形式:`{"matrix": [[...], [...], ...], "orientation":...(, "chunk_nums":..., "chunk_size":...)}`
53
+ - 【new feature】add find_tables(),查找文本中的表格
54
+ - 当 b_compact_format 设为 True,此时返回 table_ls,其中每个元素是一个 MATRIX 格式的表格
55
+ - 当 b_compact_format 设置为 False,此时返回 (table_ls, part_slices_ls, table_idx_ls),其中 part_slices_ls 是表格和表格前后文本在 text 中对应的 slice,而 table_idx_ls 指出了 part_slices_ls 中第几个元素对应的是表格,table_idx_ls 与 table_ls 依次对应。
56
+ - 【new feature】add padding_misaligned_values(), 将标题下长度不相等的 values 补齐
57
+ - convert
58
+ - 格式转换相关的函数,包括 complete_to_matrix() 和 matrix_to_complete()
59
+ - link
60
+ - 【new feature】add find_links(),查找文本中的链接。与find_tables()类似,也支持 b_compact_format 参数。
61
+ - 增加测试用例。
62
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.3.9"
1
+ __version__ = "1.4.0"
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 1739091416 --verbose 0'
15
+ f'--expiration_timestamp 1741603427 --verbose 0'
16
16
  )
@@ -0,0 +1,6 @@
1
+ from .generate_list import generate_list
2
+ from .table import generate_table
3
+ from .link import generate_link
4
+ from .utils import save_images_in_ndl
5
+ #
6
+ from . import link, table
@@ -0,0 +1,2 @@
1
+ from .find_links import find_links
2
+ from .generate_link import generate_link
@@ -0,0 +1,84 @@
1
+ import re
2
+
3
+
4
+ def find_links(text, b_compact_format=True, type_ls=None):
5
+ """
6
+ 查找文本中的链接
7
+
8
+ 参数:
9
+ text: <str> 文本
10
+ b_compact_format: <bool> 是否只返回 link 部分
11
+ 默认为 True,此时返回 link_ls,其中每个元素是一个链接
12
+ 当设置为 False,此时返回 (link_ls, part_slices_ls, link_idx_ls),
13
+ 其中 part_slices_ls 是链接和链接前后文本在 text 中对应的 slice,
14
+ 而 link_idx_ls 指出了 part_slices_ls 中第几个元素对应的是链接,
15
+ link_idx_ls 与 link_ls 依次对应。
16
+ type_ls: <list of str> 找出哪种类型的链接
17
+ 默认为 None,此时表示找出所有类型的链接。
18
+ 支持以下取值:
19
+ "url", "image"
20
+ """
21
+
22
+ matches = re.finditer(r'\[(.*?)\]\((.*?)(?:\s*["\'](.*?)["\'])?\)', text, re.DOTALL)
23
+
24
+ link_ls = []
25
+ part_slices_ls = []
26
+ link_idx_ls = []
27
+ start = 0
28
+ for match in matches:
29
+ link_start, link_end = match.start(), match.end()
30
+ #
31
+ if text[link_start - 1] == "!":
32
+ type_ = "image"
33
+ link_start -= 1
34
+ else:
35
+ type_ = "url"
36
+ #
37
+ if type_ls is not None and type_ not in type_ls:
38
+ continue
39
+ #
40
+ part_slices_ls.append([start, link_start])
41
+ # 图片本身
42
+ link_s = dict(
43
+ type_=type_,
44
+ name=match.group(1),
45
+ target=match.group(2),
46
+ title=match.group(3) if match.group(3) else None
47
+ )
48
+ link_idx_ls.append(len(part_slices_ls))
49
+ link_ls.append(link_s)
50
+ part_slices_ls.append([link_start, link_end])
51
+ # 更新起始位置
52
+ start = match.end()
53
+
54
+ last = text[start:]
55
+ if last:
56
+ part_slices_ls.append([start, len(text)])
57
+
58
+ if b_compact_format:
59
+ return link_ls
60
+ else:
61
+ return link_ls, part_slices_ls, link_idx_ls
62
+
63
+
64
+ if __name__ == "__main__":
65
+ markdown_text = """
66
+ Here is an image:
67
+ ![This is a picture of a cat](http://example.com/cat.jpg "A cute cat")
68
+ And another one:
69
+ ![This is a picture of a dog](http://example.com/dog.jpg 'A cute dog')
70
+ And one without alt text:
71
+ [](http://example.com/placeholder.jpg)
72
+ And one without title:
73
+ ![<image_name>](<image_path>)
74
+ """
75
+ from kevin_toolbox.data_flow.file import markdown
76
+
77
+ print(markdown.generate_list(find_links(text=markdown_text, b_compact_format=True)))
78
+
79
+ link_ls_, part_slices_ls_, link_idx_ls_ = find_links(text=markdown_text, b_compact_format=False, type_ls=["url"])
80
+
81
+ print(link_ls_)
82
+ for part_slices in part_slices_ls_:
83
+ print(part_slices)
84
+ print(markdown_text[part_slices[0]:part_slices[1]])
@@ -0,0 +1,10 @@
1
+ def generate_link(name, target, title=None, type_="url"):
2
+ assert type_ in ["url", "image"]
3
+ if title is not None:
4
+ target = f'{target} "{title}"'
5
+ return f'{"!" if type_ == "image" else ""}[{name}]({target})'
6
+
7
+
8
+ if __name__ == '__main__':
9
+ print(generate_link(name=444, target="233", type_="url"))
10
+ print(generate_link(name=444, target="233", type_="image", title="233"))
@@ -0,0 +1,6 @@
1
+ from .variable import Table_Format
2
+ from .get_format import get_format
3
+ from .padding_misaligned_values import padding_misaligned_values
4
+ from .convert_format import convert_format
5
+ from .find_tables import find_tables
6
+ from .generate_table import generate_table
@@ -0,0 +1,2 @@
1
+ from .matrix_to_complete import matrix_to_complete
2
+ from .complete_to_matrix import complete_to_matrix
@@ -0,0 +1,106 @@
1
+ from kevin_toolbox.math.utils import split_integer_most_evenly
2
+ from kevin_toolbox.data_flow.file.markdown.table import Table_Format, get_format, padding_misaligned_values
3
+
4
+
5
+ def complete_to_matrix(content_s, orientation="vertical", chunk_nums=None, chunk_size=None):
6
+ """
7
+ 生成表格
8
+
9
+ 参数:
10
+ content_s: <dict> 内容
11
+ 目前支持 Table_Format 中的两种输入模式:
12
+ 1.简易模式:
13
+ content_s = {<title>: <list of value>, ...}
14
+ 此时键作为标题,值作为标题下的一系列值。
15
+ 由于字典的无序性,此时标题的顺序是不能保证的,若要额外指定顺序,请使用下面的 完整模式。
16
+ 2. 完整模式:
17
+ content_s = {<index>: {"title": <title>,"values":<list of value>}, ...}
18
+ 此时将取第 <index> 个 "title" 的值来作为第 <index> 个标题的值。values 同理。
19
+ 该模式允许缺省某些 <index>,此时这些 <index> 对应的行/列将全部置空。
20
+ orientation: <str> 表格的方向
21
+ 支持以下值:
22
+ "vertical" / "v": 纵向排列,亦即标题在第一行
23
+ "horizontal" / "h": 横向排列,亦即标题在第一列
24
+ chunk_nums: <int> 将表格平均分割为多少份进行并列显示。
25
+ chunk_size: <int> 将表格按照最大长度进行分割,然后并列显示。
26
+ 注意:以上两个参数只能设置一个,同时设置时将报错
27
+ """
28
+ # 检验参数
29
+ assert chunk_nums is None or 1 <= chunk_nums
30
+ assert chunk_size is None or 1 <= chunk_size
31
+ assert orientation in ["vertical", "horizontal", "h", "v"]
32
+ assert get_format(content_s) is Table_Format.COMPLETE_DICT
33
+
34
+ # 当不同标题下的 values 的长度不相等时,先使用 padding_misaligned_values() 来进行对齐
35
+ content_s = padding_misaligned_values(content_s=content_s, padding_value="")
36
+ max_length = len(list(content_s.values())[0]["values"])
37
+
38
+ # 补充缺省的 title
39
+ for i in range(max(content_s.keys()) + 1):
40
+ if i not in content_s:
41
+ content_s[i] = {"title": "", "values": [""] * max_length}
42
+ # 按照 chunk_nums 或者 chunk_size 对表格进行分割
43
+ if chunk_nums is not None or chunk_size is not None:
44
+ if chunk_nums is not None:
45
+ split_len_ls = split_integer_most_evenly(x=max_length, group_nums=chunk_nums)
46
+ else:
47
+ split_len_ls = [chunk_size] * (max_length // chunk_size)
48
+ if max_length % chunk_size != 0:
49
+ split_len_ls += [max_length % chunk_size]
50
+ max_length = max(split_len_ls)
51
+ temp = dict()
52
+ beg = 0
53
+ for i, new_length in enumerate(split_len_ls):
54
+ end = beg + new_length
55
+ temp.update({k + i * len(content_s): {"title": v["title"],
56
+ "values": v["values"][beg:end] + [""] * (max_length - new_length)} for
57
+ k, v in content_s.items()})
58
+ beg = end
59
+ content_s = temp
60
+
61
+ # 转换
62
+ row_ls = []
63
+ if orientation in ["vertical", "v"]:
64
+ row_ls.append([content_s[i]["title"] for i in range(len(content_s))])
65
+ for row in zip(*[content_s[i]["values"] for i in range(len(content_s))]):
66
+ row_ls.append(row)
67
+ else:
68
+ for i in range(len(content_s)):
69
+ row_ls.append([content_s[i]["title"]] + content_s[i]["values"])
70
+
71
+ return dict(matrix=row_ls, orientation=orientation, chunk_size=chunk_size, chunk_nums=chunk_nums,
72
+ b_remove_empty_lines=chunk_size is not None or chunk_nums is not None)
73
+
74
+
75
+ if __name__ == '__main__':
76
+ from kevin_toolbox.data_flow.file.markdown.table import convert_format
77
+
78
+ content_s = complete_to_matrix(
79
+ content_s=convert_format(
80
+ content_s={'y/n': ['False', 'False', 'False', 'False', 'False', 'True', 'True', 'True', 'True', 'True'],
81
+ 'a': ['5', '8', '7', '6', '9', '2', '1', '4', '0', '3'],
82
+ 'b': ['', '', '', '', '', '6', '4', ':', '2', '8']},
83
+ output_format=Table_Format.COMPLETE_DICT
84
+ ),
85
+ orientation="v", chunk_size=4
86
+ )
87
+
88
+
89
+ def _show_table(row_ls):
90
+ """
91
+ 生成表格文本
92
+
93
+ 参数:
94
+ row_ls: <list of row>
95
+ """
96
+ table = ""
97
+ for idx, row in enumerate(row_ls):
98
+ row = [f'{i}' for i in row]
99
+ table += "| " + " | ".join(row) + " |\n"
100
+ if idx == 0:
101
+ table += "| " + " | ".join(["---"] * len(row)) + " |\n"
102
+ return table
103
+
104
+
105
+ doc = _show_table(content_s["matrix"])
106
+ print(doc)
@@ -1,17 +1,9 @@
1
- import re
2
- from typing import Union
3
- from kevin_toolbox.data_flow.file.markdown.variable import Table_Format
4
-
5
-
6
- def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Format.COMPLETE_DICT, orientation="vertical",
7
- chunk_size=None, chunk_nums=None, b_remove_empty_lines=False, f_gen_order_of_values=None):
1
+ def matrix_to_complete(matrix, orientation, chunk_size=None, chunk_nums=None, b_remove_empty_lines=False):
8
2
  """
9
- 将二维数组形式的表格(比如find_tables()的返回列表的元素),解析成指定的格式
3
+ 将二维数组形式的 MATRIX 格式(比如find_tables()的返回列表的元素),转换成 COMPLETE_DICT 格式
10
4
 
11
5
  参数:
12
- raw_table: <list of list> 二维数组形式的表格
13
- output_format: <Table_Format or str> 目标格式
14
- 具体可以参考 Table_Format 的介绍
6
+ matrix: <list of row> 二维数组形式的表格
15
7
  orientation: <str> 解释表格时取哪个方向
16
8
  支持以下值:
17
9
  "vertical" / "v": 将第一行作为标题
@@ -22,35 +14,37 @@ def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Forma
22
14
  对解释表格无作用。但是当指定该参数时,将视为表格有可能是多个表格并列的情况,因此将尝试根据标题的重复规律,
23
15
  推断出对应的 chunk_nums,并最终将其拆分成多个表格。
24
16
  b_remove_empty_lines: <boolean> 移除空的行、列
25
- f_gen_order_of_values: <callable> 生成values排序顺序的函数
26
- 具体参考 generate_table() 中的对应参数
27
17
  """
28
- assert isinstance(raw_table, (list, tuple,))
18
+ # 检验参数
19
+ assert chunk_nums is None or 1 <= chunk_nums
20
+ assert chunk_size is None or 1 <= chunk_size
21
+ assert isinstance(matrix, (list, tuple,))
22
+ assert orientation in ["vertical", "horizontal", "h", "v"]
29
23
 
30
24
  # 转换为字典形式
31
25
  if orientation not in ["vertical", "v"]:
32
26
  # 需要转为垂直方向
33
- raw_table = list(zip(*raw_table))
34
- r_nums, c_nums = len(raw_table), len(raw_table[0])
27
+ matrix = list(zip(*matrix))
28
+ r_nums, c_nums = len(matrix), len(matrix[0])
35
29
  if chunk_size is not None:
36
30
  assert chunk_size == r_nums - 1, \
37
31
  (f'The number of values {r_nums - 1} actually contained in the table '
38
32
  f'does not match the specified chunk_size {chunk_size}')
39
- chunk_nums = c_nums // _find_shortest_repeating_pattern_size(arr=raw_table[0])
33
+ chunk_nums = c_nums // _find_shortest_repeating_pattern_size(arr=matrix[0])
40
34
  chunk_nums = 1 if chunk_nums is None else chunk_nums
41
35
  assert c_nums % chunk_nums == 0, \
42
36
  f'The number of headers actually contained in the table does not match the specified chunk_nums, ' \
43
37
  f'Expected n*{chunk_nums}, but got {c_nums}'
44
38
  # 解释出标题
45
- keys = raw_table[0][0:c_nums // chunk_nums]
39
+ keys = matrix[0][0:c_nums // chunk_nums]
46
40
  # 解释出值
47
41
  if chunk_nums == 1:
48
- values = raw_table[1:]
42
+ values = matrix[1:]
49
43
  else:
50
44
  values = []
51
45
  for i in range(chunk_nums):
52
46
  for j in range(1, r_nums):
53
- values.append(raw_table[j][i * len(keys):(i + 1) * len(keys)])
47
+ values.append(matrix[j][i * len(keys):(i + 1) * len(keys)])
54
48
  # 去除空行
55
49
  if b_remove_empty_lines:
56
50
  values = [line for line in values if any(i != '' for i in line)]
@@ -58,26 +52,6 @@ def parse_table(raw_table, output_format: Union[Table_Format, str] = Table_Forma
58
52
  # 去除空列
59
53
  if b_remove_empty_lines:
60
54
  table_s = {k: v_s for k, v_s in table_s.items() if v_s["title"] != '' and any(i != '' for i in v_s["values"])}
61
- # 对值进行排序
62
- if callable(f_gen_order_of_values):
63
- breakpoint()
64
- # 检查是否有重复的 title
65
- temp = [v["title"] for v in table_s.values()]
66
- assert len(set(temp)) == len(temp), \
67
- f'table has duplicate titles, thus cannot be sorted using f_gen_order_of_values'
68
- idx_ls = list(range(len(values)))
69
- idx_ls.sort(key=lambda x: f_gen_order_of_values({v["title"]: v["values"][x] for v in table_s.values()}))
70
- for v in table_s.values():
71
- v["values"] = [v["values"][i] for i in idx_ls]
72
-
73
- #
74
- if output_format is Table_Format.SIMPLE_DICT:
75
- temp = {v_s["title"] for v_s in table_s.values()}
76
- if len(temp) != len(set(temp)):
77
- raise AssertionError(
78
- f'There are columns with the same title in the table, '
79
- f'please check the orientation of the table or use output_format="complete_dict"')
80
- table_s = {v_s["title"]: v_s["values"] for v_s in table_s.values()}
81
55
 
82
56
  return table_s
83
57
 
@@ -105,6 +79,7 @@ def _find_shortest_repeating_pattern_size(arr):
105
79
 
106
80
  if __name__ == '__main__':
107
81
  from kevin_toolbox.data_flow.file.markdown import find_tables
82
+
108
83
  # # 示例Markdown表格文本
109
84
  # file_path = ""
110
85
  # with open(file_path, 'r') as f:
@@ -131,5 +106,5 @@ if __name__ == '__main__':
131
106
  table_ls = find_tables(text=markdown_text)
132
107
 
133
108
  # 调用函数并打印结果
134
- tables = parse_table(raw_table=table_ls[0], output_format="complete_dict", chunk_nums=3, b_remove_empty_lines=True)
109
+ tables = matrix_to_complete(matrix=table_ls[0], orientation="v", chunk_nums=3, b_remove_empty_lines=True)
135
110
  print(tables)
@@ -0,0 +1,51 @@
1
+ from kevin_toolbox.data_flow.file.markdown.table import Table_Format, get_format
2
+ from kevin_toolbox.data_flow.file.markdown.table.convert import matrix_to_complete, complete_to_matrix
3
+
4
+
5
+ def simple_to_complete(content_s):
6
+ return {i: {"title": k, "values": v} for i, (k, v) in enumerate(content_s.items())}
7
+
8
+
9
+ def complete_to_simple(content_s):
10
+ temp = {v_s["title"] for v_s in content_s.values()}
11
+ if len(temp) != len(set(temp)):
12
+ raise AssertionError(f'Fail to convert SIMPLE_DICT to COMPLETE_DICT, because there are some duplicate titles.')
13
+ content_s = {v_s["title"]: v_s["values"] for v_s in content_s.values()}
14
+ return content_s
15
+
16
+
17
+ CONVERT_PROCESS_S = {
18
+ (Table_Format.COMPLETE_DICT, Table_Format.SIMPLE_DICT): complete_to_simple, # (from, to): process
19
+ (Table_Format.COMPLETE_DICT, Table_Format.MATRIX): lambda x: complete_to_matrix(content_s=x),
20
+ (Table_Format.SIMPLE_DICT, Table_Format.COMPLETE_DICT): simple_to_complete,
21
+ (Table_Format.SIMPLE_DICT, Table_Format.MATRIX): lambda x: complete_to_matrix(content_s=simple_to_complete(x)),
22
+ (Table_Format.MATRIX, Table_Format.COMPLETE_DICT): lambda x: matrix_to_complete(**x),
23
+ (Table_Format.MATRIX, Table_Format.SIMPLE_DICT): lambda x: complete_to_simple(content_s=matrix_to_complete(**x))
24
+ }
25
+
26
+
27
+ def convert_format(content_s, output_format, input_format=None):
28
+ """
29
+ 在各种表格格式之间进行转换
30
+ !!注意!!这些转换虽然不会改变表格的内容,但是可能会导致格式信息的丢失
31
+
32
+ 参数:
33
+ content_s: <表格内容>
34
+ input_format: <str> 描述输入的格式。
35
+ 默认为 None,将根据 content_s 实际格式进行推断。
36
+ output_format: <str/list of str> 输出的目标格式。
37
+ 当输入是一个 tuple/list 时,将输出其中任一格式,具体规则为:
38
+ - 当 input_format 不在可选的输出格式中时,优先按照第一个输出格式进行转换
39
+ - 当 input_format 在可选的输出格式中时,不进行转换。
40
+ """
41
+ if input_format is None:
42
+ input_format = get_format(content_s=content_s)
43
+ input_format = Table_Format(input_format)
44
+ if not isinstance(output_format, (list, tuple,)):
45
+ output_format = [output_format]
46
+ output_format = [Table_Format(i) for i in output_format]
47
+
48
+ if input_format in output_format:
49
+ return content_s
50
+ else:
51
+ return CONVERT_PROCESS_S[(input_format, output_format[0])](content_s)
@@ -0,0 +1,111 @@
1
+ import re
2
+
3
+
4
+ def find_tables(text, b_compact_format=True):
5
+ """
6
+ 查找文本中的表格
7
+
8
+ 参数:
9
+ text: <str> 文本
10
+ b_compact_format: <bool> 是否只返回 table 部分
11
+ 默认为 True,此时返回 table_ls,其中每个元素是一个 MATRIX 格式的表格
12
+ 当设置为 False,此时返回 (table_ls, part_slices_ls, table_idx_ls),
13
+ 其中 part_slices_ls 是表格和表格前后文本在 text 中对应的 slice,
14
+ 而 table_idx_ls 指出了 part_slices_ls 中第几个元素对应的是表格,
15
+ table_idx_ls 与 table_ls 依次对应。
16
+ """
17
+ text = "\n\n" + text + "\n\n" # 前后使用哨兵包围
18
+ matches = re.finditer(r'\n{2,}', text, re.DOTALL)
19
+
20
+ table_ls = []
21
+ part_slices_ls = []
22
+ table_idx_ls = []
23
+ #
24
+ match = next(matches)
25
+ start, sub_start = match.start(), match.end()
26
+ assert sub_start - start >= 2
27
+ if sub_start - start > 2:
28
+ part_slices_ls.append([start + 2, sub_start])
29
+ start = sub_start
30
+ #
31
+ for match in matches:
32
+ sub_text = text[sub_start:match.start()]
33
+ ret = _find_table(text=sub_text)
34
+ if ret is not None:
35
+ if start != sub_start:
36
+ part_slices_ls.append([start, sub_start])
37
+ table_idx_ls.append(len(part_slices_ls))
38
+ table_ls.append(ret)
39
+ part_slices_ls.append([sub_start, match.start()])
40
+ start = match.start()
41
+ sub_start = match.end()
42
+ #
43
+ assert sub_start - start >= 2
44
+ if sub_start - start > 2:
45
+ part_slices_ls.append([start, sub_start - 2])
46
+ # 移除前面哨兵
47
+ part_slices_ls = [[i - 2, j - 2] for i, j in part_slices_ls]
48
+
49
+ if b_compact_format:
50
+ return table_ls
51
+ else:
52
+ return table_ls, part_slices_ls, table_idx_ls
53
+
54
+
55
+ def _find_table(text):
56
+ # 正则表达式匹配Markdown表格
57
+ table_pattern = re.compile(r'\|([^\n]+)\|', re.DOTALL)
58
+ table_matches = table_pattern.findall(text)
59
+ if len(table_matches) < 2:
60
+ # 因为一个合法的 markdown 表格需要含有表头的分隔线,所以行数至少应该为 2
61
+ return None
62
+
63
+ # 去除表头的分隔线
64
+ table_matches.pop(1)
65
+ #
66
+ tables = [] # 每个元素为一行
67
+ for match in table_matches:
68
+ # 分割每一行
69
+ tables.append([i.strip() for i in match.split('|', -1)])
70
+
71
+ return {"matrix": tables, "orientation": None}
72
+
73
+
74
+ if __name__ == '__main__':
75
+ # # 示例Markdown表格文本
76
+ # file_path = ""
77
+ # with open(file_path, 'r') as f:
78
+ # markdown_text = f.read()
79
+
80
+ markdown_text = """
81
+ | Name | Age | Occupation |
82
+ |------|-----|------------|
83
+ | Alice | 28 | Engineer |
84
+ | Bob | 23 | Teacher |
85
+ | Name | Age | Occupation |
86
+ | Carol | 32 | Hacker |
87
+ | David | 18 | Student |
88
+
89
+ 2333
90
+
91
+ | | a | b | | a | b | | a | b |
92
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
93
+ | | 0 | 2 | | 4 | 6 | | 7 | 9 |
94
+ | | 1 | 3 | | 5 | 7 | | 8 | : |
95
+ | | 2 | 4 | | 6 | 8 | | 9 | ; |
96
+ | | 3 | 5 | | | | | | |
97
+ """
98
+
99
+ # 调用函数并打印结果
100
+ tables = find_tables(text=markdown_text)
101
+ print(tables[0])
102
+ print(tables[1])
103
+
104
+ #
105
+ table_ls_, part_slices_ls_, table_idx_ls_ = find_tables(text=markdown_text, b_compact_format=False)
106
+ print(table_idx_ls_)
107
+
108
+ for part_slices in part_slices_ls_:
109
+ print(part_slices)
110
+ print(markdown_text[part_slices[0]:part_slices[1]])
111
+