aait 2.2.3__tar.gz → 2.2.5__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 (289) hide show
  1. aait-2.2.5/PKG-INFO +28 -0
  2. aait-2.2.5/aait.egg-info/PKG-INFO +28 -0
  3. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/SOURCES.txt +14 -0
  4. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/answers.py +50 -41
  5. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/process_documents.py +125 -101
  6. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/MetManagement.py +13 -0
  7. aait-2.2.5/orangecontrib/AAIT/utils/base_widget.py +173 -0
  8. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/windows_utils.py +158 -114
  9. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWDisplayMD.py +8 -13
  10. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWEditTable.py +2 -2
  11. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -1
  12. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWExecuteScript.py +62 -34
  13. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWFileMetadata.py +32 -33
  14. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +9 -9
  15. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWFileWithPath.py +5 -6
  16. aait-2.2.5/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +335 -0
  17. aait-2.2.5/orangecontrib/AAIT/widgets/OWFusionNM.py +410 -0
  18. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +3 -3
  19. aait-2.2.5/orangecontrib/AAIT/widgets/OWKeywords.py +157 -0
  20. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +5 -1
  21. aait-2.2.5/orangecontrib/AAIT/widgets/OWLoadDocuments.py +125 -0
  22. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +4 -1
  23. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWQueryLLM.py +3 -3
  24. aait-2.2.5/orangecontrib/AAIT/widgets/OWSortAndSelect.py +194 -0
  25. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +21 -18
  26. aait-2.2.5/orangecontrib/AAIT/widgets/designer/owchunkanalysis.ui +64 -0
  27. aait-2.2.5/orangecontrib/AAIT/widgets/designer/owexecutescript_TEST.ui +210 -0
  28. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +14 -1
  29. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +77 -6
  30. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +1 -1
  31. aait-2.2.5/orangecontrib/AAIT/widgets/designer/owllm4all.ui +54 -0
  32. aait-2.2.5/orangecontrib/AAIT/widgets/designer/owloaddocuments.ui +86 -0
  33. aait-2.2.5/orangecontrib/AAIT/widgets/icons/chunking_analysis.png +0 -0
  34. aait-2.2.5/orangecontrib/AAIT/widgets/icons/edge_llm.svg +6 -0
  35. aait-2.2.5/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
  36. aait-2.2.5/orangecontrib/AAIT/widgets/icons/owloaddocuments.svg +52 -0
  37. aait-2.2.5/orangecontrib/AAIT/widgets/icons/owsortandselect.svg +6 -0
  38. {aait-2.2.3 → aait-2.2.5}/setup.py +1 -1
  39. aait-2.2.3/PKG-INFO +0 -9
  40. aait-2.2.3/aait.egg-info/PKG-INFO +0 -9
  41. aait-2.2.3/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -161
  42. aait-2.2.3/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -450
  43. {aait-2.2.3 → aait-2.2.5}/License.txt +0 -0
  44. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/dependency_links.txt +0 -0
  45. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/entry_points.txt +0 -0
  46. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/namespace_packages.txt +0 -0
  47. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/requires.txt +0 -0
  48. {aait-2.2.3 → aait-2.2.5}/aait.egg-info/top_level.txt +0 -0
  49. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/__init__.py +0 -0
  50. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  51. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  52. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  53. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  54. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  55. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  56. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  57. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  58. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  59. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  60. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  61. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  62. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  63. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  64. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  65. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  66. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  67. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  68. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  69. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  70. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  71. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  72. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  73. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  74. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  75. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  76. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  77. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  78. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  79. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  80. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  81. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  82. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/__init__.py +0 -0
  83. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/chunking.py +0 -0
  84. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  85. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  86. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  87. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  88. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  89. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  90. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  91. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  92. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  93. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  94. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/test.py +0 -0
  95. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  96. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/llm/translations.py +0 -0
  97. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  98. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  99. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  100. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  101. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/__init__.py +0 -0
  102. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  103. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  104. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  105. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  106. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  107. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  108. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  109. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  110. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  111. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  112. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  113. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  114. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  115. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  116. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  117. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  118. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWAccumulator.py +0 -0
  119. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  120. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  121. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  122. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  123. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  124. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  125. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  126. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  127. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  128. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  129. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  130. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
  131. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  132. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  133. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  134. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  135. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  136. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  137. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  138. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  139. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  140. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  141. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  142. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  143. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  144. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  145. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  146. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  147. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  148. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  149. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  150. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  151. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  152. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  153. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  154. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  155. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  156. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  157. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
  158. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  159. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  160. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  161. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  162. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  163. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  164. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  165. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  166. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  167. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  168. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  169. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  170. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  171. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  172. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  173. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  174. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  175. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
  176. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  177. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  178. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  179. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  180. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  181. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  182. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
  183. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  184. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  185. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  186. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
  187. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  188. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  189. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  190. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  191. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  192. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  193. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  194. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  195. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  196. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  197. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
  198. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
  199. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
  200. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
  201. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
  202. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
  203. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  204. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  205. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  206. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  207. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  208. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  209. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  210. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  211. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
  212. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
  213. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
  214. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  215. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  216. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  217. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  218. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
  219. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  220. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  221. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  222. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  223. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  224. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  225. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  226. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  227. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  228. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  229. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  230. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  231. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  232. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  233. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  234. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  235. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  236. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  237. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  238. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  239. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  240. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  241. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  242. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  243. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  244. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  245. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  246. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  247. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
  248. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  249. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  250. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  251. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  252. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
  253. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  254. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  255. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  256. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  257. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  258. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
  259. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  260. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  261. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  262. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  263. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
  264. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  265. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  266. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  267. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  268. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  269. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  270. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  271. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  272. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  273. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  274. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  275. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  276. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  277. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
  278. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  279. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  280. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  281. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  282. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  283. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  284. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  285. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  286. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  287. {aait-2.2.3 → aait-2.2.5}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  288. {aait-2.2.3 → aait-2.2.5}/orangecontrib/__init__.py +0 -0
  289. {aait-2.2.3 → aait-2.2.5}/setup.cfg +0 -0
aait-2.2.5/PKG-INFO ADDED
@@ -0,0 +1,28 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.2.5
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
10
+ Requires-Dist: torch
11
+ Requires-Dist: sentence-transformers==5.0.0
12
+ Requires-Dist: gpt4all[all]==2.8.2
13
+ Requires-Dist: sacremoses==0.1.1
14
+ Requires-Dist: transformers==4.51.3
15
+ Requires-Dist: sentencepiece==0.2.0
16
+ Requires-Dist: optuna
17
+ Requires-Dist: spacy==3.7.6
18
+ Requires-Dist: markdown
19
+ Requires-Dist: python-multipart
20
+ Requires-Dist: PyMuPDF==1.24.14
21
+ Requires-Dist: chonkie==0.4.1
22
+ Requires-Dist: GPUtil==1.4.0
23
+ Requires-Dist: unidecode==1.3.8
24
+ Requires-Dist: python-docx==1.1.2
25
+ Requires-Dist: psutil
26
+ Requires-Dist: thefuzz==0.22.1
27
+ Requires-Dist: beautifulsoup4==4.12.3
28
+ Requires-Dist: CATEGORIT
@@ -0,0 +1,28 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.2.5
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
10
+ Requires-Dist: torch
11
+ Requires-Dist: sentence-transformers==5.0.0
12
+ Requires-Dist: gpt4all[all]==2.8.2
13
+ Requires-Dist: sacremoses==0.1.1
14
+ Requires-Dist: transformers==4.51.3
15
+ Requires-Dist: sentencepiece==0.2.0
16
+ Requires-Dist: optuna
17
+ Requires-Dist: spacy==3.7.6
18
+ Requires-Dist: markdown
19
+ Requires-Dist: python-multipart
20
+ Requires-Dist: PyMuPDF==1.24.14
21
+ Requires-Dist: chonkie==0.4.1
22
+ Requires-Dist: GPUtil==1.4.0
23
+ Requires-Dist: unidecode==1.3.8
24
+ Requires-Dist: python-docx==1.1.2
25
+ Requires-Dist: psutil
26
+ Requires-Dist: thefuzz==0.22.1
27
+ Requires-Dist: beautifulsoup4==4.12.3
28
+ Requires-Dist: CATEGORIT
@@ -1,4 +1,5 @@
1
1
  License.txt
2
+ setup.cfg
2
3
  setup.py
3
4
  aait.egg-info/PKG-INFO
4
5
  aait.egg-info/SOURCES.txt
@@ -65,6 +66,7 @@ orangecontrib/AAIT/utils/MetManagement.py
65
66
  orangecontrib/AAIT/utils/SimpleDialogQt.py
66
67
  orangecontrib/AAIT/utils/__init__.py
67
68
  orangecontrib/AAIT/utils/aait_repo_file.py
69
+ orangecontrib/AAIT/utils/base_widget.py
68
70
  orangecontrib/AAIT/utils/check_data_in.py
69
71
  orangecontrib/AAIT/utils/delta_local_shared_fodler.py
70
72
  orangecontrib/AAIT/utils/import_uic.py
@@ -105,10 +107,12 @@ orangecontrib/AAIT/widgets/OWGenerateQuestions.py
105
107
  orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
106
108
  orangecontrib/AAIT/widgets/OWGenerateWord.py
107
109
  orangecontrib/AAIT/widgets/OWInputSelector.py
110
+ orangecontrib/AAIT/widgets/OWKeywords.py
108
111
  orangecontrib/AAIT/widgets/OWKeywordsDetection.py
109
112
  orangecontrib/AAIT/widgets/OWLMStudio.py
110
113
  orangecontrib/AAIT/widgets/OWLanguageDetection.py
111
114
  orangecontrib/AAIT/widgets/OWLemmatizer.py
115
+ orangecontrib/AAIT/widgets/OWLoadDocuments.py
112
116
  orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py
113
117
  orangecontrib/AAIT/widgets/OWModel_Falcon.py
114
118
  orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py
@@ -135,6 +139,7 @@ orangecontrib/AAIT/widgets/OWReranking.py
135
139
  orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py
136
140
  orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py
137
141
  orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py
142
+ orangecontrib/AAIT/widgets/OWSortAndSelect.py
138
143
  orangecontrib/AAIT/widgets/OWStartLoop.py
139
144
  orangecontrib/AAIT/widgets/OWTable2Corpus.py
140
145
  orangecontrib/AAIT/widgets/OWTranslation.py
@@ -148,6 +153,7 @@ orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui
148
153
  orangecontrib/AAIT/widgets/designer/owaccumulator.ui
149
154
  orangecontrib/AAIT/widgets/designer/owaddcolumns.ui
150
155
  orangecontrib/AAIT/widgets/designer/owapplyrules.ui
156
+ orangecontrib/AAIT/widgets/designer/owchunkanalysis.ui
151
157
  orangecontrib/AAIT/widgets/designer/owchunking.ui
152
158
  orangecontrib/AAIT/widgets/designer/owconcatrules.ui
153
159
  orangecontrib/AAIT/widgets/designer/owconversellm.ui
@@ -155,6 +161,7 @@ orangecontrib/AAIT/widgets/designer/owembeddings.ui
155
161
  orangecontrib/AAIT/widgets/designer/owemptyswitch.ui
156
162
  orangecontrib/AAIT/widgets/designer/owendloop.ui
157
163
  orangecontrib/AAIT/widgets/designer/owexecutescript.ui
164
+ orangecontrib/AAIT/widgets/designer/owexecutescript_TEST.ui
158
165
  orangecontrib/AAIT/widgets/designer/owextrachunks.ui
159
166
  orangecontrib/AAIT/widgets/designer/owextracttokens.ui
160
167
  orangecontrib/AAIT/widgets/designer/owfilemetadata.ui
@@ -169,6 +176,8 @@ orangecontrib/AAIT/widgets/designer/owkeyword.ui
169
176
  orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui
170
177
  orangecontrib/AAIT/widgets/designer/owlangdetect.ui
171
178
  orangecontrib/AAIT/widgets/designer/owlemmatizer.ui
179
+ orangecontrib/AAIT/widgets/designer/owllm4all.ui
180
+ orangecontrib/AAIT/widgets/designer/owloaddocuments.ui
172
181
  orangecontrib/AAIT/widgets/designer/owloadworkflow.ui
173
182
  orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui
174
183
  orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui
@@ -204,10 +213,12 @@ orangecontrib/AAIT/widgets/icons/MDViewer.png
204
213
  orangecontrib/AAIT/widgets/icons/Mistral.png
205
214
  orangecontrib/AAIT/widgets/icons/apply_rules.svg
206
215
  orangecontrib/AAIT/widgets/icons/category.svg
216
+ orangecontrib/AAIT/widgets/icons/chunking_analysis.png
207
217
  orangecontrib/AAIT/widgets/icons/dark_green.txt
208
218
  orangecontrib/AAIT/widgets/icons/de.png
209
219
  orangecontrib/AAIT/widgets/icons/document_generator.png
210
220
  orangecontrib/AAIT/widgets/icons/documents.png
221
+ orangecontrib/AAIT/widgets/icons/edge_llm.svg
211
222
  orangecontrib/AAIT/widgets/icons/endloop.png
212
223
  orangecontrib/AAIT/widgets/icons/extra_chunks.png
213
224
  orangecontrib/AAIT/widgets/icons/in_or_out.png
@@ -243,8 +254,10 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
243
254
  orangecontrib/AAIT/widgets/icons/owfusion_nm.png
244
255
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
245
256
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
257
+ orangecontrib/AAIT/widgets/icons/owkeywords.png
246
258
  orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png
247
259
  orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
260
+ orangecontrib/AAIT/widgets/icons/owloaddocuments.svg
248
261
  orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
249
262
  orangecontrib/AAIT/widgets/icons/owmodel_falcon.png
250
263
  orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg
@@ -258,6 +271,7 @@ orangecontrib/AAIT/widgets/icons/owqueryllm.svg
258
271
  orangecontrib/AAIT/widgets/icons/owreranking.svg
259
272
  orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg
260
273
  orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png
274
+ orangecontrib/AAIT/widgets/icons/owsortandselect.svg
261
275
  orangecontrib/AAIT/widgets/icons/owtable2corpus.svg
262
276
  orangecontrib/AAIT/widgets/icons/owtranslation.svg
263
277
  orangecontrib/AAIT/widgets/icons/owtrigger.svg
@@ -1,6 +1,9 @@
1
1
  import copy
2
2
  import os
3
- import GPUtil
3
+ try:
4
+ import GPUtil #sometimes errors occurs on gpu testing
5
+ except:
6
+ pass
4
7
  import psutil
5
8
  import ntpath
6
9
  import platform
@@ -44,50 +47,56 @@ def check_gpu(model_path, argself):
44
47
  argself.can_run = False
45
48
  argself.error("Model is not compatible. It must be a .gguf format.")
46
49
  return
47
- # Calculate the model size in MB with a 1500 MB buffer
48
- model_size = os.path.getsize(model_path) / (1024 ** 3) * 1000
49
- model_size += token_weight * int(argself.n_ctx)
50
- print(f"Required memory: {model_size/1000:.2f}GB")
51
- # If there is no GPU, set use_gpu to False
52
- if len(GPUtil.getGPUs()) == 0:
53
- argself.use_gpu = False
54
- argself.information("Running on CPU. No GPU detected.")
55
- return
56
- # Else
57
- else:
58
- # Get the available VRAM on the first GPU
59
- gpu = GPUtil.getGPUs()[0]
60
- free_vram = gpu.memoryFree
61
- # If there is not enough VRAM on GPU
62
- if free_vram < model_size:
63
- # Set use_gpu to False
64
- argself.use_gpu = False
65
- # Check for available RAM
66
- available_ram = psutil.virtual_memory().available / 1024 / 1024
67
- if available_ram < model_size:
68
- argself.can_run = False
69
- argself.error(f"Cannot run. Both GPU and CPU are too small for this model (required: {model_size/1000:.2f}GB).")
50
+ # sometimes errors occurs on gpu testing
51
+ try:
52
+ # Calculate the model size in MB with a 1500 MB buffer
53
+ model_size = os.path.getsize(model_path) / (1024 ** 3) * 1000
54
+ model_size += token_weight * int(argself.n_ctx)
55
+ print(f"Required memory: {model_size/1000:.2f}GB")
56
+ # If there is no GPU, set use_gpu to False
57
+ if len(GPUtil.getGPUs()) == 0:
58
+ argself.use_gpu = False
59
+ argself.information("Running on CPU. No GPU detected.")
70
60
  return
61
+ # Else
71
62
  else:
72
- argself.warning(f"Running on CPU. GPU seems to be too small for this model (available: {free_vram/1000:.2f}GB || required: {model_size/1000:.2f}GB).")
73
- return
74
- # If there is enough space on GPU
75
- else:
76
- try:
77
- # Load the model and test it
78
- # model = GPT4All(model_name=model_path, model_path=model_path, n_ctx=int(argself.n_ctx),
79
- # allow_download=False, device="cuda")
80
- # answer = model.generate("What if ?", max_tokens=3)
81
- # # If it works, set use_gpu to True
82
- argself.use_gpu = True
83
- argself.information("Running on GPU.")
84
- return
85
- # If importing Llama and reading the model doesn't work
86
- except Exception as e:
63
+ # Get the available VRAM on the first GPU
64
+ gpu = GPUtil.getGPUs()[0]
65
+ free_vram = gpu.memoryFree
66
+ # If there is not enough VRAM on GPU
67
+ if free_vram < model_size:
87
68
  # Set use_gpu to False
88
69
  argself.use_gpu = False
89
- argself.warning(f"GPU cannot be used. (detail: {e})")
90
- return
70
+ # Check for available RAM
71
+ available_ram = psutil.virtual_memory().available / 1024 / 1024
72
+ if available_ram < model_size:
73
+ argself.can_run = False
74
+ argself.error(f"Cannot run. Both GPU and CPU are too small for this model (required: {model_size/1000:.2f}GB).")
75
+ return
76
+ else:
77
+ argself.warning(f"Running on CPU. GPU seems to be too small for this model (available: {free_vram/1000:.2f}GB || required: {model_size/1000:.2f}GB).")
78
+ return
79
+ # If there is enough space on GPU
80
+ else:
81
+ try:
82
+ # Load the model and test it
83
+ # model = GPT4All(model_name=model_path, model_path=model_path, n_ctx=int(argself.n_ctx),
84
+ # allow_download=False, device="cuda")
85
+ # answer = model.generate("What if ?", max_tokens=3)
86
+ # # If it works, set use_gpu to True
87
+ argself.use_gpu = True
88
+ argself.information("Running on GPU.")
89
+ return
90
+ # If importing Llama and reading the model doesn't work
91
+ except Exception as e:
92
+ # Set use_gpu to False
93
+ argself.use_gpu = False
94
+ argself.warning(f"GPU cannot be used. (detail: {e})")
95
+ return
96
+ except:
97
+ argself.use_gpu = False
98
+ argself.warning(f"GPU cannot be used.")
99
+ return
91
100
 
92
101
 
93
102
  def load_model(model_path, use_gpu, n_ctx=10000):
@@ -9,37 +9,31 @@ import fitz
9
9
  import docx
10
10
 
11
11
 
12
+
12
13
  def process_documents(dirpath):
13
- if dirpath is None or not Path(dirpath).exists():
14
+ if dirpath is None or not os.path.exists(dirpath):
14
15
  return None, None
15
16
 
16
- # Normalize dirpath
17
- dirpath = Path(dirpath).resolve()
18
-
19
17
  # get path from user selection
20
18
  embeddings = check_for_embeddings(dirpath)
19
+ dirpath = dirpath.replace("\\","/")
21
20
 
22
21
  # Set selected path in the saved embeddings
23
22
  if embeddings is not None:
24
- common_path = Path(find_common_root(embeddings)).resolve()
23
+ common_path = find_common_root(embeddings).replace("\\","/")
25
24
  for row in embeddings:
26
- row_path = Path(str(row["path"].value)).resolve()
27
- # Replace common root with the current dirpath
28
- try:
29
- row["path"] = str(dirpath / row_path.relative_to(common_path))
30
- except ValueError:
31
- # If relative_to fails (paths not matching), just normalize
32
- row["path"] = str(row_path)
25
+ row["path"] = row["path"].value.replace("\\","/").replace(common_path, dirpath)
33
26
 
34
27
  # Verify which files are already processed
35
28
  files_to_process = get_files_to_process(dirpath, embeddings)
36
29
 
37
30
  rows = []
38
31
  for file in files_to_process:
39
- file = Path(file).resolve()
40
- content = extract_text(str(file)) # extractor may expect string
41
- filename = file.name
42
- row = [str(file), filename, content] # store strings in Orange table
32
+ # Get the text content from the file
33
+ content = extract_text(file)
34
+ filename = ntpath.basename(file)
35
+ # Build a row containing dirpath | filename | content
36
+ row = [file, filename, content]
43
37
  rows.append(row)
44
38
 
45
39
  # Build a table with the constructed rows
@@ -51,115 +45,136 @@ def process_documents(dirpath):
51
45
  return out_data, embeddings
52
46
 
53
47
 
54
- def check_for_embeddings(folder_path):
55
- """
56
- Check for an embeddings.pkl file in a given folder. Return its content if it exists.
57
-
58
- Parameters:
59
- folder_path (str | Path): The path to the folder where embeddings.pkl may exist.
60
-
61
- Returns:
62
- Table or None: The content of embeddings.pkl, or None if not found.
63
- """
64
- folder_path = Path(folder_path).resolve()
65
-
66
- filepaths = [
67
- folder_path / "embeddings_question.pkl",
68
- folder_path / "embeddings.pkl"
69
- ]
70
-
71
- for filepath in filepaths:
72
- if filepath.exists():
73
- return Table.from_file(str(filepath)) # Table.from_file expects a str
74
- return None
75
-
76
-
77
48
  def find_common_root(data_table, column_name="path"):
78
49
  """Finds the common root path from a column of file paths in an Orange Data Table."""
79
- paths = [Path(str(row[column_name].value)).resolve()
80
- for row in data_table if row[column_name] is not None]
50
+ paths = [str(row[column_name]) for row in data_table if row[column_name] is not None]
81
51
  if not paths:
82
52
  return ""
83
- return str(Path(os.path.commonpath(paths)).resolve())
53
+ return os.path.commonpath(paths)
84
54
 
85
55
 
86
56
  def get_files_to_process(folder_path, table=None):
87
57
  """
88
- Finds all PDF/DOCX files in a folder (including subfolders) that are not already in the table
89
- or that have changed since last check (based on file size).
58
+ Finds all PDF files in a folder (including subfolders) that are not already in the table.
59
+ The comparison is based on "name" (relative path from the main folder) instead of full paths.
90
60
 
91
61
  :param folder_path: Path to the folder to scan for documents.
92
- :param table: Orange Data Table with column "path".
93
- :return: List of new/changed file paths.
62
+ :param table: Orange Data Table with columns "path", "name", and "content".
63
+ :return: List of paths to files not present in the table (by name, including subfolder structure).
94
64
  """
95
- supported_extensions = {".pdf", ".docx"}
65
+ #TODO
66
+ # Supported file extensions
67
+ supported_extensions = [".pdf", ".docx"]
96
68
 
97
- folder_path = Path(folder_path).resolve()
98
- filepath_sizes = folder_path / "sizes.json"
99
-
100
- print(filepath_sizes)
101
- print(filepath_sizes.exists())
102
-
103
- # Load previous file sizes
104
- if filepath_sizes.exists():
69
+ # Read the json containing file sizes
70
+ filepath_sizes = os.path.join(folder_path, "sizes.json")
71
+ if os.path.exists(filepath_sizes):
105
72
  with open(filepath_sizes, "r") as json_file:
106
- sizes = {Path(k): v for k, v in json.load(json_file).items()}
73
+ sizes = json.load(json_file)
107
74
  else:
108
- sizes = {}
109
-
110
- print(sizes)
75
+ sizes = dict()
111
76
 
112
- # Extract the existing paths from the Orange Data Table
77
+ # Extract the existing file names from the Orange Data Table
113
78
  if table:
114
- # Orange stores metas as strings turn them into Paths
115
- existing_paths = {Path(str(p)).resolve() for p in table[:, "path"].metas.flatten()}
79
+ existing_paths = set(table[:, "path"].metas.flatten()) # Extract names from the table
116
80
  else:
117
81
  existing_paths = set()
118
82
 
83
+
84
+ # Walk through the folder and its subfolders
119
85
  new_files = []
86
+ for root, _, files in os.walk(folder_path):
87
+ for file in files:
88
+ # Check if the file has a supported extension
89
+ if os.path.splitext(file)[1].lower() in supported_extensions:
90
+ # Add the file if it is not already in the table
91
+ filepath = os.path.join(root, file).replace("\\","/")
92
+ if filepath not in existing_paths:
93
+ new_files.append(filepath)
94
+ sizes[filepath] = os.path.getsize(filepath)
95
+ # If the file is in the table, verify if the file has been modified (comparing the size)
96
+ else:
97
+ new_size = os.path.getsize(filepath)
98
+ if filepath not in sizes.keys():
99
+ sizes[filepath] = new_size
100
+ else:
101
+ old_size = sizes[filepath]
102
+ if old_size != new_size:
103
+ new_files.append(filepath)
104
+ table = remove_from_table(filepath, table)
105
+ sizes[filepath] = new_size
106
+ with open(filepath_sizes, "w") as json_file:
107
+ json.dump(sizes, json_file, indent=4)
108
+ return new_files
120
109
 
121
- # Walk through the folder and subfolders
122
- for file in folder_path.rglob("*"):
123
- if file.suffix.lower() in supported_extensions:
124
- file = file.resolve()
125
- size = file.stat().st_size
126
110
 
127
- if file not in existing_paths:
128
- # New file
129
- new_files.append(str(file))
130
- sizes[Path(ntpath.basename(file))] = size
131
- else:
132
- # File already in table: check if size changed
133
- print("File: ", Path(ntpath.basename(file)))
134
- old_size = sizes.get(Path(ntpath.basename(file)))
135
- print(old_size)
136
- if old_size is None or old_size != size:
137
- new_files.append(str(file))
138
- table = remove_from_table(file, table)
139
- sizes[Path(ntpath.basename(file))] = size
111
+ def remove_from_table(filepath, table):
112
+ filtered_table = Table.from_list(domain=table.domain,
113
+ rows=[row for row in table if row["path"].value != filepath])
114
+ return filtered_table
140
115
 
141
116
 
142
- # Save updated sizes.json (keys must be strings for JSON)
143
- with open(filepath_sizes, "w") as json_file:
144
- json.dump({str(k): v for k, v in sizes.items()}, json_file, indent=4)
117
+ def check_for_embeddings(folder_path):
118
+ """
119
+ Check for an embeddings.pkl file in a given folder. Return its content if it exists.
145
120
 
146
- return new_files
121
+ Parameters:
122
+ folder_path (str): The path to the folder where embeddings.pkl may exist.
123
+
124
+ Returns:
125
+ Table or None: The content of embeddings.pkl.
126
+ """
127
+ filepaths = [os.path.join(folder_path, "embeddings_question.pkl"),
128
+ os.path.join(folder_path, "embeddings.pkl")]
129
+ for filepath in filepaths:
130
+ if os.path.exists(filepath):
131
+ data = Table.from_file(filepath)
132
+ return data
133
+ else:
134
+ return None
147
135
 
148
136
 
149
- def remove_from_table(filepath, table):
137
+ def load_documents_in_table(table, progress_callback=None, argself=None):
150
138
  """
151
- Remove rows from the Orange table where 'path' matches the given filepath.
139
+ Load the text content of each document listed in a table and add it
140
+ as a new column "content".
141
+
142
+ :param table: Orange.data.Table containing file paths in a column named "path".
143
+ :return: Orange.data.Table with an added meta column "content" containing the extracted text.
152
144
  """
153
- filepath = Path(filepath).resolve()
154
-
155
- filtered_table = Table.from_list(
156
- domain=table.domain,
157
- rows=[
158
- row for row in table
159
- if Path(str(row["path"].value)).resolve() != filepath
160
- ]
161
- )
162
- return filtered_table
145
+ # Make a copy of the table to avoid modifying the original
146
+ data = table.copy()
147
+
148
+ # List to store text from each document
149
+ texts = []
150
+ names = []
151
+ # Iterate over all rows in the table
152
+ for i, row in enumerate(data):
153
+ # Get file path from the "path" column
154
+ filepath = row["path"].value
155
+ # Get text and name
156
+ name = Path(filepath).name
157
+ text = extract_text(filepath)
158
+ # Store results
159
+ names.append(name)
160
+ texts.append(text)
161
+ # Update progress if a callback is provided
162
+ if progress_callback is not None:
163
+ progress_value = float(100 * (i + 1) / len(data))
164
+ progress_callback(progress_value)
165
+ # Check if processing should be stopped
166
+ if argself is not None and getattr(argself, "stop", False):
167
+ break
168
+
169
+ # Create a StringVariable for the new column
170
+ var_content = StringVariable("content")
171
+ var_name = StringVariable("name")
172
+
173
+ # Add the column as a meta-column in the table
174
+ data = data.add_column(variable=var_name, data=names, to_metas=True)
175
+ data = data.add_column(variable=var_content, data=texts, to_metas=True)
176
+ return data
177
+
163
178
 
164
179
 
165
180
  def extract_text(filepath):
@@ -177,11 +192,13 @@ def extract_text(filepath):
177
192
  return extract_text_from_pdf(filepath)
178
193
  elif file_extension == ".docx":
179
194
  return extract_text_from_docx(filepath)
195
+ elif file_extension in [".txt", ".md"]:
196
+ return extract_text_from_txt(filepath)
180
197
  else:
181
- raise ValueError("Format de fichier non supporté. Utilisez un fichier PDF ou DOCX.")
198
+ return "ERROR: Unsupported file format. Please use a .pdf, .docx, .txt, or .md file."
182
199
  except Exception as e:
183
200
  print(f"Erreur lors de l'extraction de texte depuis {filepath}: {e}")
184
- return "Extraction Error"
201
+ return f"ERROR: Extraction Error ({e})"
185
202
 
186
203
 
187
204
  def extract_text_from_pdf(pdf_path):
@@ -205,7 +222,7 @@ def extract_text_from_pdf(pdf_path):
205
222
  return extracted_text
206
223
  except Exception as e:
207
224
  print(f"Erreur lors de l'extraction de texte depuis {pdf_path}: {e}")
208
- return "Extraction Error"
225
+ return f"ERROR: Extraction Error ({e})"
209
226
 
210
227
 
211
228
  def extract_text_from_docx(docx_path):
@@ -250,13 +267,20 @@ def extract_text_from_docx(docx_path):
250
267
  row_text = [cell.text.strip() for cell in row.cells] # Extrait le texte de chaque cellule
251
268
  table_text.append("\t".join(row_text)) # Sépare les colonnes par des tabulations
252
269
  extracted_text.append("\n".join(table_text)) # Ajoute le tableau sous forme de texte
253
-
254
270
  return "\n".join(filter(None, extracted_text)) # Retourne le texte en filtrant les vides
255
271
 
256
272
  except Exception as e:
257
273
  print(f"Erreur lors de l'extraction de texte depuis {docx_path}: {e}")
258
- return "Extraction Error"
274
+ return f"ERROR: Extraction Error ({e})"
275
+
259
276
 
277
+ def extract_text_from_txt(filepath):
278
+ try:
279
+ with open(filepath, 'r', encoding='utf-8') as f:
280
+ return f.read()
281
+ except Exception as e:
282
+ print(f"Erreur lors de l'extraction de texte depuis {filepath}: {e}")
283
+ return f"ERROR: Extraction Error ({e})"
260
284
 
261
285
 
262
286
  def get_pages_of_extract(pdf_path, extract):
@@ -1368,6 +1368,19 @@ def write_file_time(path):
1368
1368
  except Exception as e:
1369
1369
  print(f"Error creating .ok file: {e}")
1370
1370
  return
1371
+ def write_file_arbitrary_time(path,time):
1372
+ time= int(time)
1373
+ time_ok=path[:-4]+".ok"
1374
+ reset_files([time_ok])
1375
+ with open(path, "w") as f:
1376
+ f.write(str(time))
1377
+ f.flush()
1378
+ try:
1379
+ with open(time_ok, "w"):
1380
+ pass
1381
+ except Exception as e:
1382
+ print(f"Error creating .ok file: {e}")
1383
+ return
1371
1384
 
1372
1385
  def read_file_time(path):
1373
1386
  time_ok = path[:-4] + ".ok"