aait 2.2.2.2__tar.gz → 2.2.3__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 (276) hide show
  1. aait-2.2.3/PKG-INFO +9 -0
  2. aait-2.2.3/aait.egg-info/PKG-INFO +9 -0
  3. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/SOURCES.txt +3 -3
  4. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/process_documents.py +99 -70
  5. aait-2.2.3/orangecontrib/AAIT/widgets/OWAccumulator.py +147 -0
  6. aait-2.2.3/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +80 -0
  7. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +1 -1
  8. aait-2.2.3/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
  9. {aait-2.2.2.2 → aait-2.2.3}/setup.py +1 -1
  10. aait-2.2.2.2/PKG-INFO +0 -28
  11. aait-2.2.2.2/aait.egg-info/PKG-INFO +0 -28
  12. aait-2.2.2.2/orangecontrib/AAIT/widgets/OWKeywords.py +0 -153
  13. aait-2.2.2.2/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
  14. {aait-2.2.2.2 → aait-2.2.3}/License.txt +0 -0
  15. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/dependency_links.txt +0 -0
  16. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/entry_points.txt +0 -0
  17. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/namespace_packages.txt +0 -0
  18. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/requires.txt +0 -0
  19. {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/top_level.txt +0 -0
  20. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/__init__.py +0 -0
  21. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  22. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  23. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  24. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  25. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  26. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  27. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  28. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  29. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  30. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  31. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  32. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  33. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  34. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  35. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  36. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  37. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  38. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  39. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  40. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  41. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  42. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  43. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  44. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  45. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  46. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  47. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  48. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  49. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  50. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  51. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  52. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  53. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
  54. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/answers.py +0 -0
  55. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/chunking.py +0 -0
  56. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  57. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  58. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  59. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  60. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  61. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  62. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  63. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  64. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  65. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  66. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/test.py +0 -0
  67. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  68. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/translations.py +0 -0
  69. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  70. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  71. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  72. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  73. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  74. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
  75. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  76. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  77. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  78. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  79. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  80. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  81. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  82. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  83. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  84. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  85. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  86. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  87. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  88. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  89. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  90. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  91. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  92. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  93. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  94. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  95. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  96. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  97. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  98. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  99. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  100. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  101. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
  102. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  103. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  104. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  105. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  106. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
  107. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
  108. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  109. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
  110. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
  111. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  112. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  113. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
  114. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  115. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
  116. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  117. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  118. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  119. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  120. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  121. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  122. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  123. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  124. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  125. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  126. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  127. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  128. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  129. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  130. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  131. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  132. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  133. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  134. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  135. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  136. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  137. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  138. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  139. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  140. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  141. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  142. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  143. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
  144. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  145. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  146. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  147. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  148. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  149. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  150. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  151. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  152. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  153. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  154. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  155. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  156. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  157. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  158. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  159. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  160. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  161. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
  162. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  163. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  164. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  165. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  166. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  167. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  168. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  169. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -0
  170. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
  171. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  172. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  173. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  174. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
  175. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  176. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  177. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  178. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  179. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  180. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  181. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  182. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  183. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  184. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  185. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
  186. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
  187. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
  188. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
  189. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
  190. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
  191. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  192. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  193. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  194. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  195. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  196. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  197. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  198. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  199. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
  200. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
  201. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
  202. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  203. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  204. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  205. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  206. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
  207. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  208. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  209. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  210. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  211. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  212. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  213. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  214. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  215. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  216. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  217. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  218. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  219. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  220. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  221. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  222. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  223. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  224. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  225. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  226. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  227. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  228. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  229. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  230. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  231. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  232. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  233. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  234. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  235. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  236. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  237. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  238. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  239. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
  240. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  241. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  242. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  243. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  244. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  245. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
  246. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  247. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  248. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  249. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  250. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
  251. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  252. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  253. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  254. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  255. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  256. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  257. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  258. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  259. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  260. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  261. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  262. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  263. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  264. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
  265. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  266. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  267. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  268. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  269. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  270. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  271. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  272. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  273. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  274. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  275. {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/__init__.py +0 -0
  276. {aait-2.2.2.2 → aait-2.2.3}/setup.cfg +0 -0
aait-2.2.3/PKG-INFO ADDED
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.2.3
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.2.3
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
@@ -1,5 +1,4 @@
1
1
  License.txt
2
- setup.cfg
3
2
  setup.py
4
3
  aait.egg-info/PKG-INFO
5
4
  aait.egg-info/SOURCES.txt
@@ -82,6 +81,7 @@ orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py
82
81
  orangecontrib/AAIT/utils/tools/first_time_check.py
83
82
  orangecontrib/AAIT/utils/tools/owcorpus_ok.txt
84
83
  orangecontrib/AAIT/widgets/OWAAITResourcesManager.py
84
+ orangecontrib/AAIT/widgets/OWAccumulator.py
85
85
  orangecontrib/AAIT/widgets/OWAddColumns.py
86
86
  orangecontrib/AAIT/widgets/OWApplyRules.py
87
87
  orangecontrib/AAIT/widgets/OWCN2rule_view.py
@@ -105,7 +105,6 @@ orangecontrib/AAIT/widgets/OWGenerateQuestions.py
105
105
  orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
106
106
  orangecontrib/AAIT/widgets/OWGenerateWord.py
107
107
  orangecontrib/AAIT/widgets/OWInputSelector.py
108
- orangecontrib/AAIT/widgets/OWKeywords.py
109
108
  orangecontrib/AAIT/widgets/OWKeywordsDetection.py
110
109
  orangecontrib/AAIT/widgets/OWLMStudio.py
111
110
  orangecontrib/AAIT/widgets/OWLanguageDetection.py
@@ -146,6 +145,7 @@ orangecontrib/AAIT/widgets/__init__.py
146
145
  orangecontrib/AAIT/widgets/designer/owMarkdown.ui
147
146
  orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui
148
147
  orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui
148
+ orangecontrib/AAIT/widgets/designer/owaccumulator.ui
149
149
  orangecontrib/AAIT/widgets/designer/owaddcolumns.ui
150
150
  orangecontrib/AAIT/widgets/designer/owapplyrules.ui
151
151
  orangecontrib/AAIT/widgets/designer/owchunking.ui
@@ -227,6 +227,7 @@ orangecontrib/AAIT/widgets/icons/optimisation.png
227
227
  orangecontrib/AAIT/widgets/icons/optimizer.png
228
228
  orangecontrib/AAIT/widgets/icons/output.png
229
229
  orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg
230
+ orangecontrib/AAIT/widgets/icons/owaccumulator.png
230
231
  orangecontrib/AAIT/widgets/icons/owchunking.png
231
232
  orangecontrib/AAIT/widgets/icons/owconversellm.svg
232
233
  orangecontrib/AAIT/widgets/icons/owedittable.svg
@@ -242,7 +243,6 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
242
243
  orangecontrib/AAIT/widgets/icons/owfusion_nm.png
243
244
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
244
245
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
245
- orangecontrib/AAIT/widgets/icons/owkeywords.png
246
246
  orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png
247
247
  orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
248
248
  orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import json
3
3
  import ntpath
4
+ from pathlib import Path
4
5
 
5
6
  from Orange.data import Table, Domain, StringVariable
6
7
 
@@ -8,31 +9,37 @@ import fitz
8
9
  import docx
9
10
 
10
11
 
11
-
12
12
  def process_documents(dirpath):
13
- if dirpath is None or not os.path.exists(dirpath):
13
+ if dirpath is None or not Path(dirpath).exists():
14
14
  return None, None
15
15
 
16
+ # Normalize dirpath
17
+ dirpath = Path(dirpath).resolve()
18
+
16
19
  # get path from user selection
17
20
  embeddings = check_for_embeddings(dirpath)
18
- dirpath = dirpath.replace("\\","/")
19
21
 
20
22
  # Set selected path in the saved embeddings
21
23
  if embeddings is not None:
22
- common_path = find_common_root(embeddings).replace("\\","/")
24
+ common_path = Path(find_common_root(embeddings)).resolve()
23
25
  for row in embeddings:
24
- row["path"] = row["path"].value.replace("\\","/").replace(common_path, dirpath)
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
33
 
26
34
  # Verify which files are already processed
27
35
  files_to_process = get_files_to_process(dirpath, embeddings)
28
36
 
29
37
  rows = []
30
38
  for file in files_to_process:
31
- # Get the text content from the file
32
- content = extract_text(file)
33
- filename = ntpath.basename(file)
34
- # Build a row containing dirpath | filename | content
35
- row = [file, filename, content]
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
36
43
  rows.append(row)
37
44
 
38
45
  # Build a table with the constructed rows
@@ -44,93 +51,115 @@ def process_documents(dirpath):
44
51
  return out_data, embeddings
45
52
 
46
53
 
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
+
47
77
  def find_common_root(data_table, column_name="path"):
48
78
  """Finds the common root path from a column of file paths in an Orange Data Table."""
49
- paths = [str(row[column_name]) for row in data_table if row[column_name] is not None]
79
+ paths = [Path(str(row[column_name].value)).resolve()
80
+ for row in data_table if row[column_name] is not None]
50
81
  if not paths:
51
82
  return ""
52
- return os.path.commonpath(paths)
83
+ return str(Path(os.path.commonpath(paths)).resolve())
53
84
 
54
85
 
55
86
  def get_files_to_process(folder_path, table=None):
56
87
  """
57
- Finds all PDF files in a folder (including subfolders) that are not already in the table.
58
- The comparison is based on "name" (relative path from the main folder) instead of full paths.
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).
59
90
 
60
91
  :param folder_path: Path to the folder to scan for documents.
61
- :param table: Orange Data Table with columns "path", "name", and "content".
62
- :return: List of paths to files not present in the table (by name, including subfolder structure).
92
+ :param table: Orange Data Table with column "path".
93
+ :return: List of new/changed file paths.
63
94
  """
64
- #TODO
65
- # Supported file extensions
66
- supported_extensions = [".pdf", ".docx"]
95
+ supported_extensions = {".pdf", ".docx"}
67
96
 
68
- # Read the json containing file sizes
69
- filepath_sizes = os.path.join(folder_path, "sizes.json")
70
- if os.path.exists(filepath_sizes):
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():
71
105
  with open(filepath_sizes, "r") as json_file:
72
- sizes = json.load(json_file)
106
+ sizes = {Path(k): v for k, v in json.load(json_file).items()}
73
107
  else:
74
- sizes = dict()
108
+ sizes = {}
75
109
 
76
- # Extract the existing file names from the Orange Data Table
110
+ print(sizes)
111
+
112
+ # Extract the existing paths from the Orange Data Table
77
113
  if table:
78
- existing_paths = set(table[:, "path"].metas.flatten()) # Extract names from the 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
116
  else:
80
117
  existing_paths = set()
81
118
 
82
-
83
- # Walk through the folder and its subfolders
84
119
  new_files = []
85
- for root, _, files in os.walk(folder_path):
86
- for file in files:
87
- # Check if the file has a supported extension
88
- if os.path.splitext(file)[1].lower() in supported_extensions:
89
- # Add the file if it is not already in the table
90
- filepath = os.path.join(root, file).replace("\\","/")
91
- if filepath not in existing_paths:
92
- new_files.append(filepath)
93
- sizes[filepath] = os.path.getsize(filepath)
94
- # If the file is in the table, verify if the file has been modified (comparing the size)
95
- else:
96
- new_size = os.path.getsize(filepath)
97
- if filepath not in sizes.keys():
98
- sizes[filepath] = new_size
99
- else:
100
- old_size = sizes[filepath]
101
- if old_size != new_size:
102
- new_files.append(filepath)
103
- table = remove_from_table(filepath, table)
104
- sizes[filepath] = new_size
105
- with open(filepath_sizes, "w") as json_file:
106
- json.dump(sizes, json_file, indent=4)
107
- return new_files
108
120
 
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
109
126
 
110
- def remove_from_table(filepath, table):
111
- filtered_table = Table.from_list(domain=table.domain,
112
- rows=[row for row in table if row["path"].value != filepath])
113
- return filtered_table
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
114
140
 
115
141
 
116
- def check_for_embeddings(folder_path):
117
- """
118
- Check for an embeddings.pkl file in a given folder. Return its content if it exists.
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)
119
145
 
120
- Parameters:
121
- folder_path (str): The path to the folder where embeddings.pkl may exist.
146
+ return new_files
122
147
 
123
- Returns:
124
- Table or None: The content of embeddings.pkl.
148
+
149
+ def remove_from_table(filepath, table):
125
150
  """
126
- filepaths = [os.path.join(folder_path, "embeddings_question.pkl"),
127
- os.path.join(folder_path, "embeddings.pkl")]
128
- for filepath in filepaths:
129
- if os.path.exists(filepath):
130
- data = Table.from_file(filepath)
131
- return data
132
- else:
133
- return None
151
+ Remove rows from the Orange table where 'path' matches the given filepath.
152
+ """
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
134
163
 
135
164
 
136
165
  def extract_text(filepath):
@@ -0,0 +1,147 @@
1
+ from orangewidget.widget import OWBaseWidget
2
+ import sys
3
+ import os
4
+
5
+ from AnyQt.QtWidgets import QApplication
6
+ from Orange.widgets.utils.signals import Input, Output
7
+ from Orange.data import Domain, Table
8
+
9
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
10
+ from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
11
+ from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
12
+ else:
13
+ from orangecontrib.AAIT.utils.import_uic import uic
14
+ from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
15
+
16
+ @apply_modification_from_python_file(filepath_original_widget=__file__)
17
+ class OWAccumulator(OWBaseWidget):
18
+ name = "Data Accumulator (Flexible Columns)"
19
+ description = "Allows for data accumulation by concatenation, automatically merging non-matching columns."
20
+ priority = 10
21
+ category = "AAIT - TOOLBOX"
22
+ icon = "icons/owaccumulator.png"
23
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
24
+ icon = "icons_dev/owaccumulator.png"
25
+
26
+ # Le chemin du fichier .ui
27
+ gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owaccumulator.ui")
28
+ priority = 1094
29
+
30
+ want_main_area = True
31
+ # want_control_area est mis à False pour utiliser l'UI chargée dans mainArea
32
+ want_control_area = False
33
+
34
+ class Inputs:
35
+ data = Input("Input Data", Table, auto_summary=False)
36
+
37
+ class Outputs:
38
+ sample = Output("Output", Table, auto_summary=False)
39
+ preview = Output("Preview", Table, auto_summary=False)
40
+
41
+ def __init__(self):
42
+ super().__init__()
43
+
44
+ # --- NOUVEAU : Chargement de l'UI et connexion du bouton ---
45
+ # Charge le contenu du .ui dans l'instance du widget (self)
46
+ uic.loadUi(self.gui, self)
47
+
48
+ # Connexion du bouton 'pushButton_send' défini dans le .ui
49
+ self.pushButton_send.clicked.connect(self.push)
50
+
51
+ # --- Variables d'état ---
52
+ self.data = None
53
+ self.out_data = None
54
+
55
+ # --- Appel à post_initialized pour l'alignement ---
56
+ self.post_initialized()
57
+
58
+ def push(self):
59
+ """Sends the accumulated data and resets the accumulator."""
60
+ if self.data is not None:
61
+ self.out_data = self.data.copy()
62
+
63
+ # Send the final output
64
+ self.Outputs.sample.send(self.out_data)
65
+
66
+ # Purge the accumulator
67
+ self.data = None
68
+ self.Outputs.preview.send(None) # Clear preview after purge
69
+ self.information("Data sent and accumulator purged.")
70
+ else:
71
+ self.Outputs.sample.send(None)
72
+ self.warning("Accumulator is empty, nothing to send.")
73
+
74
+ @Inputs.data
75
+ def set_data(self, dataset):
76
+ """Accumulates incoming data, merging columns if necessary, with robust variable handling."""
77
+ self.error("") # Clear previous errors
78
+ if dataset is None:
79
+ # If input is cleared, clear the preview output
80
+ if self.data is not None:
81
+ self.data = None
82
+ self.Outputs.preview.send(None)
83
+ return
84
+
85
+ # --- LOGIQUE DE FUSION DES COLONNES (CONSERVÉE) ---
86
+
87
+ if self.data is None:
88
+ # First data block: initialize the accumulator
89
+ self.data = dataset.copy()
90
+
91
+ else:
92
+ try:
93
+ # 1. Collecter TOUTES les variables (attributs réguliers + méta) des deux tables
94
+ current_all_vars = self.data.domain.variables + self.data.domain.metas
95
+ new_all_vars = dataset.domain.variables + dataset.domain.metas
96
+
97
+ # Utiliser un dictionnaire pour ne conserver qu'une seule variable par nom
98
+ unique_vars = {}
99
+ for var in current_all_vars + new_all_vars:
100
+ if var.name not in unique_vars:
101
+ unique_vars[var.name] = var
102
+
103
+ # 2. Identifier les noms d'attributs réguliers et de méta-attributs uniques
104
+ current_regular_names = set(v.name for v in self.data.domain.variables)
105
+ new_regular_names = set(v.name for v in dataset.domain.variables)
106
+ current_metas_names = set(v.name for v in self.data.domain.metas)
107
+ new_metas_names = set(v.name for v in dataset.domain.metas)
108
+
109
+ all_vars_names = current_regular_names | new_regular_names
110
+ all_metas_names = current_metas_names | new_metas_names
111
+
112
+ # 3. Filtrer les variables uniques pour créer le nouveau domaine
113
+ all_vars = sorted([unique_vars[name] for name in all_vars_names if name not in all_metas_names],
114
+ key=lambda x: x.name)
115
+ all_metas = sorted([unique_vars[name] for name in all_metas_names], key=lambda x: x.name)
116
+
117
+ # 4. Créer le nouveau domaine
118
+ new_domain = Domain(all_vars, metas=all_metas)
119
+
120
+ # 5. Transform (expand) both tables to the new, common domain
121
+ data_expanded = self.data.transform(new_domain)
122
+ dataset_expanded = dataset.transform(new_domain)
123
+
124
+ # 6. Concatenate the rows of the two uniformly expanded tables
125
+ self.data = data_expanded.__class__.concatenate((data_expanded, dataset_expanded))
126
+
127
+ except Exception as e:
128
+ self.error(f"Data tables could not be aggregated/concatenated. Error: {e}")
129
+ return
130
+ # Send the current accumulated data for preview
131
+ self.Outputs.preview.send(self.data)
132
+
133
+ def post_initialized(self):
134
+ """
135
+ Method for post-initialization tasks, aligned with OWChunker structure.
136
+ """
137
+ pass
138
+
139
+
140
+ if __name__ == "__main__":
141
+ app = QApplication(sys.argv)
142
+ my_widget = OWAccumulator()
143
+ my_widget.show()
144
+ if hasattr(app, "exec"):
145
+ app.exec()
146
+ else:
147
+ app.exec_()
@@ -0,0 +1,80 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>470</width>
10
+ <height>293</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <widget class="QGroupBox" name="groupBox">
17
+ <property name="geometry">
18
+ <rect>
19
+ <x>19</x>
20
+ <y>30</y>
21
+ <width>431</width>
22
+ <height>191</height>
23
+ </rect>
24
+ </property>
25
+ <property name="title">
26
+ <string>Parameters</string>
27
+ </property>
28
+ <widget class="QLabel" name="label_2">
29
+ <property name="geometry">
30
+ <rect>
31
+ <x>70</x>
32
+ <y>150</y>
33
+ <width>151</width>
34
+ <height>21</height>
35
+ </rect>
36
+ </property>
37
+ <property name="text">
38
+ <string>Send data</string>
39
+ </property>
40
+ </widget>
41
+ <widget class="QLabel" name="Description">
42
+ <property name="geometry">
43
+ <rect>
44
+ <x>20</x>
45
+ <y>10</y>
46
+ <width>401</width>
47
+ <height>61</height>
48
+ </rect>
49
+ </property>
50
+ <property name="text">
51
+ <string>This widget accumulate data in order to propagate it to a final table.</string>
52
+ </property>
53
+ <property name="textFormat">
54
+ <enum>Qt::AutoText</enum>
55
+ </property>
56
+ <property name="alignment">
57
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
58
+ </property>
59
+ <property name="wordWrap">
60
+ <bool>true</bool>
61
+ </property>
62
+ </widget>
63
+ <widget class="QPushButton" name="pushButton_send">
64
+ <property name="geometry">
65
+ <rect>
66
+ <x>130</x>
67
+ <y>150</y>
68
+ <width>291</width>
69
+ <height>31</height>
70
+ </rect>
71
+ </property>
72
+ <property name="text">
73
+ <string>Send Accumulated Data</string>
74
+ </property>
75
+ </widget>
76
+ </widget>
77
+ </widget>
78
+ <resources/>
79
+ <connections/>
80
+ </ui>
@@ -35,7 +35,7 @@
35
35
  </rect>
36
36
  </property>
37
37
  <property name="text">
38
- <string>The input Data must contain a column &quot;Content&quot;. The input Keywords must contain a column &quot;Keywords&quot;. This widget will count the number of keywords that occur in the content with a fuzzy matching (percentage based on small variations).</string>
38
+ <string>The input Data must contain a column &quot;content&quot;. The input Keywords must contain a column &quot;keywords&quot;. This widget will count the number of keywords that occur in the content with a fuzzy matching (percentage based on small variations).</string>
39
39
  </property>
40
40
  <property name="textFormat">
41
41
  <enum>Qt::AutoText</enum>
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
  NAME = "aait"
5
5
 
6
6
  # Version du package PyPI
7
- VERSION = "2.2.2.2" # la version doit être supérieure à la précédente sinon la publication sera refusée
7
+ VERSION = "2.2.3" # la version doit être supérieure à la précédente sinon la publication sera refusée
8
8
 
9
9
  # Facultatif / Adaptable à souhait
10
10
  AUTHOR = "Orange community"
aait-2.2.2.2/PKG-INFO DELETED
@@ -1,28 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: aait
3
- Version: 2.2.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
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,28 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: aait
3
- Version: 2.2.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
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