aait 2.2.2.1__tar.gz → 2.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 (279) hide show
  1. {aait-2.2.2.1 → aait-2.2.2.3}/PKG-INFO +7 -2
  2. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/PKG-INFO +7 -2
  3. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/SOURCES.txt +8 -1
  4. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/answers.py +1 -1
  5. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/process_documents.py +58 -5
  6. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/MetManagement.py +13 -0
  7. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/windows_utils.py +158 -114
  8. aait-2.2.2.3/orangecontrib/AAIT/widgets/OWAccumulator.py +162 -0
  9. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWEditTable.py +2 -2
  10. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -1
  11. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWFileMetadata.py +32 -33
  12. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +9 -9
  13. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +5 -6
  14. aait-2.2.2.3/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +335 -0
  15. aait-2.2.2.3/orangecontrib/AAIT/widgets/OWFusionNM.py +410 -0
  16. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +1 -1
  17. aait-2.2.2.3/orangecontrib/AAIT/widgets/OWKeywords.py +153 -0
  18. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +5 -1
  19. aait-2.2.2.3/orangecontrib/AAIT/widgets/OWLoadDocuments.py +125 -0
  20. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +3 -3
  21. aait-2.2.2.3/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +83 -0
  22. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +14 -1
  23. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +77 -6
  24. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +1 -1
  25. aait-2.2.2.3/orangecontrib/AAIT/widgets/designer/owloaddocuments.ui +86 -0
  26. aait-2.2.2.3/orangecontrib/AAIT/widgets/icons/owaccumulatator.png +0 -0
  27. aait-2.2.2.3/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
  28. aait-2.2.2.3/orangecontrib/AAIT/widgets/icons/owloaddocuments.svg +52 -0
  29. {aait-2.2.2.1 → aait-2.2.2.3}/setup.py +1 -1
  30. aait-2.2.2.1/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -161
  31. aait-2.2.2.1/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -450
  32. {aait-2.2.2.1 → aait-2.2.2.3}/License.txt +0 -0
  33. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/dependency_links.txt +0 -0
  34. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/entry_points.txt +0 -0
  35. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/namespace_packages.txt +0 -0
  36. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/requires.txt +0 -0
  37. {aait-2.2.2.1 → aait-2.2.2.3}/aait.egg-info/top_level.txt +0 -0
  38. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/__init__.py +0 -0
  39. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  40. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  41. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  42. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  43. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  44. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  45. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  46. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  47. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  48. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  49. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  50. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  51. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  52. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  53. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  54. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  55. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  56. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  57. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  58. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  59. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  60. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  61. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  62. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  63. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  64. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  65. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  66. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  67. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  68. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  69. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  70. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  71. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
  72. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/chunking.py +0 -0
  73. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  74. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  75. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  76. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  77. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  78. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  79. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  80. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  81. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  82. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  83. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/test.py +0 -0
  84. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  85. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/llm/translations.py +0 -0
  86. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  87. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  88. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  89. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  90. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
  91. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  92. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  93. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  94. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  95. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  96. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  97. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  98. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  99. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  100. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  101. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  102. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  103. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  104. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  105. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  106. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  107. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  108. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  109. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  110. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  111. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  112. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  113. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  114. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  115. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  116. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  117. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  118. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  119. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  120. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
  121. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  122. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  123. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  124. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  125. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  126. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  127. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  128. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  129. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  130. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  131. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  132. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  133. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  134. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  135. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  136. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  137. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  138. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  139. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  140. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  141. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  142. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  143. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  144. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  145. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  146. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  147. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  148. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
  149. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  150. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  151. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  152. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  153. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  154. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  155. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  156. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  157. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  158. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  159. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  160. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  161. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  162. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  163. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  164. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  165. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  166. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
  167. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  168. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  169. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  170. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  171. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  172. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  173. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
  174. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  175. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  176. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  177. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
  178. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  179. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  180. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  181. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  182. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  183. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  184. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  185. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  186. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  187. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  188. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
  189. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
  190. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
  191. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
  192. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
  193. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
  194. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  195. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  196. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  197. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  198. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  199. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  200. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  201. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  202. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
  203. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
  204. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
  205. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  206. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  207. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  208. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  209. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
  210. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  211. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  212. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  213. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  214. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  215. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  216. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  217. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  218. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  219. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  220. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  221. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  222. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  223. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  224. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  225. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  226. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  227. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  228. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  229. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  230. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  231. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  232. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  233. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  234. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  235. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  236. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  237. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  238. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  239. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  240. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  241. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  242. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
  243. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  244. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  245. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  246. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  247. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  248. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
  249. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  250. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  251. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  252. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  253. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
  254. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  255. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  256. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  257. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  258. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  259. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  260. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  261. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  262. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  263. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  264. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  265. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  266. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  267. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
  268. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  269. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  270. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  271. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  272. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  273. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  274. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  275. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  276. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  277. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  278. {aait-2.2.2.1 → aait-2.2.2.3}/orangecontrib/__init__.py +0 -0
  279. {aait-2.2.2.1 → aait-2.2.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: aait
3
- Version: 2.2.2.1
3
+ Version: 2.2.2.3
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -26,3 +26,8 @@ Requires-Dist: psutil
26
26
  Requires-Dist: thefuzz==0.22.1
27
27
  Requires-Dist: beautifulsoup4==4.12.3
28
28
  Requires-Dist: CATEGORIT
29
+ Dynamic: author
30
+ Dynamic: keywords
31
+ Dynamic: license-file
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: aait
3
- Version: 2.2.2.1
3
+ Version: 2.2.2.3
4
4
  Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
5
  Home-page:
6
6
  Author: Orange community
@@ -26,3 +26,8 @@ Requires-Dist: psutil
26
26
  Requires-Dist: thefuzz==0.22.1
27
27
  Requires-Dist: beautifulsoup4==4.12.3
28
28
  Requires-Dist: CATEGORIT
29
+ Dynamic: author
30
+ Dynamic: keywords
31
+ Dynamic: license-file
32
+ Dynamic: requires-dist
33
+ Dynamic: summary
@@ -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,10 +105,12 @@ 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
108
109
  orangecontrib/AAIT/widgets/OWKeywordsDetection.py
109
110
  orangecontrib/AAIT/widgets/OWLMStudio.py
110
111
  orangecontrib/AAIT/widgets/OWLanguageDetection.py
111
112
  orangecontrib/AAIT/widgets/OWLemmatizer.py
113
+ orangecontrib/AAIT/widgets/OWLoadDocuments.py
112
114
  orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py
113
115
  orangecontrib/AAIT/widgets/OWModel_Falcon.py
114
116
  orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py
@@ -145,6 +147,7 @@ orangecontrib/AAIT/widgets/__init__.py
145
147
  orangecontrib/AAIT/widgets/designer/owMarkdown.ui
146
148
  orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui
147
149
  orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui
150
+ orangecontrib/AAIT/widgets/designer/owaccumulator.ui
148
151
  orangecontrib/AAIT/widgets/designer/owaddcolumns.ui
149
152
  orangecontrib/AAIT/widgets/designer/owapplyrules.ui
150
153
  orangecontrib/AAIT/widgets/designer/owchunking.ui
@@ -168,6 +171,7 @@ orangecontrib/AAIT/widgets/designer/owkeyword.ui
168
171
  orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui
169
172
  orangecontrib/AAIT/widgets/designer/owlangdetect.ui
170
173
  orangecontrib/AAIT/widgets/designer/owlemmatizer.ui
174
+ orangecontrib/AAIT/widgets/designer/owloaddocuments.ui
171
175
  orangecontrib/AAIT/widgets/designer/owloadworkflow.ui
172
176
  orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui
173
177
  orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui
@@ -226,6 +230,7 @@ orangecontrib/AAIT/widgets/icons/optimisation.png
226
230
  orangecontrib/AAIT/widgets/icons/optimizer.png
227
231
  orangecontrib/AAIT/widgets/icons/output.png
228
232
  orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg
233
+ orangecontrib/AAIT/widgets/icons/owaccumulatator.png
229
234
  orangecontrib/AAIT/widgets/icons/owchunking.png
230
235
  orangecontrib/AAIT/widgets/icons/owconversellm.svg
231
236
  orangecontrib/AAIT/widgets/icons/owedittable.svg
@@ -241,8 +246,10 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
241
246
  orangecontrib/AAIT/widgets/icons/owfusion_nm.png
242
247
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
243
248
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
249
+ orangecontrib/AAIT/widgets/icons/owkeywords.png
244
250
  orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png
245
251
  orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
252
+ orangecontrib/AAIT/widgets/icons/owloaddocuments.svg
246
253
  orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
247
254
  orangecontrib/AAIT/widgets/icons/owmodel_falcon.png
248
255
  orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg
@@ -224,7 +224,7 @@ def write_tokens_to_file(token: str, workflow_id=""):
224
224
  f.flush()
225
225
 
226
226
 
227
- def run_query(prompt, model, max_tokens=4096, temperature=0.4, top_p=0.4, top_k=40, repeat_penalty=1.15,
227
+ def run_query(prompt, model, max_tokens=4096, temperature=0, top_p=0, top_k=40, repeat_penalty=1.15,
228
228
  workflow_id="", argself=None, progress_callback=None):
229
229
  """
230
230
  Generates a response from a local LLM model using the given prompt, with support for streaming output
@@ -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
 
@@ -133,6 +134,49 @@ def check_for_embeddings(folder_path):
133
134
  return None
134
135
 
135
136
 
137
+ def load_documents_in_table(table, progress_callback=None, argself=None):
138
+ """
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.
144
+ """
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
+
178
+
179
+
136
180
  def extract_text(filepath):
137
181
  """
138
182
  Extrait le texte d'un fichier en fonction de son type (PDF ou DOCX).
@@ -148,11 +192,13 @@ def extract_text(filepath):
148
192
  return extract_text_from_pdf(filepath)
149
193
  elif file_extension == ".docx":
150
194
  return extract_text_from_docx(filepath)
195
+ elif file_extension in [".txt", ".md"]:
196
+ return extract_text_from_txt(filepath)
151
197
  else:
152
- 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."
153
199
  except Exception as e:
154
200
  print(f"Erreur lors de l'extraction de texte depuis {filepath}: {e}")
155
- return "Extraction Error"
201
+ return f"ERROR: Extraction Error ({e})"
156
202
 
157
203
 
158
204
  def extract_text_from_pdf(pdf_path):
@@ -176,7 +222,7 @@ def extract_text_from_pdf(pdf_path):
176
222
  return extracted_text
177
223
  except Exception as e:
178
224
  print(f"Erreur lors de l'extraction de texte depuis {pdf_path}: {e}")
179
- return "Extraction Error"
225
+ return f"ERROR: Extraction Error ({e})"
180
226
 
181
227
 
182
228
  def extract_text_from_docx(docx_path):
@@ -221,13 +267,20 @@ def extract_text_from_docx(docx_path):
221
267
  row_text = [cell.text.strip() for cell in row.cells] # Extrait le texte de chaque cellule
222
268
  table_text.append("\t".join(row_text)) # Sépare les colonnes par des tabulations
223
269
  extracted_text.append("\n".join(table_text)) # Ajoute le tableau sous forme de texte
224
-
225
270
  return "\n".join(filter(None, extracted_text)) # Retourne le texte en filtrant les vides
226
271
 
227
272
  except Exception as e:
228
273
  print(f"Erreur lors de l'extraction de texte depuis {docx_path}: {e}")
229
- return "Extraction Error"
274
+ return f"ERROR: Extraction Error ({e})"
275
+
230
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})"
231
284
 
232
285
 
233
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"
@@ -13,6 +13,9 @@ if os.name=='nt':
13
13
  from win32com.shell import shell, shellcon
14
14
  import ctypes
15
15
  import ctypes.wintypes
16
+ import sys
17
+ from ctypes import windll, c_wchar_p
18
+
16
19
  def win32_shellcopy(src, dest):
17
20
  """
18
21
  Copy files and directories using Windows shell.
@@ -336,121 +339,162 @@ if os.name=='nt':
336
339
 
337
340
 
338
341
 
339
- def select_new_file_ctypes(file_filter="All Files (*.*)", dialog_title="Create New File"):
340
- """
341
- Opens a native Windows file dialog for creating a new file.
342
-
343
- Args:
344
- file_filter (str): File type filters, e.g., "Text Files (*.txt)" or "All Files (*.*)".
345
-
346
- Returns:
347
- str: Selected file path as a string, or an empty string if cancelled.
348
- """
349
- OFN_EXPLORER = 0x00080000
350
- MAX_PATH = 65536 # Large buffer for filename
351
-
352
- class OPENFILENAME(ctypes.Structure):
353
- _fields_ = [
354
- ("lStructSize", ctypes.wintypes.DWORD),
355
- ("hwndOwner", ctypes.wintypes.HWND),
356
- ("hInstance", ctypes.wintypes.HINSTANCE),
357
- ("lpstrFilter", ctypes.c_wchar_p),
358
- ("lpstrCustomFilter", ctypes.c_wchar_p),
359
- ("nMaxCustFilter", ctypes.wintypes.DWORD),
360
- ("nFilterIndex", ctypes.wintypes.DWORD),
361
- ("lpstrFile", ctypes.c_wchar_p),
362
- ("nMaxFile", ctypes.wintypes.DWORD),
363
- ("lpstrFileTitle", ctypes.c_wchar_p),
364
- ("nMaxFileTitle", ctypes.wintypes.DWORD),
365
- ("lpstrInitialDir", ctypes.c_wchar_p),
366
- ("lpstrTitle", ctypes.c_wchar_p),
367
- ("Flags", ctypes.wintypes.DWORD),
368
- ("nFileOffset", ctypes.wintypes.WORD),
369
- ("nFileExtension", ctypes.wintypes.WORD),
370
- ("lpstrDefExt", ctypes.c_wchar_p),
371
- ("lCustData", ctypes.wintypes.LPARAM),
372
- ("lpfnHook", ctypes.c_void_p),
373
- ("lpTemplateName", ctypes.c_wchar_p),
374
- ("pvReserved", ctypes.c_void_p),
375
- ("dwReserved", ctypes.wintypes.DWORD),
376
- ("FlagsEx", ctypes.wintypes.DWORD),
377
- ]
378
-
379
- user32 = ctypes.windll.user32
380
- comdlg32 = ctypes.windll.comdlg32
381
-
382
- # Convert file_filter into Windows format: "Description\0Pattern\0..."
383
- if "(" in file_filter and ")" in file_filter:
384
- description = file_filter.split("(")[0].strip()
385
- pattern = file_filter[file_filter.find("(")+1:file_filter.find(")")]
386
- else:
387
- description = "All Files"
388
- pattern = "*.*"
389
-
390
- # Extract first extension for default
391
- first_ext = pattern.split(";")[0].strip().lstrip("*.")
392
- if not first_ext:
393
- first_ext = "txt"
394
-
395
- filter_combined = f"{description}\0{pattern}\0All Files\0*.*\0\0"
396
-
397
- file_buffer = ctypes.create_unicode_buffer(MAX_PATH)
398
-
399
- ofn = OPENFILENAME()
400
- ofn.lStructSize = ctypes.sizeof(OPENFILENAME)
401
- ofn.hwndOwner = 0
402
- ofn.lpstrFilter = filter_combined
403
- ofn.lpstrFile = ctypes.cast(file_buffer, ctypes.c_wchar_p)
404
- ofn.nMaxFile = MAX_PATH
405
- ofn.lpstrTitle = dialog_title
406
- ofn.Flags = OFN_EXPLORER
407
- ofn.lpstrDefExt = first_ext # <- extension ajoutée automatiquement si absente
408
-
409
- # Mémoriser les fenêtres existantes
410
- hwnd_list_before = []
411
- def enum_windows_proc(hwnd, lParam):
412
- hwnd_list_before.append(hwnd)
413
- return True
414
-
415
- EnumWindows = user32.EnumWindows
416
- EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.wintypes.BOOL, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
417
- EnumWindows(EnumWindowsProc(enum_windows_proc), 0)
418
-
419
- # Ouvre la boîte de dialogue
420
- if not comdlg32.GetSaveFileNameW(ctypes.byref(ofn)):
421
- return ""
422
-
423
- time.sleep(0.1)
424
-
425
- # Fenêtres après
426
- hwnd_list_after = []
427
- EnumWindows(EnumWindowsProc(lambda hwnd, lParam: hwnd_list_after.append(hwnd) or True), 0)
428
- new_hwnds = list(set(hwnd_list_after) - set(hwnd_list_before))
429
-
430
- selector_hwnd = None
431
- target_phrase = (dialog_title or "Save").lower()
432
- for hwnd in new_hwnds:
433
- length = user32.GetWindowTextLengthW(hwnd)
434
- if length > 0:
435
- window_title = ctypes.create_unicode_buffer(length + 1)
436
- user32.GetWindowTextW(hwnd, window_title, length + 1)
437
- if target_phrase in window_title.value.lower():
438
- selector_hwnd = hwnd
439
- break
440
-
441
- def enforce_modal(hwnd):
442
- if not hwnd:
443
- return
444
- while user32.IsWindow(hwnd):
445
- user32.SetForegroundWindow(hwnd)
446
- user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0,
447
- 0x0002 | 0x0001 | 0x0040) # SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW
448
- time.sleep(0.2)
342
+ def select_new_file_ctypes(file_filter="All Files (*.*)", dialog_title="Create New File"):
343
+ """
344
+ Opens a native Windows file dialog for creating a new file.
345
+
346
+ Args:
347
+ file_filter (str): File type filters, e.g., "Text Files (*.txt)" or "All Files (*.*)".
348
+
349
+ Returns:
350
+ str: Selected file path as a string, or an empty string if cancelled.
351
+ """
352
+ OFN_EXPLORER = 0x00080000
353
+ MAX_PATH = 65536 # Large buffer for filename
354
+
355
+ class OPENFILENAME(ctypes.Structure):
356
+ _fields_ = [
357
+ ("lStructSize", ctypes.wintypes.DWORD),
358
+ ("hwndOwner", ctypes.wintypes.HWND),
359
+ ("hInstance", ctypes.wintypes.HINSTANCE),
360
+ ("lpstrFilter", ctypes.c_wchar_p),
361
+ ("lpstrCustomFilter", ctypes.c_wchar_p),
362
+ ("nMaxCustFilter", ctypes.wintypes.DWORD),
363
+ ("nFilterIndex", ctypes.wintypes.DWORD),
364
+ ("lpstrFile", ctypes.c_wchar_p),
365
+ ("nMaxFile", ctypes.wintypes.DWORD),
366
+ ("lpstrFileTitle", ctypes.c_wchar_p),
367
+ ("nMaxFileTitle", ctypes.wintypes.DWORD),
368
+ ("lpstrInitialDir", ctypes.c_wchar_p),
369
+ ("lpstrTitle", ctypes.c_wchar_p),
370
+ ("Flags", ctypes.wintypes.DWORD),
371
+ ("nFileOffset", ctypes.wintypes.WORD),
372
+ ("nFileExtension", ctypes.wintypes.WORD),
373
+ ("lpstrDefExt", ctypes.c_wchar_p),
374
+ ("lCustData", ctypes.wintypes.LPARAM),
375
+ ("lpfnHook", ctypes.c_void_p),
376
+ ("lpTemplateName", ctypes.c_wchar_p),
377
+ ("pvReserved", ctypes.c_void_p),
378
+ ("dwReserved", ctypes.wintypes.DWORD),
379
+ ("FlagsEx", ctypes.wintypes.DWORD),
380
+ ]
381
+
382
+ user32 = ctypes.windll.user32
383
+ comdlg32 = ctypes.windll.comdlg32
384
+
385
+ # Convert file_filter into Windows format: "Description\0Pattern\0..."
386
+ if "(" in file_filter and ")" in file_filter:
387
+ description = file_filter.split("(")[0].strip()
388
+ pattern = file_filter[file_filter.find("(")+1:file_filter.find(")")]
389
+ else:
390
+ description = "All Files"
391
+ pattern = "*.*"
392
+
393
+ # Extract first extension for default
394
+ first_ext = pattern.split(";")[0].strip().lstrip("*.")
395
+ if not first_ext:
396
+ first_ext = "txt"
397
+
398
+ filter_combined = f"{description}\0{pattern}\0All Files\0*.*\0\0"
399
+
400
+ file_buffer = ctypes.create_unicode_buffer(MAX_PATH)
401
+
402
+ ofn = OPENFILENAME()
403
+ ofn.lStructSize = ctypes.sizeof(OPENFILENAME)
404
+ ofn.hwndOwner = 0
405
+ ofn.lpstrFilter = filter_combined
406
+ ofn.lpstrFile = ctypes.cast(file_buffer, ctypes.c_wchar_p)
407
+ ofn.nMaxFile = MAX_PATH
408
+ ofn.lpstrTitle = dialog_title
409
+ ofn.Flags = OFN_EXPLORER
410
+ ofn.lpstrDefExt = first_ext # <- extension ajoutée automatiquement si absente
411
+
412
+ # Mémoriser les fenêtres existantes
413
+ hwnd_list_before = []
414
+ def enum_windows_proc(hwnd, lParam):
415
+ hwnd_list_before.append(hwnd)
416
+ return True
417
+
418
+ EnumWindows = user32.EnumWindows
419
+ EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.wintypes.BOOL, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
420
+ EnumWindows(EnumWindowsProc(enum_windows_proc), 0)
449
421
 
450
- if selector_hwnd:
451
- threading.Thread(target=enforce_modal, args=(selector_hwnd,), daemon=True).start()
422
+ # Ouvre la boîte de dialogue
423
+ if not comdlg32.GetSaveFileNameW(ctypes.byref(ofn)):
424
+ return ""
425
+
426
+ time.sleep(0.1)
427
+
428
+ # Fenêtres après
429
+ hwnd_list_after = []
430
+ EnumWindows(EnumWindowsProc(lambda hwnd, lParam: hwnd_list_after.append(hwnd) or True), 0)
431
+ new_hwnds = list(set(hwnd_list_after) - set(hwnd_list_before))
432
+
433
+ selector_hwnd = None
434
+ target_phrase = (dialog_title or "Save").lower()
435
+ for hwnd in new_hwnds:
436
+ length = user32.GetWindowTextLengthW(hwnd)
437
+ if length > 0:
438
+ window_title = ctypes.create_unicode_buffer(length + 1)
439
+ user32.GetWindowTextW(hwnd, window_title, length + 1)
440
+ if target_phrase in window_title.value.lower():
441
+ selector_hwnd = hwnd
442
+ break
443
+
444
+ def enforce_modal(hwnd):
445
+ if not hwnd:
446
+ return
447
+ while user32.IsWindow(hwnd):
448
+ user32.SetForegroundWindow(hwnd)
449
+ user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0,
450
+ 0x0002 | 0x0001 | 0x0040) # SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW
451
+ time.sleep(0.2)
452
+
453
+ if selector_hwnd:
454
+ threading.Thread(target=enforce_modal, args=(selector_hwnd,), daemon=True).start()
455
+
456
+ result = ctypes.wstring_at(ctypes.addressof(file_buffer), file_buffer._length_)
457
+ return result.split('\0', 1)[0].replace("\\", "/")
458
+
459
+
460
+ def BoxMessage(text: str, mode: int = 0, title: str = None) -> int:
461
+ """
462
+ Affiche une boîte native Windows (via ctypes).
463
+ mode = 0 -> Error
464
+ mode = 1 -> Warning
465
+ mode = 2 -> Info
466
+ Retourne l'ID du bouton cliqué (IDOK = 1).
467
+ usage BoxMessage("Ceci est une erreur", 0)
468
+ BoxMessage("Ceci est un avertissement", 1)
469
+ BoxMessage("Ceci est une information", 2)
470
+ BoxMessage("Ceci est une erreur", 0,"titr1")
471
+ BoxMessage("Ceci est un avertissement", 1,"titr2")
472
+ BoxMessage("Ceci est une information", 2,"titr3")
473
+
474
+
475
+ """
476
+
477
+
478
+ # Flags boutons
479
+ MB_OK = 0x00000000
480
+ MB_SYSTEMMODAL = 0x00001000
481
+ MB_SETFOREGROUND = 0x00010000
482
+ MB_TOPMOST = 0x00040000
483
+
484
+ # Icônes selon mode
485
+ if mode == 0: # Error
486
+ icon_flag = 0x00000010 # MB_ICONERROR
487
+ if title is None: title = "Error"
488
+ elif mode == 1: # Warning
489
+ icon_flag = 0x00000030 # MB_ICONWARNING
490
+ if title is None: title = "Warning"
491
+ elif mode == 2: # Info
492
+ icon_flag = 0x00000040 # MB_ICONINFORMATION
493
+ if title is None: title = "Information"
494
+ else:
495
+ raise ValueError("mode doit être 0=Error, 1=Warning, 2=Info")
452
496
 
453
- result = ctypes.wstring_at(ctypes.addressof(file_buffer), file_buffer._length_)
454
- return result.split('\0', 1)[0].replace("\\", "/")
497
+ flags = MB_OK | icon_flag | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_TOPMOST
455
498
 
499
+ return windll.user32.MessageBoxW(0, c_wchar_p(text), c_wchar_p(title), flags)
456
500