aait 2.1.2.1__tar.gz → 2.1.2.2__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 (308) hide show
  1. aait-2.1.2.2/PKG-INFO +9 -0
  2. aait-2.1.2.2/aait.egg-info/PKG-INFO +9 -0
  3. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/SOURCES.txt +7 -13
  4. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWFileWithPath.py +4 -2
  5. aait-2.1.2.2/orangecontrib/AAIT/widgets/OWFusionNM.py +440 -0
  6. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWReranking.py +5 -2
  7. aait-2.1.2.2/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +243 -0
  8. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +3 -3
  9. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +54 -0
  10. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +51 -64
  11. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +122 -0
  12. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +41 -15
  13. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owchunking.ui +135 -0
  14. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +32 -19
  15. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owconversellm.ui +94 -0
  16. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owembeddings.ui +54 -0
  17. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owendloop.ui +54 -0
  18. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +54 -0
  19. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +83 -0
  20. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +54 -0
  21. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +67 -0
  22. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +55 -0
  23. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +63 -0
  24. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +54 -0
  25. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +120 -0
  26. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owkeyword.ui +54 -0
  27. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +54 -0
  28. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +54 -0
  29. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +54 -0
  30. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +54 -0
  31. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +54 -0
  32. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +54 -0
  33. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +54 -0
  34. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +54 -0
  35. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +54 -0
  36. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +54 -0
  37. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +54 -0
  38. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +54 -0
  39. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +54 -0
  40. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +54 -0
  41. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +317 -0
  42. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owreranking.ui +54 -0
  43. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +58 -0
  44. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +46 -0
  45. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +54 -0
  46. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owstartloop.ui +67 -0
  47. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +54 -0
  48. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owtranslation.ui +67 -0
  49. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owtrigger.ui +54 -0
  50. aait-2.1.2.2/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +45 -0
  51. aait-2.1.2.2/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  52. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +45 -45
  53. aait-2.1.2.2/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  54. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +27 -27
  55. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +27 -27
  56. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +27 -27
  57. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +27 -27
  58. aait-2.1.2.2/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  59. {aait-2.1.2.1 → aait-2.1.2.2}/setup.py +1 -1
  60. aait-2.1.2.1/PKG-INFO +0 -28
  61. aait-2.1.2.1/aait.egg-info/PKG-INFO +0 -28
  62. aait-2.1.2.1/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -483
  63. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -29
  64. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -109
  65. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -122
  66. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -81
  67. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -41
  68. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -41
  69. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -41
  70. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -70
  71. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -41
  72. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -54
  73. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -42
  74. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -41
  75. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -107
  76. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -41
  77. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -41
  78. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -41
  79. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -41
  80. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -41
  81. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -41
  82. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -41
  83. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -41
  84. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -41
  85. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -41
  86. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -41
  87. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -41
  88. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -41
  89. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -41
  90. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -41
  91. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -41
  92. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -304
  93. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -41
  94. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -45
  95. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -41
  96. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -54
  97. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -41
  98. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -41
  99. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -41
  100. aait-2.1.2.1/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -32
  101. aait-2.1.2.1/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  102. aait-2.1.2.1/tests/test_class_values_context_handler.py +0 -75
  103. aait-2.1.2.1/tests/test_credentials.py +0 -76
  104. aait-2.1.2.1/tests/test_domain_context_handler.py +0 -401
  105. aait-2.1.2.1/tests/test_gui.py +0 -140
  106. aait-2.1.2.1/tests/test_matplotlib_export.py +0 -43
  107. aait-2.1.2.1/tests/test_perfect_domain_context_handler.py +0 -148
  108. aait-2.1.2.1/tests/test_scatterplot_density.py +0 -59
  109. aait-2.1.2.1/tests/test_settings_handler.py +0 -27
  110. aait-2.1.2.1/tests/test_widgets_outputs.py +0 -29
  111. aait-2.1.2.1/tests/test_workflows.py +0 -80
  112. {aait-2.1.2.1 → aait-2.1.2.2}/License.txt +0 -0
  113. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/dependency_links.txt +0 -0
  114. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/entry_points.txt +0 -0
  115. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/namespace_packages.txt +0 -0
  116. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/requires.txt +0 -0
  117. {aait-2.1.2.1 → aait-2.1.2.2}/aait.egg-info/top_level.txt +0 -0
  118. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/__init__.py +0 -0
  119. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  120. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  121. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  122. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  123. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  124. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  125. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  126. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  127. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  128. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  129. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  130. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  131. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  132. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  133. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  134. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  135. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  136. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  137. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  138. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  139. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  140. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  141. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  142. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  143. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  144. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  145. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  146. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  147. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  148. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  149. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  150. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  151. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/__init__.py +0 -0
  152. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/answers.py +0 -0
  153. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/chunking.py +0 -0
  154. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  155. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  156. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  157. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  158. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  159. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  160. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  161. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  162. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  163. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  164. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  165. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/test.py +0 -0
  166. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  167. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/llm/translations.py +0 -0
  168. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  169. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  170. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  171. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  172. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  173. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/__init__.py +0 -0
  174. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  175. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  176. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  177. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  178. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  179. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  180. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  181. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  182. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  183. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  184. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  185. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  186. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  187. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  188. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  189. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  190. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  191. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  192. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  193. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  194. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  195. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  196. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  197. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  198. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  199. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  200. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  201. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  202. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  203. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  204. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
  205. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
  206. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
  207. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  208. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  209. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  210. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  211. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  212. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  213. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  214. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  215. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  216. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  217. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  218. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  219. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  220. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  221. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  222. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  223. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  224. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  225. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  226. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  227. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  228. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  229. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  230. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  231. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  232. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  233. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  234. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  235. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  236. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  237. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  238. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  239. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  240. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  241. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  242. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  243. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  244. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  245. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  246. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  247. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  248. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  249. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  250. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  251. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  252. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  253. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  254. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  255. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  256. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  257. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  258. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  259. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  260. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  261. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  262. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  263. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  264. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  265. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  266. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  267. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  268. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  269. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  270. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  271. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  272. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  273. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  274. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  275. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  276. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  277. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  278. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  279. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  280. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  281. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  282. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  283. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  284. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  285. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  286. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  287. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  288. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  289. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  290. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  291. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  292. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  293. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  294. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  295. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  296. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  297. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  298. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  299. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  300. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  301. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  302. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  303. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  304. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  305. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  306. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  307. {aait-2.1.2.1 → aait-2.1.2.2}/orangecontrib/__init__.py +0 -0
  308. {aait-2.1.2.1 → aait-2.1.2.2}/setup.cfg +0 -0
aait-2.1.2.2/PKG-INFO ADDED
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.1.2.2
4
+ Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
+ Home-page:
6
+ Author: Orange community
7
+ Author-email:
8
+ Keywords: orange3 add-on
9
+ License-File: License.txt
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.1.2.2
4
+ Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
+ Home-page:
6
+ Author: Orange community
7
+ Author-email:
8
+ Keywords: orange3 add-on
9
+ License-File: License.txt
@@ -98,9 +98,9 @@ orangecontrib/AAIT/widgets/OWFileMetadata.py
98
98
  orangecontrib/AAIT/widgets/OWFileSyncChecker.py
99
99
  orangecontrib/AAIT/widgets/OWFileWithPath.py
100
100
  orangecontrib/AAIT/widgets/OWFindFilesFromDir.py
101
+ orangecontrib/AAIT/widgets/OWFusionNM.py
101
102
  orangecontrib/AAIT/widgets/OWGenerateQuestions.py
102
103
  orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
103
- orangecontrib/AAIT/widgets/OWGenerateWord.py
104
104
  orangecontrib/AAIT/widgets/OWInputSelector.py
105
105
  orangecontrib/AAIT/widgets/OWKeywords.py
106
106
  orangecontrib/AAIT/widgets/OWLMStudio.py
@@ -130,6 +130,7 @@ orangecontrib/AAIT/widgets/OWQueryLLM.py
130
130
  orangecontrib/AAIT/widgets/OWRandomData.py
131
131
  orangecontrib/AAIT/widgets/OWReranking.py
132
132
  orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py
133
+ orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py
133
134
  orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py
134
135
  orangecontrib/AAIT/widgets/OWStartLoop.py
135
136
  orangecontrib/AAIT/widgets/OWTable2Corpus.py
@@ -155,6 +156,7 @@ orangecontrib/AAIT/widgets/designer/owfilemetadata.ui
155
156
  orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui
156
157
  orangecontrib/AAIT/widgets/designer/owfilewithpath.ui
157
158
  orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui
159
+ orangecontrib/AAIT/widgets/designer/owfusion_nm.ui
158
160
  orangecontrib/AAIT/widgets/designer/owgenerate_word.ui
159
161
  orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui
160
162
  orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui
@@ -173,11 +175,11 @@ orangecontrib/AAIT/widgets/designer/owmodel_solar.ui
173
175
  orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui
174
176
  orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui
175
177
  orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui
176
- orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui
177
178
  orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui
178
179
  orangecontrib/AAIT/widgets/designer/owqueryllm.ui
179
180
  orangecontrib/AAIT/widgets/designer/owreranking.ui
180
181
  orangecontrib/AAIT/widgets/designer/owsavewithpath.ui
182
+ orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui
181
183
  orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui
182
184
  orangecontrib/AAIT/widgets/designer/owstartloop.ui
183
185
  orangecontrib/AAIT/widgets/designer/owtable2corpus.ui
@@ -191,6 +193,7 @@ orangecontrib/AAIT/widgets/icons/apply_rules.svg
191
193
  orangecontrib/AAIT/widgets/icons/category.svg
192
194
  orangecontrib/AAIT/widgets/icons/dark_green.txt
193
195
  orangecontrib/AAIT/widgets/icons/de.png
196
+ orangecontrib/AAIT/widgets/icons/document_generator.png
194
197
  orangecontrib/AAIT/widgets/icons/documents.png
195
198
  orangecontrib/AAIT/widgets/icons/endloop.png
196
199
  orangecontrib/AAIT/widgets/icons/extra_chunks.png
@@ -223,6 +226,7 @@ orangecontrib/AAIT/widgets/icons/owfilemetadata.svg
223
226
  orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg
224
227
  orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg
225
228
  orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
229
+ orangecontrib/AAIT/widgets/icons/owfusion_nm.png
226
230
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
227
231
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
228
232
  orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
@@ -247,14 +251,4 @@ orangecontrib/AAIT/widgets/icons/select_dynamic_row.png
247
251
  orangecontrib/AAIT/widgets/icons/startloop.png
248
252
  orangecontrib/AAIT/widgets/icons/tools.png
249
253
  orangecontrib/AAIT/widgets/icons/widgetFactory.svg
250
- orangecontrib/AAIT/widgets/icons/zip.svg
251
- tests/test_class_values_context_handler.py
252
- tests/test_credentials.py
253
- tests/test_domain_context_handler.py
254
- tests/test_gui.py
255
- tests/test_matplotlib_export.py
256
- tests/test_perfect_domain_context_handler.py
257
- tests/test_scatterplot_density.py
258
- tests/test_settings_handler.py
259
- tests/test_widgets_outputs.py
260
- tests/test_workflows.py
254
+ orangecontrib/AAIT/widgets/icons/zip.svg
@@ -137,10 +137,12 @@ class OWFileWithPath(widget.OWWidget):
137
137
 
138
138
  if self.filepath is None:
139
139
  return
140
-
141
140
  #try:
142
141
  self.filepath = self.filepath.strip('"')
143
-
142
+ if os.path.exists(self.filepath)== False:
143
+ self.error("error input file doesn t exist")
144
+ self.Outputs.data.send(None)
145
+ return
144
146
  if self.strloadAsString!="False":
145
147
  out_data = self.load_table_as_strings(self.filepath)
146
148
  else:
@@ -0,0 +1,440 @@
1
+ import os
2
+ import sys
3
+ from typing import Optional, Sequence
4
+
5
+ import Orange
6
+ import Orange.data
7
+ from Orange.widgets import widget
8
+ from Orange.widgets.settings import Setting
9
+ from Orange.widgets.utils.signals import Input, Output
10
+
11
+ from AnyQt.QtWidgets import (
12
+ QApplication,
13
+ QWidget,
14
+ QLabel,
15
+ QComboBox,
16
+ QGridLayout,
17
+ QSizePolicy,
18
+ )
19
+
20
+ # Importations conditionnelles pour refléter l'environnement Orange add-on
21
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
22
+ from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic # noqa: F401
23
+ from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import (
24
+ apply_modification_from_python_file,
25
+ )
26
+ else:
27
+ from orangecontrib.AAIT.utils.import_uic import uic # type: ignore # noqa: F401
28
+ from orangecontrib.AAIT.utils.initialize_from_ini import ( # type: ignore
29
+ apply_modification_from_python_file,
30
+ )
31
+
32
+
33
+
34
+ def _var_names(table: Optional[Orange.data.Table]) -> list[str]:
35
+ """Retourne les noms de variables d'une Table Orange.
36
+
37
+ Inclut attributs, variables de classe et métadonnées; supprime les doublons
38
+ en conservant l'ordre.
39
+ """
40
+ if table is None:
41
+ return []
42
+ dom = table.domain
43
+ names: list[str] = [v.name for v in list(dom.attributes) + list(dom.class_vars)]
44
+ names += [v.name for v in dom.metas]
45
+ seen = set()
46
+ uniq: list[str] = []
47
+ for n in names:
48
+ if n not in seen:
49
+ uniq.append(n)
50
+ seen.add(n)
51
+ return uniq
52
+
53
+
54
+ @apply_modification_from_python_file(filepath_original_widget=__file__)
55
+ class OWFusionNN(widget.OWWidget):
56
+ """Fusion NxM avec NumPy et gestion des non-appareillés.
57
+
58
+ - Clé unique sélectionnée pour chaque table
59
+ - Fusion réalisée sans `pd.merge`, en NumPy/dicts
60
+ - Ordre des lignes: matches (NxM), puis A seuls, puis B seuls
61
+ - Colonnes manquantes complétées avec `None`
62
+ - Préservation des variables/types Orange lorsque possible
63
+ """
64
+
65
+ name = "Fusion NxM"
66
+ description = "Fusionne deux Tables sur une clé; ajoute les non-appariées"
67
+ category = "AAIT - TOOLBOX"
68
+ icon = "icons/owfusion_nm.png"
69
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
70
+ icon = "icons_dev/owfusion_nm.png"
71
+ priority = 1095
72
+
73
+ want_main_area = True
74
+ want_control_area = False
75
+
76
+ # Paramètres persistés
77
+ key1_a: Optional[str] = Setting(None)
78
+ key1_b: Optional[str] = Setting(None)
79
+
80
+ class Inputs:
81
+ data_a = Input("Table 1", Orange.data.Table)
82
+ data_b = Input("Table 2", Orange.data.Table)
83
+
84
+ class Outputs:
85
+ data = Output("Data", Orange.data.Table)
86
+
87
+ def __init__(self) -> None:
88
+ super().__init__()
89
+
90
+ self._data_a: Optional[Orange.data.Table] = None
91
+ self._data_b: Optional[Orange.data.Table] = None
92
+
93
+ # Charger UI designer si présent, sinon UI minimale
94
+ self.gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owfusion_nm.ui")
95
+ self.form: QWidget = uic.loadUi(self.gui)
96
+ self.mainArea.layout().addWidget(self.form)
97
+ self.form.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
98
+ self.cb_key1_a: QComboBox = getattr(self.form, "cb_key1_a")
99
+ self.cb_key1_b: QComboBox = getattr(self.form, "cb_key1_b")
100
+ self.cb_key1_a.currentIndexChanged.connect(self._apply_if_ready)
101
+ self.cb_key1_b.currentIndexChanged.connect(self._apply_if_ready)
102
+
103
+
104
+
105
+
106
+ class Error(widget.OWWidget.Error):
107
+ no_keys = widget.Msg("Sélectionnez une clé pour A et B.")
108
+ fusion = widget.Msg("Erreur de fusion: {}")
109
+
110
+ # ---------- Entrées ----------
111
+ @Inputs.data_a
112
+ def set_data_a(self, data: Optional[Orange.data.Table]):
113
+ self._data_a = data
114
+ self._populate_combos()
115
+ self._maybe_autoselect_keys()
116
+ self._apply_if_ready()
117
+
118
+ @Inputs.data_b
119
+ def set_data_b(self, data: Optional[Orange.data.Table]):
120
+ self._data_b = data
121
+ self._populate_combos()
122
+ self._maybe_autoselect_keys()
123
+ self._apply_if_ready()
124
+
125
+ # ---------- Aide UI ----------
126
+ def _populate_combos(self) -> None:
127
+ names_a = _var_names(self._data_a)
128
+ names_b = _var_names(self._data_b)
129
+
130
+ def fill(cb: QComboBox, items: Sequence[str], target_value: Optional[str]):
131
+ current = cb.currentText()
132
+ cb.blockSignals(True)
133
+ cb.clear()
134
+ cb.addItems(items)
135
+ if target_value and target_value in items:
136
+ cb.setCurrentText(target_value)
137
+ elif current in items:
138
+ cb.setCurrentText(current)
139
+ cb.blockSignals(False)
140
+
141
+ if hasattr(self, "cb_key1_a"):
142
+ fill(self.cb_key1_a, names_a, self.key1_a)
143
+ if hasattr(self, "cb_key1_b"):
144
+ fill(self.cb_key1_b, names_b, self.key1_b)
145
+
146
+ def _maybe_autoselect_keys(self) -> None:
147
+ if not hasattr(self, "cb_key1_a") or not hasattr(self, "cb_key1_b"):
148
+ return
149
+ if not self.key1_a and self.cb_key1_a.count() > 0:
150
+ self.key1_a = self.cb_key1_a.itemText(0)
151
+ self.cb_key1_a.setCurrentIndex(0)
152
+ if not self.key1_b and self.cb_key1_b.count() > 0:
153
+ self.key1_b = self.cb_key1_b.itemText(0)
154
+ self.cb_key1_b.setCurrentIndex(0)
155
+
156
+ def _apply_if_ready(self) -> None:
157
+ if self._data_a is None or self._data_b is None:
158
+ return
159
+ if not hasattr(self, "cb_key1_a") or not hasattr(self, "cb_key1_b"):
160
+ return
161
+ if self.cb_key1_a.count() == 0 or self.cb_key1_b.count() == 0:
162
+ return
163
+ if self.cb_key1_a.currentIndex() < 0 or self.cb_key1_b.currentIndex() < 0:
164
+ return
165
+ self._apply()
166
+
167
+ # ---------- Appliquer la fusion ----------
168
+ def _apply(self) -> None:
169
+ a = self._data_a
170
+ b = self._data_b
171
+ if a is None or b is None:
172
+ self.Outputs.data.send(None)
173
+ return
174
+
175
+ # Lire les clés sélectionnées
176
+ self.key1_a = self.cb_key1_a.currentText() or None
177
+ self.key1_b = self.cb_key1_b.currentText() or None
178
+
179
+ self.Error.no_keys.clear()
180
+ self.Error.fusion.clear()
181
+
182
+ if not (self.key1_a and self.key1_b):
183
+ self.Error.no_keys()
184
+ self.Outputs.data.send(None)
185
+ return
186
+
187
+ try:
188
+ import numpy as np
189
+
190
+ key_a = self.key1_a # type: ignore[assignment]
191
+ key_b = self.key1_b # type: ignore[assignment]
192
+
193
+ # Récupérer variables et index pour A
194
+ attrs_a = list(a.domain.attributes)
195
+ class_a = list(a.domain.class_vars)
196
+ metas_a = list(a.domain.metas)
197
+ ai_attr = {v.name: i for i, v in enumerate(attrs_a)}
198
+ ai_class = {v.name: i for i, v in enumerate(class_a)}
199
+ ai_meta = {v.name: i for i, v in enumerate(metas_a)}
200
+
201
+ # Récupérer variables et index pour B
202
+ attrs_b = list(b.domain.attributes)
203
+ class_b = list(b.domain.class_vars)
204
+ metas_b = list(b.domain.metas)
205
+ bi_attr = {v.name: i for i, v in enumerate(attrs_b)}
206
+ bi_class = {v.name: i for i, v in enumerate(class_b)}
207
+ bi_meta = {v.name: i for i, v in enumerate(metas_b)}
208
+
209
+ names_a = [v.name for v in attrs_a + class_a + metas_a]
210
+ names_b = [v.name for v in attrs_b + class_b + metas_b]
211
+ overlap = set(names_a).intersection(names_b)
212
+ same_key_name = key_a == key_b
213
+
214
+ # Construire liste de variables de sortie et mapping de colonnes
215
+ out_attrs: list[Orange.data.Variable] = []
216
+ out_classes: list[Orange.data.Variable] = []
217
+ out_metas: list[Orange.data.Variable] = []
218
+
219
+ # Pour chaque position de sortie, mémoriser (side, role, src_idx)
220
+ src_attrs: list[tuple[str, str, int]] = []
221
+ src_classes: list[tuple[str, str, int]] = []
222
+ src_metas: list[tuple[str, str, int]] = []
223
+
224
+ # Ajout depuis A
225
+ for v in attrs_a:
226
+ name = v.name
227
+ if name in overlap and not (same_key_name and name == key_a):
228
+ vv = v.copy(compute_value=None)
229
+ vv.name = f"{name}_A"
230
+ else:
231
+ vv = v
232
+ out_attrs.append(vv)
233
+ src_attrs.append(("A", "attr", ai_attr[name]))
234
+
235
+ for v in class_a:
236
+ name = v.name
237
+ if name in overlap and not (same_key_name and name == key_a):
238
+ vv = v.copy(compute_value=None)
239
+ vv.name = f"{name}_A"
240
+ else:
241
+ vv = v
242
+ out_classes.append(vv)
243
+ src_classes.append(("A", "class", ai_class[name]))
244
+
245
+ for v in metas_a:
246
+ name = v.name
247
+ if name in overlap and not (same_key_name and name == key_a):
248
+ vv = v.copy(compute_value=None)
249
+ vv.name = f"{name}_A"
250
+ else:
251
+ vv = v
252
+ out_metas.append(vv)
253
+ src_metas.append(("A", "meta", ai_meta[name]))
254
+
255
+ # Ajout depuis B
256
+ for v in attrs_b:
257
+ name = v.name
258
+ if same_key_name and name == key_b:
259
+ continue # éviter la duplication de la clé si même nom
260
+ if name in overlap:
261
+ vv = v.copy(compute_value=None)
262
+ vv.name = f"{name}_B"
263
+ else:
264
+ vv = v
265
+ out_attrs.append(vv)
266
+ src_attrs.append(("B", "attr", bi_attr[name]))
267
+
268
+ for v in class_b:
269
+ name = v.name
270
+ if same_key_name and name == key_b:
271
+ continue
272
+ if name in overlap:
273
+ vv = v.copy(compute_value=None)
274
+ vv.name = f"{name}_B"
275
+ else:
276
+ vv = v
277
+ out_classes.append(vv)
278
+ src_classes.append(("B", "class", bi_class[name]))
279
+
280
+ for v in metas_b:
281
+ name = v.name
282
+ if same_key_name and name == key_b:
283
+ continue
284
+ if name in overlap:
285
+ vv = v.copy(compute_value=None)
286
+ vv.name = f"{name}_B"
287
+ else:
288
+ vv = v
289
+ out_metas.append(vv)
290
+ src_metas.append(("B", "meta", bi_meta[name]))
291
+
292
+ # Extraction des colonnes de clés
293
+ def col_values(table: Orange.data.Table, name: str):
294
+ if name in {v.name for v in table.domain.attributes}:
295
+ idx = {v.name: i for i, v in enumerate(table.domain.attributes)}[name]
296
+ return table.X[:, idx]
297
+ elif name in {v.name for v in table.domain.class_vars}:
298
+ idx = {v.name: i for i, v in enumerate(table.domain.class_vars)}[name]
299
+ y = table.Y
300
+ if y.size == 0:
301
+ return np.array([])
302
+ if y.ndim == 1:
303
+ # single class var
304
+ if idx != 0:
305
+ return np.array([np.nan] * len(table))
306
+ return y
307
+ return y[:, idx]
308
+ elif name in {v.name for v in table.domain.metas}:
309
+ idx = {v.name: i for i, v in enumerate(table.domain.metas)}[name]
310
+ return table.metas[:, idx]
311
+ else:
312
+ return np.array([])
313
+
314
+ ka = col_values(a, key_a)
315
+ kb = col_values(b, key_b)
316
+
317
+ # Comparaison des clés (None/NaN ne matchent pas)
318
+ def is_nan(x):
319
+ try:
320
+ return np.isnan(x)
321
+ except Exception:
322
+ return False
323
+
324
+ def is_equal(x, y):
325
+ if x is None or y is None:
326
+ return False
327
+ if is_nan(x) or is_nan(y):
328
+ return False
329
+ return x == y
330
+
331
+ # Index B: valeur -> indices
332
+ from collections import defaultdict
333
+ idx_b = defaultdict(list)
334
+ kb_list = kb.tolist()
335
+ for j, v in enumerate(kb_list):
336
+ if v is None or is_nan(v):
337
+ continue
338
+ try:
339
+ idx_b[v].append(j)
340
+ except Exception:
341
+ # non-hashable: ignoré ici, on s'appuiera sur fallback
342
+ pass
343
+
344
+ matched_pairs: list[tuple[int, int]] = []
345
+ matched_a = np.zeros(len(ka), dtype=bool)
346
+ matched_b = np.zeros(len(kb), dtype=bool)
347
+ ka_list = ka.tolist()
348
+ for i, va in enumerate(ka_list):
349
+ js = idx_b.get(va)
350
+ if js is None:
351
+ js = [j for j, vb in enumerate(kb_list) if is_equal(va, vb)]
352
+ if js:
353
+ for j in js:
354
+ matched_pairs.append((i, j))
355
+ matched_a[i] = True
356
+ matched_b[j] = True
357
+
358
+ a_only = [i for i, m in enumerate(matched_a) if not m]
359
+ b_only = [j for j, m in enumerate(matched_b) if not m]
360
+
361
+ # Construire Domain de sortie
362
+ out_domain = Orange.data.Domain(out_attrs, out_classes, out_metas)
363
+
364
+ # Allouer matrices de sortie
365
+ n_rows = len(matched_pairs) + len(a_only) + len(b_only)
366
+ X_out = np.full((n_rows, len(out_attrs)), np.nan)
367
+ if len(out_classes) == 0:
368
+ Y_out = None
369
+ elif len(out_classes) == 1:
370
+ Y_out = np.full((n_rows,), np.nan)
371
+ else:
372
+ Y_out = np.full((n_rows, len(out_classes)), np.nan)
373
+ M_out = np.empty((n_rows, len(out_metas)), dtype=object)
374
+ M_out[:] = np.nan
375
+
376
+ # Helpers d'accès aux valeurs source
377
+ def get_class_val(table: Orange.data.Table, row: int, idx: int):
378
+ y = table.Y
379
+ if y.size == 0:
380
+ return np.nan
381
+ if y.ndim == 1:
382
+ if idx != 0:
383
+ return np.nan
384
+ return y[row]
385
+ return y[row, idx]
386
+
387
+ def set_row_from_side(side: str, src_row: int, out_row: int):
388
+ src_table = a if side == "A" else b
389
+ # attributes
390
+ for pos, (s, role, idx) in enumerate(src_attrs):
391
+ if s != side:
392
+ continue
393
+ if role == "attr" and src_table.X.shape[1] > idx:
394
+ X_out[out_row, pos] = src_table.X[src_row, idx]
395
+ # classes
396
+ for pos, (s, role, idx) in enumerate(src_classes):
397
+ if s != side:
398
+ continue
399
+ val = get_class_val(src_table, src_row, idx)
400
+ if len(out_classes) == 1:
401
+ if pos == 0:
402
+ Y_out[out_row] = val # type: ignore[index]
403
+ else:
404
+ Y_out[out_row, pos] = val # type: ignore[index]
405
+ # metas
406
+ for pos, (s, role, idx) in enumerate(src_metas):
407
+ if s != side:
408
+ continue
409
+ if src_table.metas.shape[1] > idx:
410
+ M_out[out_row, pos] = src_table.metas[src_row, idx]
411
+
412
+ # Remplir lignes: appariées, puis A-only, puis B-only
413
+ r = 0
414
+ for i, j in matched_pairs:
415
+ set_row_from_side("A", i, r)
416
+ set_row_from_side("B", j, r)
417
+ r += 1
418
+ for i in a_only:
419
+ set_row_from_side("A", i, r)
420
+ r += 1
421
+ for j in b_only:
422
+ set_row_from_side("B", j, r)
423
+ r += 1
424
+
425
+ out = Orange.data.Table.from_numpy(out_domain, X_out, Y_out, M_out)
426
+ out.name = (a.name or "A") + " outer(numpy) " + (b.name or "B")
427
+ self.Outputs.data.send(out)
428
+ except Exception as ex: # pragma: no cover
429
+ self.Error.fusion(str(ex))
430
+ self.Outputs.data.send(None)
431
+
432
+
433
+ if __name__ == "__main__":
434
+ app = QApplication(sys.argv)
435
+ w = OWFusionNN()
436
+ w.show()
437
+ if hasattr(app, "exec"):
438
+ app.exec()
439
+ else:
440
+ app.exec_()
@@ -55,7 +55,6 @@ class OWReranking(widget.OWWidget):
55
55
  @Inputs.model_path
56
56
  def set_model_path(self, in_model_path):
57
57
  self.model_path = in_model_path
58
- self.load_model()
59
58
  if self.autorun:
60
59
  self.run()
61
60
 
@@ -91,6 +90,10 @@ class OWReranking(widget.OWWidget):
91
90
  if self.data_request is None:
92
91
  return
93
92
 
93
+ if self.model_path is None:
94
+ return
95
+
96
+ self.load_model()
94
97
  if self.model is None:
95
98
  return
96
99
 
@@ -132,7 +135,7 @@ class OWReranking(widget.OWWidget):
132
135
  return
133
136
 
134
137
  def handle_finish(self):
135
- print("Embeddings finished")
138
+ print("Reranking finished")
136
139
  self.progressBarFinished()
137
140
 
138
141
  def post_initialized(self):