kevin-toolbox-dev 1.3.9__tar.gz → 1.4.1__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 (359) hide show
  1. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/PKG-INFO +13 -4
  2. kevin-toolbox-dev-1.4.1/README.md +41 -0
  3. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/__init__.py +2 -2
  4. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/__init__.py +6 -0
  5. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/link/__init__.py +2 -0
  6. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/link/find_links.py +84 -0
  7. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/link/generate_link.py +10 -0
  8. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/__init__.py +6 -0
  9. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/convert/__init__.py +2 -0
  10. kevin-toolbox-dev-1.4.1/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.1/kevin_toolbox/data_flow/file/markdown/table/convert/matrix_to_complete.py +16 -41
  12. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/convert_format.py +51 -0
  13. kevin-toolbox-dev-1.4.1/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.1/kevin_toolbox/data_flow/file/markdown/table}/generate_table.py +14 -55
  15. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/get_format.py +15 -0
  16. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/padding_misaligned_values.py +22 -0
  17. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/table/variable.py +29 -0
  18. kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/utils/__init__.py +1 -0
  19. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_confusion_matrix.py +30 -6
  20. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_lines.py +2 -0
  21. kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_streamlit/markdown/__init__.py +3 -0
  22. kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_streamlit/markdown/show.py +10 -0
  23. kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_streamlit/markdown/show_image.py +40 -0
  24. kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_streamlit/markdown/show_table.py +82 -0
  25. kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_torch/__init__.py +0 -0
  26. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox_dev.egg-info/PKG-INFO +13 -4
  27. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox_dev.egg-info/SOURCES.txt +20 -6
  28. kevin-toolbox-dev-1.3.9/README.md +0 -32
  29. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/__init__.py +0 -6
  30. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/find_tables.py +0 -65
  31. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/generate_link.py +0 -8
  32. kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown/variable.py +0 -17
  33. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/__init__.py +0 -0
  34. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/__init__.py +0 -0
  35. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/__init__.py +0 -0
  36. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/__init__.py +0 -0
  37. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/cache_base.py +0 -0
  38. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/cache/memo_cache.py +0 -0
  39. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/cache_manager.py +0 -0
  40. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/__init__.py +0 -0
  41. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/fifo_strategy.py +0 -0
  42. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lfu_strategy.py +0 -0
  43. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lru_strategy.py +0 -0
  44. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/lst_strategy.py +0 -0
  45. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/strategy/strategy_base.py +0 -0
  46. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/test/__init__.py +0 -0
  47. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_builder.py +0 -0
  48. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_manager.py +0 -0
  49. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/test/test_cache_strategy.py +0 -0
  50. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/cache_manager/variable.py +0 -0
  51. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/__init__.py +0 -0
  52. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/get_subset_with_largest_product.py +0 -0
  53. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/__init__.py +0 -0
  54. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_get_subset_with_largest_product.py +0 -0
  55. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/test/test_zero_one_knapsack_problem.py +0 -0
  56. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/combinatorial_optimization/zero_one_knapsack_problem.py +0 -0
  57. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/execution_graph/__init__.py +0 -0
  58. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/execution_graph/jump_node.py +0 -0
  59. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/execution_graph/random_node.py +0 -0
  60. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/execution_graph/simple_node.py +0 -0
  61. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_dict/__init__.py +0 -0
  62. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_dict/deep_update.py +0 -0
  63. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_seq/__init__.py +0 -0
  64. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_seq/chunk_generator.py +0 -0
  65. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_seq/flatten_list.py +0 -0
  66. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/for_seq/get_subsets.py +0 -0
  67. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/locks/__init__.py +0 -0
  68. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/locks/mutex_lock.py +0 -0
  69. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/__init__.py +0 -0
  70. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/async_executor.py +0 -0
  71. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/parallel_and_concurrent/multi_thread_execute.py +0 -0
  72. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/pareto_front/__init__.py +0 -0
  73. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/pareto_front/get_pareto_points_idx.py +0 -0
  74. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/pareto_front/optimum_picker.py +0 -0
  75. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/registration/__init__.py +0 -0
  76. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/registration/registry.py +0 -0
  77. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/scheduler/__init__.py +0 -0
  78. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/scheduler/strategy_manager.py +0 -0
  79. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/scheduler/trigger.py +0 -0
  80. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/search/__init__.py +0 -0
  81. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/search/binary_search.py +0 -0
  82. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/__init__.py +0 -0
  83. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_base.py +0 -0
  84. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/accumulator_for_ndl.py +0 -0
  85. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/average_accumulator.py +0 -0
  86. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/exponential_moving_average.py +0 -0
  87. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/init_var/__init__.py +0 -0
  88. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_data_format.py +0 -0
  89. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/statistician/init_var/init_by_like.py +0 -0
  90. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/algorithm/utils/__init__.py +0 -0
  91. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/data_structure/__init__.py +0 -0
  92. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/computer_science/data_structure/executor.py +0 -0
  93. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/dangerous/__init__.py +0 -0
  94. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/dangerous/dump_into_pickle_with_executor_attached.py +0 -0
  95. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/__init__.py +0 -0
  96. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/__init__.py +0 -0
  97. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/cache/__init__.py +0 -0
  98. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/cache/cache_manager_for_iterator.py +0 -0
  99. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/cache/test/__init__.py +0 -0
  100. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/cache/test/test_cache_manager_for_iterator.py +0 -0
  101. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/reader/__init__.py +0 -0
  102. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/reader/file_iterative_reader.py +0 -0
  103. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/reader/unified_reader.py +0 -0
  104. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/core/reader/unified_reader_base.py +0 -0
  105. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/__init__.py +0 -0
  106. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/__init__.py +0 -0
  107. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/__init__.py +0 -0
  108. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/convert_dict_key_to_number.py +0 -0
  109. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/convert_ndarray_to_list.py +0 -0
  110. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/escape_non_str_dict_key.py +0 -0
  111. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/escape_tuple_and_set.py +0 -0
  112. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/integrate.py +0 -0
  113. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/unescape_non_str_dict_key.py +0 -0
  114. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/converter/unescape_tuple_and_set.py +0 -0
  115. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/read_json.py +0 -0
  116. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/json_/write_json.py +0 -0
  117. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/__init__.py +0 -0
  118. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/converter.py +0 -0
  119. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_reader.py +0 -0
  120. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/kevin_notation_writer.py +0 -0
  121. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/read.py +0 -0
  122. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/__init__.py +0 -0
  123. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/__init__.py +0 -0
  124. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_0.py +0 -0
  125. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_1.py +0 -0
  126. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_data/data_all.py +0 -0
  127. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation.py +0 -0
  128. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/test/test_kevin_notation_debug.py +0 -0
  129. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/kevin_notation/write.py +0 -0
  130. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/data_flow/file/markdown/generate_list.py +0 -0
  131. {kevin-toolbox-dev-1.3.9/kevin_toolbox/data_flow/file/markdown → kevin-toolbox-dev-1.4.1/kevin_toolbox/data_flow/file/markdown/utils}/save_images_in_ndl.py +0 -0
  132. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/__init__.py +0 -0
  133. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/decorator/__init__.py +0 -0
  134. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/decorator/restore_original_work_path.py +0 -0
  135. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/__init__.py +0 -0
  136. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/__init__.py +0 -0
  137. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/consumer.py +0 -0
  138. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/for_cvf.py +0 -0
  139. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/getter.py +0 -0
  140. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/graph.py +0 -0
  141. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/node.py +0 -0
  142. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/producer.py +0 -0
  143. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/producer_consumer/sender.py +0 -0
  144. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/singleton/__init__.py +0 -0
  145. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/design_pattern/singleton/singleton_for_uid.py +0 -0
  146. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/general_matrix_multiplication.py +0 -0
  147. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/numerical_characteristics/__init__.py +0 -0
  148. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/numerical_characteristics/iou.py +0 -0
  149. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/temperate/__init__.py +0 -0
  150. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/temperate/iterator_base.py +0 -0
  151. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/temperate/my_iterator.py +0 -0
  152. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/temperate/my_iterator_base.py +0 -0
  153. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/temperate/sequence_map_base.py +0 -0
  154. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/developing/test.py +0 -0
  155. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/__init__.py +0 -0
  156. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/check_validity_and_uninstall.py +0 -0
  157. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/check_version_and_update.py +0 -0
  158. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/test/__init__.py +0 -0
  159. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/test/test_version.py +0 -0
  160. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/version/__init__.py +0 -0
  161. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/version/compare_version.py +0 -0
  162. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/version/parse_version.py +0 -0
  163. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/env_info/version/sort_version_ls.py +0 -0
  164. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/__init__.py +0 -0
  165. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/__init__.py +0 -0
  166. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/__old_version/__init__.py +0 -0
  167. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/__old_version/cal_iou_between_box.py +0 -0
  168. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/boolean_algebra_for_boxes.py +0 -0
  169. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/cal_area_of_boxes.py +0 -0
  170. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/cal_iou_between_boxes.py +0 -0
  171. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/convert_boxes_from_coord_to_grid_index.py +0 -0
  172. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/detect_collision.py +0 -0
  173. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/detect_collision_among_boxes_ls.py +0 -0
  174. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/detect_collision_inside_boxes.py +0 -0
  175. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/detect_overlap.py +0 -0
  176. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/geometry/for_boxes/get_ticks_of_boxes.py +0 -0
  177. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/__init__.py +0 -0
  178. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/__init__.py +0 -0
  179. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/__init__.py +0 -0
  180. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/analysis/__init__.py +0 -0
  181. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/analysis/get_fail_case_from_iterator.py +0 -0
  182. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/dummy/__init__.py +0 -0
  183. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/dummy/dummy_data.py +0 -0
  184. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/__init__.py +0 -0
  185. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/build_generator.py +0 -0
  186. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/build_iterator.py +0 -0
  187. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/factory.py +0 -0
  188. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/__init__.py +0 -0
  189. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_axis.py +0 -0
  190. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/along_diagonal.py +0 -0
  191. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_all.py +0 -0
  192. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__by_block/of_triangle.py +0 -0
  193. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/__init__.py +0 -0
  194. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_block.py +0 -0
  195. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/get_executor_ls/by_samples.py +0 -0
  196. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/dataset/face/verification/merge.py +0 -0
  197. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/__init__.py +0 -0
  198. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/__init__.py +0 -0
  199. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/__init__.py +0 -0
  200. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/accumulator_for_cfm.py +0 -0
  201. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm.py +0 -0
  202. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_cfm_iteratively_by_chunk.py +0 -0
  203. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/cal_tpr_and_fpr.py +0 -0
  204. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/convert.py +0 -0
  205. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/machine_learning/statistician/binary_classification/confusion_matrices/merge_cfm_ls.py +0 -0
  206. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/__init__.py +0 -0
  207. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/__init__.py +0 -0
  208. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/concat_and_split/__init__.py +0 -0
  209. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/concat_and_split/computational_tree.py +0 -0
  210. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/concat_and_split/concat_crops_into_whole.py +0 -0
  211. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/concat_and_split/split_whole_into_crops.py +0 -0
  212. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/__init__.py +0 -0
  213. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/convert/__init__.py +0 -0
  214. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/convert/convert_format.py +0 -0
  215. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/generate/__init__.py +0 -0
  216. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/generate/generate_integrated_api.py +0 -0
  217. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/generate/generate_shuffled_index_ls.py +0 -0
  218. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/generate/generate_z_pattern_indices_ls.py +0 -0
  219. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/coordinates/generate/normal_indices_generator.py +0 -0
  220. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/reshape/__init__.py +0 -0
  221. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/reshape/flatten_along_pattern.py +0 -0
  222. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/reshape/merge_blocks.py +0 -0
  223. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/reshape/split_blocks.py +0 -0
  224. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/reshape/unflatten_along_pattern.py +0 -0
  225. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/transpose/__init__.py +0 -0
  226. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/transpose/get_inverse_of_transpose_index_ls.py +0 -0
  227. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/dimension/transpose/transpose_inside_axis.py +0 -0
  228. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/__init__.py +0 -0
  229. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/cache.py +0 -0
  230. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/get_greatest_common_divisor.py +0 -0
  231. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/get_primes.py +0 -0
  232. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/prime_factorization.py +0 -0
  233. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/test/__init__.py +0 -0
  234. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/test/test_get_greatest_common_divisor.py +0 -0
  235. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/test/test_get_primes.py +0 -0
  236. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/number_theory/test/test_prime_factorization.py +0 -0
  237. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/__init__.py +0 -0
  238. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/dct/__init__.py +0 -0
  239. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/dct/dct_calculator.py +0 -0
  240. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/dct/generate_dct_trans_matrix.py +0 -0
  241. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/scaling_and_shift/__init__.py +0 -0
  242. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/transform/scaling_and_shift/scaling.py +0 -0
  243. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/__init__.py +0 -0
  244. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/convert_dtype.py +0 -0
  245. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/get_crop_by_box.py +0 -0
  246. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/get_function_table_for_array_and_tensor.py +0 -0
  247. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/set_crop_by_box.py +0 -0
  248. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/math/utils/split_integer_most_evenly.py +0 -0
  249. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/__init__.py +0 -0
  250. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/copy_.py +0 -0
  251. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/count_leaf_node_nums.py +0 -0
  252. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/get_hash.py +0 -0
  253. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/get_nodes.py +0 -0
  254. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/get_value.py +0 -0
  255. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/name_handler/__init__.py +0 -0
  256. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/name_handler/build_name.py +0 -0
  257. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/name_handler/escape_node.py +0 -0
  258. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/name_handler/parse_name.py +0 -0
  259. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/__init__.py +0 -0
  260. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/__init__.py +0 -0
  261. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_json_.py +0 -0
  262. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_ndl.py +0 -0
  263. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_bin.py +0 -0
  264. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_numpy_npy.py +0 -0
  265. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_pickle_.py +0 -0
  266. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_all.py +0 -0
  267. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_skip_simple.py +0 -0
  268. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_all.py +0 -0
  269. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/_torch_tensor.py +0 -0
  270. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/backends/backend_base.py +0 -0
  271. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/enum_variable.py +0 -0
  272. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/read.py +0 -0
  273. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/saved_node_name_builder.py +0 -0
  274. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/variable.py +0 -0
  275. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/serializer/write.py +0 -0
  276. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/set_default.py +0 -0
  277. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/set_value.py +0 -0
  278. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/traverse.py +0 -0
  279. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/__init__.py +0 -0
  280. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/cal_relation_between_references.py +0 -0
  281. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/eval_references.py +0 -0
  282. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/parse_and_eval_references.py +0 -0
  283. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/parse_references.py +0 -0
  284. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/nested_dict_list/value_parser/replace_identical_with_reference.py +0 -0
  285. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/__init__.py +0 -0
  286. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_logging/__init__.py +0 -0
  287. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_logging/build_logger.py +0 -0
  288. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/__init__.py +0 -0
  289. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/add_trajectory_2d.py +0 -0
  290. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/add_trajectory_3d.py +0 -0
  291. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/arrow3d.py +0 -0
  292. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/clear_border_of_axes.py +0 -0
  293. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/color/__init__.py +0 -0
  294. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/color/color_format.py +0 -0
  295. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/color/convert_format.py +0 -0
  296. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/color/generate_color_list.py +0 -0
  297. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/color/get_format.py +0 -0
  298. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/__init__.py +0 -0
  299. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_bars.py +0 -0
  300. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_distribution.py +0 -0
  301. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters.py +0 -0
  302. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_matplotlib/common_charts/plot_scatters_matrix.py +0 -0
  303. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/__init__.py +0 -0
  304. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/linalg/__init__.py +0 -0
  305. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/linalg/cos_similar.py +0 -0
  306. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/linalg/entropy.py +0 -0
  307. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/linalg/normalize.py +0 -0
  308. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/linalg/softmax.py +0 -0
  309. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/random/__init__.py +0 -0
  310. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/random/get_rng.py +0 -0
  311. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/random/truncated_multivariate_normal.py +0 -0
  312. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/random/truncated_normal.py +0 -0
  313. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_numpy/random/variable.py +0 -0
  314. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/__init__.py +0 -0
  315. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/build_sampler.py +0 -0
  316. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/build_storage.py +0 -0
  317. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/build_study.py +0 -0
  318. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/copy_study.py +0 -0
  319. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/sample_from_feasible_domain.py +0 -0
  320. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/__init__.py +0 -0
  321. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_study/__init__.py +0 -0
  322. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_study/dump.py +0 -0
  323. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_study/load.py +0 -0
  324. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_trial/__init__.py +0 -0
  325. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_trial/dump.py +0 -0
  326. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_optuna/serialize/for_trial/load.py +0 -0
  327. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/__init__.py +0 -0
  328. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/copy.py +0 -0
  329. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/find_files_in_dir.py +0 -0
  330. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/pack.py +0 -0
  331. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/path/__init__.py +0 -0
  332. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/path/find_illegal_chars.py +0 -0
  333. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/path/replace_illegal_chars.py +0 -0
  334. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/remove.py +0 -0
  335. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/unpack.py +0 -0
  336. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_os/walk.py +0 -0
  337. {kevin-toolbox-dev-1.3.9/kevin_toolbox/patches/for_torch → kevin-toolbox-dev-1.4.1/kevin_toolbox/patches/for_streamlit}/__init__.py +0 -0
  338. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_test/__init__.py +0 -0
  339. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_test/check_consistency.py +0 -0
  340. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/__init__.py +0 -0
  341. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/concat.py +0 -0
  342. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/linalg/__init__.py +0 -0
  343. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/linalg/norm.py +0 -0
  344. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/linalg/svd.py +0 -0
  345. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/nn/__init__.py +0 -0
  346. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/nn/sequential.py +0 -0
  347. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/tile.py +0 -0
  348. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/compatible/where.py +0 -0
  349. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/math/__init__.py +0 -0
  350. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/math/get_y_at_x.py +0 -0
  351. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/math/my_around.py +0 -0
  352. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/nn/__init__.py +0 -0
  353. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox/patches/for_torch/nn/lambda_layer.py +0 -0
  354. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox_dev.egg-info/dependency_links.txt +0 -0
  355. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox_dev.egg-info/requires.txt +0 -0
  356. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/kevin_toolbox_dev.egg-info/top_level.txt +0 -0
  357. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/pyproject.toml +0 -0
  358. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/setup.cfg +0 -0
  359. {kevin-toolbox-dev-1.3.9 → kevin-toolbox-dev-1.4.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kevin-toolbox-dev
3
- Version: 1.3.9
3
+ Version: 1.4.1
4
4
  Summary: 一个常用的工具代码包集合
5
5
  Home-page: https://github.com/cantbeblank96/kevin_toolbox
6
6
  Download-URL: https://github.com/username/your-package/archive/refs/tags/v1.0.0.tar.gz
@@ -46,8 +46,17 @@ pip install kevin-toolbox --no-dependencies
46
46
 
47
47
  [版本更新记录](./notes/Release_Record.md):
48
48
 
49
- - v 1.3.9 (2024-08-13)【bug fix】【temporary version
50
- - computer_science.algorithm.registration
51
- - modify Registry.collect_from_paths() for python>=3.12,在更高版本的python的importlib中 find_module() 方法已被废弃和移除,因此需要替换为 find_spec() 方法。
49
+ - v 1.4.1 (2024-09-23)【bug fix】【new feature
50
+ - patches
51
+ - for_streamlit.markdown
52
+ - 【bug fix】fix bug in show_table(),将原来的使用 st.expander 去包裹表格,改为使用 st.tabs 去包裹表格,避免在 streamlit<=1.38.0 下(截止2024-09-23最新版本),因为 st.expander 嵌套使用而造成的报错。具体参看:https://docs.streamlit.io/develop/api-reference/layout/st.expander
53
+ - 【bug fix】fix bug in show_table(),修复在 line 56 和 line 25 中对 show_image() 和 st.markdown 的函数参数写错,导致在显示无图表格时反而报错的问题。
54
+ - 增加了测试用例。
55
+
56
+ - for_matplotlib.common_charts
57
+ - 【new feature】 add para replace_zero_division_with to plot_confusion_matrix(),新增参数 replace_zero_division_with 用于指定在normalize时引发除0错误的矩阵元素要使用何种值进行替代。
58
+ - 增加了测试用例。
59
+
60
+
52
61
 
53
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.4.1 (2024-09-23)【bug fix】【new feature】
31
+ - patches
32
+ - for_streamlit.markdown
33
+ - 【bug fix】fix bug in show_table(),将原来的使用 st.expander 去包裹表格,改为使用 st.tabs 去包裹表格,避免在 streamlit<=1.38.0 下(截止2024-09-23最新版本),因为 st.expander 嵌套使用而造成的报错。具体参看:https://docs.streamlit.io/develop/api-reference/layout/st.expander
34
+ - 【bug fix】fix bug in show_table(),修复在 line 56 和 line 25 中对 show_image() 和 st.markdown 的函数参数写错,导致在显示无图表格时反而报错的问题。
35
+ - 增加了测试用例。
36
+
37
+ - for_matplotlib.common_charts
38
+ - 【new feature】 add para replace_zero_division_with to plot_confusion_matrix(),新增参数 replace_zero_division_with 用于指定在normalize时引发除0错误的矩阵元素要使用何种值进行替代。
39
+ - 增加了测试用例。
40
+
41
+
@@ -1,4 +1,4 @@
1
- __version__ = "1.3.9"
1
+ __version__ = "1.4.1"
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 1742651885 --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
+