aait 2.0.0__tar.gz → 2.0.0.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 (264) hide show
  1. {aait-2.0.0 → aait-2.0.0.1}/PKG-INFO +1 -1
  2. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/SOURCES.txt +32 -2
  4. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/process_documents.py +4 -4
  5. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/MetManagement.py +1 -1
  6. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWExecuteScript.py +3 -1
  7. aait-2.0.0.1/orangecontrib/AAIT/widgets/OWExtractTokens.py +139 -0
  8. aait-2.0.0.1/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +41 -0
  9. aait-2.0.0.1/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +4 -0
  10. aait-2.0.0.1/orangecontrib/ALGORITHM/__init__.py +0 -0
  11. aait-2.0.0.1/orangecontrib/ALGORITHM/widgets/__init__.py +19 -0
  12. aait-2.0.0.1/orangecontrib/API/__init__.py +0 -0
  13. aait-2.0.0.1/orangecontrib/API/widgets/__init__.py +19 -0
  14. aait-2.0.0.1/orangecontrib/IMG4IT/__init__.py +0 -0
  15. aait-2.0.0.1/orangecontrib/IMG4IT/utils/__init__.py +0 -0
  16. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWConvertImages.py +131 -0
  17. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/OWPaddleOCR.py +213 -0
  18. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/__init__.py +18 -0
  19. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/designer/__init__.py +0 -0
  20. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons/__init__.py +0 -0
  21. aait-2.0.0.1/orangecontrib/IMG4IT/widgets/icons_dev/__init__.py +0 -0
  22. aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/__init__.py +0 -0
  23. aait-2.0.0.1/orangecontrib/LLM_INTEGRATION/widgets/__init__.py +19 -0
  24. aait-2.0.0.1/orangecontrib/LLM_MODELS/__init__.py +0 -0
  25. aait-2.0.0.1/orangecontrib/LLM_MODELS/widgets/__init__.py +19 -0
  26. aait-2.0.0.1/orangecontrib/TOOLBOX/__init__.py +0 -0
  27. aait-2.0.0.1/orangecontrib/TOOLBOX/widgets/__init__.py +19 -0
  28. {aait-2.0.0 → aait-2.0.0.1}/setup.py +1 -1
  29. aait-2.0.0.1/tests/test_class_values_context_handler.py +75 -0
  30. aait-2.0.0.1/tests/test_credentials.py +76 -0
  31. aait-2.0.0.1/tests/test_domain_context_handler.py +401 -0
  32. aait-2.0.0.1/tests/test_gui.py +140 -0
  33. aait-2.0.0.1/tests/test_matplotlib_export.py +43 -0
  34. aait-2.0.0.1/tests/test_perfect_domain_context_handler.py +148 -0
  35. aait-2.0.0.1/tests/test_scatterplot_density.py +59 -0
  36. aait-2.0.0.1/tests/test_settings_handler.py +27 -0
  37. aait-2.0.0.1/tests/test_widgets_outputs.py +29 -0
  38. aait-2.0.0.1/tests/test_workflows.py +80 -0
  39. {aait-2.0.0 → aait-2.0.0.1}/License.txt +0 -0
  40. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/dependency_links.txt +0 -0
  41. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/entry_points.txt +0 -0
  42. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/namespace_packages.txt +0 -0
  43. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/requires.txt +0 -0
  44. {aait-2.0.0 → aait-2.0.0.1}/aait.egg-info/top_level.txt +0 -0
  45. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/__init__.py +0 -0
  46. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  47. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  48. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  49. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  50. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  51. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  52. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  53. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  54. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  55. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  56. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  57. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  58. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  59. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  60. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  61. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  62. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  63. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  64. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  65. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  66. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  67. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  68. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  69. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  70. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  71. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  72. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  73. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  74. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  75. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  76. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  77. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  78. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  79. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  80. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/__init__.py +0 -0
  81. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/answers.py +0 -0
  82. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/chunking.py +0 -0
  83. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  84. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  85. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  86. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  87. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  88. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  89. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  90. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  91. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  92. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  93. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/test.py +0 -0
  94. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  95. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/llm/translations.py +0 -0
  96. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  97. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  98. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  99. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  100. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/__init__.py +0 -0
  101. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  102. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  103. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  104. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  105. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  106. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  107. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  108. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  109. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  110. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  111. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  112. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  113. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  114. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  115. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  116. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  117. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  118. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  119. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  120. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  121. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  122. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  123. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  124. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  125. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  126. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  127. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  128. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  129. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  130. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  131. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  132. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  133. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  134. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  135. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  136. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  137. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  138. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  139. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  140. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  141. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  142. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  143. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  144. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  145. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  146. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  147. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  148. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  149. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  150. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  151. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  152. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  153. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  154. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  155. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  156. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  157. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  158. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  159. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  160. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  161. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  162. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  163. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  164. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  165. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  166. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  167. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  168. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  169. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  170. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  171. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  172. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  173. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  174. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  175. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  176. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  177. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  178. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  179. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  180. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  181. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  182. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  183. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  184. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  185. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  186. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  187. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  188. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  189. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  190. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  191. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  192. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  193. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  194. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  195. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  196. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  197. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  198. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  199. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  200. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  201. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  202. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  203. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  204. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  205. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  206. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  207. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  208. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  209. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  210. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  211. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  212. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  213. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  214. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  215. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  216. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  217. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  218. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  219. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  220. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  221. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  222. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  223. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  224. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  225. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  226. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  227. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  228. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  229. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  230. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  231. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  232. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  233. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  234. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  235. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  236. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  237. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  238. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  239. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  240. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  241. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  242. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  243. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  244. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  245. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  246. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  247. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  248. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  249. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  250. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  251. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  252. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  253. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  254. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  255. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  256. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  257. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  258. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  259. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  260. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  261. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  262. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  263. {aait-2.0.0 → aait-2.0.0.1}/orangecontrib/__init__.py +0 -0
  264. {aait-2.0.0 → aait-2.0.0.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.0
3
+ Version: 2.0.0.1
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.0
3
+ Version: 2.0.0.1
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -1,5 +1,4 @@
1
1
  License.txt
2
- setup.cfg
3
2
  setup.py
4
3
  aait.egg-info/PKG-INFO
5
4
  aait.egg-info/SOURCES.txt
@@ -95,6 +94,7 @@ orangecontrib/AAIT/widgets/OWEditTable.py
95
94
  orangecontrib/AAIT/widgets/OWEndLoop.py
96
95
  orangecontrib/AAIT/widgets/OWExecuteScript.py
97
96
  orangecontrib/AAIT/widgets/OWExtraChunks.py
97
+ orangecontrib/AAIT/widgets/OWExtractTokens.py
98
98
  orangecontrib/AAIT/widgets/OWFileWithPath.py
99
99
  orangecontrib/AAIT/widgets/OWGenerateQuestions.py
100
100
  orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
@@ -145,6 +145,7 @@ orangecontrib/AAIT/widgets/designer/owembeddings.ui
145
145
  orangecontrib/AAIT/widgets/designer/owendloop.ui
146
146
  orangecontrib/AAIT/widgets/designer/owexecutescript.ui
147
147
  orangecontrib/AAIT/widgets/designer/owextrachunks.ui
148
+ orangecontrib/AAIT/widgets/designer/owextracttokens.ui
148
149
  orangecontrib/AAIT/widgets/designer/owfilewithpath.ui
149
150
  orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui
150
151
  orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui
@@ -206,6 +207,7 @@ orangecontrib/AAIT/widgets/icons/owconversellm.svg
206
207
  orangecontrib/AAIT/widgets/icons/owedittable.svg
207
208
  orangecontrib/AAIT/widgets/icons/owembeddings.svg
208
209
  orangecontrib/AAIT/widgets/icons/owexecutescript.svg
210
+ orangecontrib/AAIT/widgets/icons/owextracttokens.svg
209
211
  orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
210
212
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
211
213
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
@@ -229,4 +231,32 @@ orangecontrib/AAIT/widgets/icons/processdocuments.svg
229
231
  orangecontrib/AAIT/widgets/icons/qwen-color.png
230
232
  orangecontrib/AAIT/widgets/icons/startloop.png
231
233
  orangecontrib/AAIT/widgets/icons/tools.png
232
- orangecontrib/AAIT/widgets/icons/widgetFactory.svg
234
+ orangecontrib/AAIT/widgets/icons/widgetFactory.svg
235
+ orangecontrib/ALGORITHM/__init__.py
236
+ orangecontrib/ALGORITHM/widgets/__init__.py
237
+ orangecontrib/API/__init__.py
238
+ orangecontrib/API/widgets/__init__.py
239
+ orangecontrib/IMG4IT/__init__.py
240
+ orangecontrib/IMG4IT/utils/__init__.py
241
+ orangecontrib/IMG4IT/widgets/OWConvertImages.py
242
+ orangecontrib/IMG4IT/widgets/OWPaddleOCR.py
243
+ orangecontrib/IMG4IT/widgets/__init__.py
244
+ orangecontrib/IMG4IT/widgets/designer/__init__.py
245
+ orangecontrib/IMG4IT/widgets/icons/__init__.py
246
+ orangecontrib/IMG4IT/widgets/icons_dev/__init__.py
247
+ orangecontrib/LLM_INTEGRATION/__init__.py
248
+ orangecontrib/LLM_INTEGRATION/widgets/__init__.py
249
+ orangecontrib/LLM_MODELS/__init__.py
250
+ orangecontrib/LLM_MODELS/widgets/__init__.py
251
+ orangecontrib/TOOLBOX/__init__.py
252
+ orangecontrib/TOOLBOX/widgets/__init__.py
253
+ tests/test_class_values_context_handler.py
254
+ tests/test_credentials.py
255
+ tests/test_domain_context_handler.py
256
+ tests/test_gui.py
257
+ tests/test_matplotlib_export.py
258
+ tests/test_perfect_domain_context_handler.py
259
+ tests/test_scatterplot_density.py
260
+ tests/test_settings_handler.py
261
+ tests/test_widgets_outputs.py
262
+ tests/test_workflows.py
@@ -15,13 +15,13 @@ def process_documents(dirpath):
15
15
 
16
16
  # get path from user selection
17
17
  embeddings = check_for_embeddings(dirpath)
18
- dirpath = dirpath.replace("/", "\\")
18
+ dirpath = dirpath.replace("\\","/")
19
19
 
20
20
  # Set selected path in the saved embeddings
21
21
  if embeddings is not None:
22
- common_path = find_common_root(embeddings).replace("/", "\\")
22
+ common_path = find_common_root(embeddings).replace("\\","/")
23
23
  for row in embeddings:
24
- row["path"] = row["path"].value.replace("/", "\\").replace(common_path, dirpath)
24
+ row["path"] = row["path"].value.replace("\\","/").replace(common_path, dirpath)
25
25
 
26
26
  # Verify which files are already processed
27
27
  files_to_process = get_files_to_process(dirpath, embeddings)
@@ -87,7 +87,7 @@ def get_files_to_process(folder_path, table=None):
87
87
  # Check if the file has a supported extension
88
88
  if os.path.splitext(file)[1].lower() in supported_extensions:
89
89
  # Add the file if it is not already in the table
90
- filepath = os.path.join(root, file).replace("/", "\\")
90
+ filepath = os.path.join(root, file).replace("\\","/")
91
91
  if filepath not in existing_paths:
92
92
  new_files.append(filepath)
93
93
  sizes[filepath] = os.path.getsize(filepath)
@@ -1325,7 +1325,7 @@ def get_api_local_folder(workflow_id=""):
1325
1325
  if len(workflow_id)>4:
1326
1326
  if workflow_id[-4:]==".ows":
1327
1327
  workflow_id=workflow_id[:-4]
1328
- result+=workflow_id+"/"
1328
+ result+=workflow_id+"/"
1329
1329
  return result
1330
1330
 
1331
1331
  def get_api_local_folder_admin():
@@ -58,6 +58,7 @@ class OWExecuteScript(widget.OWWidget):
58
58
 
59
59
  def run(self):
60
60
  self.warning("")
61
+ self.error("")
61
62
 
62
63
  # If Thread is already running, interrupt it
63
64
  if self.thread is not None:
@@ -68,7 +69,8 @@ class OWExecuteScript(widget.OWWidget):
68
69
  return
69
70
 
70
71
  if not "Script" in self.data.domain:
71
- self.warning("You do not have a 'Script' column, nothing happened.")
72
+ self.error("You do not have a 'Script' column, nothing happened.")
73
+ return
72
74
 
73
75
  self.thread = thread_management.Thread(self.execute_scripts_in_table, self.data)
74
76
  self.thread.progress.connect(self.handle_progress)
@@ -0,0 +1,139 @@
1
+ import os
2
+ import sys
3
+
4
+ from Orange.data import Table, Domain, StringVariable
5
+ from AnyQt.QtWidgets import QApplication
6
+ from Orange.widgets import widget
7
+ from Orange.widgets.utils.signals import Input, Output
8
+
9
+
10
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
11
+ from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
12
+ from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
13
+ else:
14
+ from orangecontrib.AAIT.utils.import_uic import uic
15
+ from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
16
+
17
+
18
+ @apply_modification_from_python_file(filepath_original_widget=__file__)
19
+ class OWExtractTokens(widget.OWWidget):
20
+ name = "Extract Tokens"
21
+ description = "This widget extracts the tokens from your input data."
22
+ icon = "icons/owextracttokens.svg"
23
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
24
+ icon = "icons_dev/owextracttokens.svg"
25
+ gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owextracttokens.ui")
26
+ want_control_area = False
27
+ priority = 1060
28
+
29
+ class Inputs:
30
+ data = Input("Data", Table)
31
+
32
+ class Outputs:
33
+ data_row = Output("Tokens to row", Table)
34
+ data_column = Output("Tokens to column", Table)
35
+
36
+ @Inputs.data
37
+ def set_data(self, in_data):
38
+ self.data = in_data
39
+ if self.autorun:
40
+ self.run()
41
+
42
+ def __init__(self):
43
+ super().__init__()
44
+ # Qt Management
45
+ self.setFixedWidth(470)
46
+ self.setFixedHeight(300)
47
+ uic.loadUi(self.gui, self)
48
+
49
+ # Data Management
50
+ self.data = None
51
+ self.autorun = True
52
+ self.post_initialized()
53
+
54
+ def run(self):
55
+ self.warning("")
56
+ self.error("")
57
+
58
+ if self.data is None:
59
+ self.Outputs.data_row.send(None)
60
+ self.Outputs.data_column.send(None)
61
+ return
62
+
63
+ if not hasattr(self.data, "tokens"):
64
+ self.Outputs.data_row.send(self.data)
65
+ self.Outputs.data_column.send(self.data)
66
+ self.warning("There is no tokens in the input table.")
67
+ return
68
+
69
+ out_data_row = tokens_to_row(self.data)
70
+ out_data_column = tokens_to_column(self.data)
71
+
72
+ self.Outputs.data_row.send(out_data_row)
73
+ self.Outputs.data_column.send(out_data_column)
74
+
75
+
76
+ def post_initialized(self):
77
+ pass
78
+
79
+
80
+ def tokens_to_row(table):
81
+ # Get original domain
82
+ domain = table.domain
83
+
84
+ # Create new domain: same attributes + one new StringVariable for the token
85
+ token_var = StringVariable("Tokens_1")
86
+ new_domain = Domain(domain.attributes, domain.class_vars, metas=list(domain.metas) + [token_var])
87
+
88
+ new_data_rows = []
89
+ for i, row in enumerate(table):
90
+ tokens = table.tokens[i] # list of tokens for this row
91
+ for token in tokens:
92
+ # Duplicate the row's values
93
+ attrs = list(row) # attribute values
94
+ class_vars = list(row.get_class()) if domain.class_vars else []
95
+ metas = list(row.metas) + [token] # append token as a new meta
96
+
97
+ new_data_rows.append(attrs + class_vars + metas)
98
+
99
+ # Build and return the new Table
100
+ return Table.from_list(new_domain, new_data_rows)
101
+
102
+
103
+ def tokens_to_column(table):
104
+ # Step 1: Get max number of tokens across all rows
105
+ max_tokens = max(len(tokens) for tokens in table.tokens)
106
+
107
+ # Step 2: Create new domain
108
+ token_vars = [StringVariable(f"Tokens_{i+1}") for i in range(max_tokens)]
109
+ new_domain = Domain(
110
+ table.domain.attributes,
111
+ table.domain.class_vars,
112
+ list(table.domain.metas) + token_vars # add token vars as metas
113
+ )
114
+
115
+ new_data_rows = []
116
+ for i, row in enumerate(table):
117
+ tokens = table.tokens[i]
118
+
119
+ # Pad token list to max_tokens with empty strings
120
+ padded_tokens = tokens + [''] * (max_tokens - len(tokens))
121
+
122
+ # Build row: attributes + class_vars + metas + tokens
123
+ attrs = list(row)
124
+ class_vars = list(row.get_class()) if table.domain.class_vars else []
125
+ metas = list(row.metas) + padded_tokens
126
+
127
+ new_data_rows.append(attrs + class_vars + metas)
128
+
129
+ return Table.from_list(new_domain, new_data_rows)
130
+
131
+
132
+ if __name__ == "__main__":
133
+ app = QApplication(sys.argv)
134
+ my_widget = OWExtractTokens()
135
+ my_widget.show()
136
+ if hasattr(app, "exec"):
137
+ app.exec()
138
+ else:
139
+ app.exec_()
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>470</width>
10
+ <height>300</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <widget class="QLabel" name="Description">
17
+ <property name="geometry">
18
+ <rect>
19
+ <x>20</x>
20
+ <y>20</y>
21
+ <width>431</width>
22
+ <height>261</height>
23
+ </rect>
24
+ </property>
25
+ <property name="text">
26
+ <string>This widget extracts the tokens from your input data.</string>
27
+ </property>
28
+ <property name="textFormat">
29
+ <enum>Qt::AutoText</enum>
30
+ </property>
31
+ <property name="alignment">
32
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
33
+ </property>
34
+ <property name="wordWrap">
35
+ <bool>true</bool>
36
+ </property>
37
+ </widget>
38
+ </widget>
39
+ <resources/>
40
+ <connections/>
41
+ </ui>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
2
+ <svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path d="M5 7H3M5 11H3M20 15H3M15 19H3M21 7H19M21 11H19M10.6 11H13.4C13.9601 11 14.2401 11 14.454 10.891C14.6422 10.7951 14.7951 10.6422 14.891 10.454C15 10.2401 15 9.96005 15 9.4V6.6C15 6.03995 15 5.75992 14.891 5.54601C14.7951 5.35785 14.6422 5.20487 14.454 5.10899C14.2401 5 13.9601 5 13.4 5H10.6C10.0399 5 9.75992 5 9.54601 5.10899C9.35785 5.20487 9.20487 5.35785 9.10899 5.54601C9 5.75992 9 6.03995 9 6.6V9.4C9 9.96005 9 10.2401 9.10899 10.454C9.20487 10.6422 9.35785 10.7951 9.54601 10.891C9.75992 11 10.0399 11 10.6 11Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
File without changes
@@ -0,0 +1,19 @@
1
+ """
2
+ Widgets from Development workflow category
3
+
4
+ """
5
+ # ID = "orangecontrib.AAIT"
6
+
7
+ NAME = "AAIT - Algorithm"
8
+
9
+ # Category icon show in the menu
10
+ ICON = "icons/algorithm.png"
11
+
12
+ BACKGROUND = "light-blue"
13
+
14
+ DESCRIPTION = ("AAIT - Algorithm is a package meant to develop and enable advanced AI "
15
+ "functionalities in Orange Data Mining.")
16
+
17
+
18
+
19
+ # PRIORITY = 6
File without changes
@@ -0,0 +1,19 @@
1
+ """
2
+ Widgets from Development workflow category
3
+
4
+ """
5
+ # ID = "orangecontrib.AAIT"
6
+
7
+ NAME = "AAIT - API"
8
+
9
+ # Category icon show in the menu
10
+ ICON = "icons/api.png"
11
+
12
+ BACKGROUND = "light-pink"
13
+
14
+ DESCRIPTION = ("AAIT - Algorithm is a package meant to develop and enable advanced AI "
15
+ "functionalities in Orange Data Mining.")
16
+
17
+
18
+
19
+ # PRIORITY = 6
File without changes
File without changes
@@ -0,0 +1,131 @@
1
+ import numpy as np
2
+ import os
3
+ import zipfile
4
+ from PIL import Image
5
+ import pillow_heif
6
+ import Orange
7
+ from Orange.data import Table, Domain, StringVariable
8
+ from pathlib import Path
9
+ from Orange.widgets.widget import OWWidget, Input, Output
10
+ from AnyQt.QtWidgets import QApplication
11
+
12
+ class OWConvertImages(OWWidget):
13
+ name = "Convert Images"
14
+ description = "Takes one or more folders as input. In these folders, if a .zip file is found, extract the images it contains, convert them to JPG, and reduce their resolution to decrease the image file size."
15
+ icon = "icons/resize-picture.svg"
16
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
17
+ icon = "icons_dev/resize-picture.svg"
18
+ priority = 3000
19
+
20
+ class Inputs:
21
+ data = Input("Data", Orange.data.Table)
22
+
23
+ @Inputs.data
24
+ def set_data(self, in_data):
25
+ self.data = in_data
26
+ if self.data is None:
27
+ return
28
+ if "folders_path" in in_data.domain:
29
+ self.folders_path = in_data.get_column("folders_path")
30
+ elif "folder_path" in in_data.domain:
31
+ self.folders_path = in_data.get_column("folder_path")
32
+ if "file_path" in in_data.domain:
33
+ self.path_file = in_data.get_column("file_path")
34
+ else:
35
+ if self.folders_path is None:
36
+ self.error("No folder provided.")
37
+ return
38
+ path = Path(str(self.folders_path[0]))
39
+ self.path_file = path.parent
40
+ self.run()
41
+
42
+ class Outputs:
43
+ data = Output("Data", Orange.data.Table)
44
+
45
+ def __init__(self):
46
+ super().__init__()
47
+ self.data = None
48
+ self.folders_path = None
49
+ self.path_file = None
50
+ self.MAX_SIZE = (1000, 1000)
51
+ self.run()
52
+
53
+ def trouver_fichiers_zip(self,dossier):
54
+ chemin_complet = None
55
+ for racine, dossiers, fichiers in os.walk(dossier):
56
+ for fichier in fichiers:
57
+ if fichier.lower().endswith('.zip'):
58
+ chemin_complet = os.path.join(racine, fichier)
59
+ return chemin_complet
60
+
61
+ def run(self):
62
+ self.error("")
63
+ self.warning("")
64
+
65
+ if self.data is None:
66
+ return
67
+
68
+ if self.folders_path is None or self.path_file is None:
69
+ self.error("No folder provided.")
70
+ return
71
+
72
+ # Fonctionnel pour confideo
73
+ # a modifier cette fonction encore la fonction de dezip à l'intérieur
74
+ # il faudrait modifier pour enlever le début et ne laisser que la partie convertion d'image
75
+ image_paths = []
76
+ pillow_heif.register_heif_opener()
77
+ # Extraction et collecte des images
78
+ for file_path in self.folders_path:
79
+ img = []
80
+ path = self.trouver_fichiers_zip(file_path)
81
+ if path == None:
82
+ pass
83
+ extract_path = file_path + "/" + "temp_images"
84
+ os.makedirs(extract_path, exist_ok=True)
85
+ ext = os.path.splitext(str(path))[1].lower()
86
+ if ext == ".zip":
87
+ with zipfile.ZipFile(path, "r") as zip_ref:
88
+ zip_ref.extractall(extract_path)
89
+ for root, dirs, files in os.walk(extract_path):
90
+ for fname in files:
91
+ if fname.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic")):
92
+ img.append(os.path.join(root, fname))
93
+ elif ext in [".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic"]:
94
+ image_paths.append(path)
95
+ image_paths.append(img)
96
+
97
+ converted_path = str(self.path_file) + "/temp_images/converted"
98
+ os.makedirs(converted_path, exist_ok=True)
99
+ new_image_paths = []
100
+
101
+ for image_path in image_paths:
102
+ for img_path in image_path:
103
+ ext = os.path.splitext(img_path)[1].lower()
104
+ if ext in [".png", ".jpg", ".jpeg", ".tiff", ".tif", ".heif", ".heic"]:
105
+ try:
106
+ image = Image.open(img_path)
107
+ if image.mode != 'RGB':
108
+ image = image.convert('RGB')
109
+ image.thumbnail(self.MAX_SIZE)
110
+ new_filename = os.path.splitext(os.path.basename(img_path))[0] + ".jpg"
111
+ new_path = os.path.join(converted_path, new_filename)
112
+ image.save(new_path, format="JPEG", quality=70)
113
+ new_image_paths.append(new_path)
114
+ # Supprimer l'original (facultatif)
115
+ # os.remove(img_path)
116
+ except Exception as e:
117
+ print(f"Erreur de conversion {img_path} : {e}")
118
+ data_metas = [[str(self.path_file), str(new_image_paths)]]
119
+ domain = Domain([], metas=[StringVariable("folder_path"), StringVariable("image_paths")])
120
+ table = Table.from_numpy(domain, np.empty((len(data_metas), 0)), metas=data_metas)
121
+ self.Outputs.data.send(table)
122
+
123
+ if __name__ == "__main__":
124
+ import sys
125
+ app = QApplication(sys.argv)
126
+ my_widget = OWConvertImages()
127
+ my_widget.show()
128
+ if hasattr(app, "exec"):
129
+ sys.exit(app.exec())
130
+ else:
131
+ sys.exit(app.exec_())