aait 1.0.2.1__tar.gz → 1.0.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 (236) hide show
  1. {aait-1.0.2.1 → aait-1.0.3}/PKG-INFO +1 -1
  2. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/SOURCES.txt +4 -0
  4. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/__init__.py +5 -5
  5. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/answers.py +14 -4
  6. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/chunking.py +1 -54
  7. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/process_documents.py +4 -4
  8. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/prompt_management.py +1 -1
  9. aait-1.0.3/orangecontrib/AAIT/llm/test.py +3 -0
  10. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/translations.py +2 -2
  11. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/MetManagement.py +28 -2
  12. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +11 -3
  13. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +1 -1
  14. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/import_uic.py +1 -0
  15. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/subprocess_management.py +41 -19
  16. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/windows_utils.py +1 -1
  17. aait-1.0.3/orangecontrib/AAIT/widgets/OWDeep_Search.py +208 -0
  18. aait-1.0.3/orangecontrib/AAIT/widgets/OWExecuteScript.py +155 -0
  19. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +1 -18
  20. aait-1.0.3/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +41 -0
  21. aait-1.0.3/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +48 -0
  22. {aait-1.0.2.1 → aait-1.0.3}/setup.py +1 -1
  23. aait-1.0.2.1/orangecontrib/AAIT/llm/test.py +0 -133
  24. {aait-1.0.2.1 → aait-1.0.3}/License.txt +0 -0
  25. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/dependency_links.txt +0 -0
  26. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/entry_points.txt +0 -0
  27. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/namespace_packages.txt +0 -0
  28. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/requires.txt +0 -0
  29. {aait-1.0.2.1 → aait-1.0.3}/aait.egg-info/top_level.txt +0 -0
  30. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  31. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  32. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  33. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  34. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  35. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  36. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  37. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  38. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  39. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  40. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  41. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  42. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  43. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  44. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  45. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  46. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  47. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  48. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  49. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  50. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  51. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  52. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  53. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  54. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  55. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  56. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  57. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  58. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  59. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  60. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  61. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  62. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  63. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  64. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
  65. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  66. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  67. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  68. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  69. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  70. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  71. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  72. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  73. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  74. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  75. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  76. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  77. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  78. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
  79. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  80. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  81. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  82. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  83. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  84. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  85. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  86. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  87. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  88. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  89. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  90. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  91. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  92. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  93. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  94. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  95. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  96. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  97. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  98. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  99. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  100. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  101. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  102. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  103. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  104. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  105. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  106. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  107. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  108. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  109. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  110. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  111. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  112. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  113. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  114. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  115. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  116. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  117. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  118. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  119. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  120. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  121. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  122. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  123. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  124. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  125. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  126. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  127. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWPaddleOCR.py +0 -0
  128. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  129. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  130. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  131. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  132. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  133. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  134. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  135. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  136. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  137. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  138. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  139. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  140. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  141. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  142. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  143. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  144. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owdeepsearch.ui +0 -0
  145. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  146. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  147. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  148. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  149. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  150. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  151. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  152. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  153. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  154. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  155. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  156. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  157. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  158. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  159. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  160. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  161. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  162. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  163. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  164. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  165. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  166. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  167. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owpaddleocr.ui +0 -0
  168. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  169. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  170. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  171. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  172. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  173. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  174. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  175. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  176. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  177. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  178. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  179. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  180. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  181. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  182. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  183. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  184. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  185. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  186. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  187. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  188. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  189. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  190. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  191. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  192. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  193. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  194. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  195. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  196. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  197. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  198. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  199. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  200. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  201. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  202. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  203. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  204. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  205. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  206. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  207. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  208. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  209. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  210. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  211. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  212. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  213. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  214. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  215. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  216. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  217. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  218. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  219. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  220. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/paddleocr.svg +0 -0
  221. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  222. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  223. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  224. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  225. {aait-1.0.2.1 → aait-1.0.3}/orangecontrib/__init__.py +0 -0
  226. {aait-1.0.2.1 → aait-1.0.3}/setup.cfg +0 -0
  227. {aait-1.0.2.1 → aait-1.0.3}/tests/test_class_values_context_handler.py +0 -0
  228. {aait-1.0.2.1 → aait-1.0.3}/tests/test_credentials.py +0 -0
  229. {aait-1.0.2.1 → aait-1.0.3}/tests/test_domain_context_handler.py +0 -0
  230. {aait-1.0.2.1 → aait-1.0.3}/tests/test_gui.py +0 -0
  231. {aait-1.0.2.1 → aait-1.0.3}/tests/test_matplotlib_export.py +0 -0
  232. {aait-1.0.2.1 → aait-1.0.3}/tests/test_perfect_domain_context_handler.py +0 -0
  233. {aait-1.0.2.1 → aait-1.0.3}/tests/test_scatterplot_density.py +0 -0
  234. {aait-1.0.2.1 → aait-1.0.3}/tests/test_settings_handler.py +0 -0
  235. {aait-1.0.2.1 → aait-1.0.3}/tests/test_widgets_outputs.py +0 -0
  236. {aait-1.0.2.1 → aait-1.0.3}/tests/test_workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aait
3
- Version: 1.0.2.1
3
+ Version: 1.0.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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aait
3
- Version: 1.0.2.1
3
+ Version: 1.0.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
@@ -89,9 +89,11 @@ orangecontrib/AAIT/widgets/OWChunking.py
89
89
  orangecontrib/AAIT/widgets/OWConcatRules.py
90
90
  orangecontrib/AAIT/widgets/OWConverseLLM.py
91
91
  orangecontrib/AAIT/widgets/OWCreateEmbeddings.py
92
+ orangecontrib/AAIT/widgets/OWDeep_Search.py
92
93
  orangecontrib/AAIT/widgets/OWDisplayMD.py
93
94
  orangecontrib/AAIT/widgets/OWEditTable.py
94
95
  orangecontrib/AAIT/widgets/OWEndLoop.py
96
+ orangecontrib/AAIT/widgets/OWExecuteScript.py
95
97
  orangecontrib/AAIT/widgets/OWExtraChunks.py
96
98
  orangecontrib/AAIT/widgets/OWFileWithPath.py
97
99
  orangecontrib/AAIT/widgets/OWGenerateQuestions.py
@@ -140,6 +142,7 @@ orangecontrib/AAIT/widgets/designer/owconversellm.ui
140
142
  orangecontrib/AAIT/widgets/designer/owdeepsearch.ui
141
143
  orangecontrib/AAIT/widgets/designer/owembeddings.ui
142
144
  orangecontrib/AAIT/widgets/designer/owendloop.ui
145
+ orangecontrib/AAIT/widgets/designer/owexecutescript.ui
143
146
  orangecontrib/AAIT/widgets/designer/owextrachunks.ui
144
147
  orangecontrib/AAIT/widgets/designer/owfilewithpath.ui
145
148
  orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui
@@ -196,6 +199,7 @@ orangecontrib/AAIT/widgets/icons/owchunking.png
196
199
  orangecontrib/AAIT/widgets/icons/owconversellm.svg
197
200
  orangecontrib/AAIT/widgets/icons/owedittable.svg
198
201
  orangecontrib/AAIT/widgets/icons/owembeddings.svg
202
+ orangecontrib/AAIT/widgets/icons/owexecutescript.svg
199
203
  orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
200
204
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
201
205
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
@@ -12,18 +12,18 @@ else: # Execute the file
12
12
  import gc
13
13
  import sys
14
14
  from orangewidget.workflow.discovery import WidgetDiscovery
15
- from orangecanvas.registry import CategoryDescription
15
+ #from orangecanvas.registry import CategoryDescription
16
16
  from orangecanvas.registry.utils import category_from_package_globals
17
17
  from orangecanvas.utils.pkgmeta import get_distribution
18
- from orangecanvas.registry.utils import category_from_package_globals
18
+
19
19
 
20
20
 
21
21
 
22
22
  if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\","/"):
23
- from Orange.widgets.orangecontrib.AAIT.utils.tools import first_time_check
23
+ from Orange.widgets.orangecontrib.AAIT.utils.tools import first_time_check # ignore pyflakes alert
24
24
  from Orange.widgets.orangecontrib.AAIT.utils import MetManagement
25
25
  else:
26
- from orangecontrib.AAIT.utils.tools import first_time_check
26
+ from orangecontrib.AAIT.utils.tools import first_time_check # ignore pyflakes alert
27
27
  from orangecontrib.AAIT.utils import MetManagement
28
28
 
29
29
 
@@ -120,7 +120,7 @@ else: # Execute the file
120
120
  for extention in MetManagement.get_category_extension_to_load():
121
121
  dev=False
122
122
  prefix = ""
123
- extention_a_jouter=extention
123
+ # extention_a_jouter=extention
124
124
  if len(extention) > 4:
125
125
  if extention[:3]=="dev":
126
126
  prefix="__dev"
@@ -111,7 +111,7 @@ def load_model(model_path, use_gpu, n_ctx=10000):
111
111
  return
112
112
 
113
113
 
114
- def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, workflow_id="", progress_callback=None, argself=None):
114
+ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, query_parameters=None, workflow_id="", progress_callback=None, argself=None):
115
115
  """
116
116
  Generates answers using a local LLM for each row in a data table with a "prompt" column.
117
117
 
@@ -124,6 +124,7 @@ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, workflow_id="
124
124
  model_path (str): Path to the local model file.
125
125
  use_gpu (bool): Whether to use GPU (CUDA/Metal) acceleration if available. Default is False.
126
126
  n_ctx (int): Context window size for the model. Default is 4096.
127
+ query_parameters (dict): Dictionary containing the generation parameters, such as temperature, top p...
127
128
  workflow_id (str): ID for streaming the answer.
128
129
  progress_callback (callable, optional): Function to report progress updates.
129
130
  argself (object, optional): An object with a `.stop` attribute to support early termination.
@@ -141,6 +142,10 @@ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, workflow_id="
141
142
  # Load model
142
143
  model = load_model(model_path=model_path, use_gpu=use_gpu, n_ctx=n_ctx)
143
144
 
145
+ # Generation parameters
146
+ if query_parameters is None:
147
+ query_parameters = {"max_tokens": 4096, "temperature": 0.4, "top_p": 0.4, "top_k": 40, "repeat_penalty": 1.15}
148
+
144
149
  # Generate answers on column named "prompt"
145
150
  try:
146
151
  rows = []
@@ -153,7 +158,13 @@ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, workflow_id="
153
158
  assistant_prompt = row["assistant prompt"].value if "assistant prompt" in data.domain else ""
154
159
 
155
160
  prompt = prompt_management.apply_prompt_template(model_path, user_prompt=prompt, assistant_prompt=assistant_prompt, system_prompt=system_prompt)
156
- answer = run_query(prompt, model=model, workflow_id=workflow_id, argself=argself, progress_callback=progress_callback)
161
+ answer = run_query(prompt, model=model,
162
+ max_tokens=query_parameters["max_tokens"],
163
+ temperature=query_parameters["temperature"],
164
+ top_p=query_parameters["top_p"],
165
+ top_k=query_parameters["top_k"],
166
+ repeat_penalty=query_parameters["repeat_penalty"],
167
+ workflow_id=workflow_id, argself=argself, progress_callback=progress_callback)
157
168
  if answer == "":
158
169
  answer = f"Error: The answer could not be generated. The model architecture you tried to use it most likely not supported yet.\n\nModel name: {ntpath.basename(model_path)}"
159
170
  metas += [answer]
@@ -211,7 +222,7 @@ def write_tokens_to_file(token: str, workflow_id=""):
211
222
  f.write(token)
212
223
  f.flush()
213
224
 
214
- def run_query(prompt, model, max_tokens=4096, temperature=0, top_p=0, top_k=40, repeat_penalty=1.15,
225
+ def run_query(prompt, model, max_tokens=4096, temperature=0.4, top_p=0.4, top_k=40, repeat_penalty=1.15,
215
226
  workflow_id="", argself=None, progress_callback=None):
216
227
  """
217
228
  Generates a response from a local LLM model using the given prompt, with support for streaming output
@@ -241,7 +252,6 @@ def run_query(prompt, model, max_tokens=4096, temperature=0, top_p=0, top_k=40,
241
252
  answer = ""
242
253
  for token in model.generate(prompt=prompt, max_tokens=max_tokens, temp=temperature, top_p=top_p, top_k=top_k,
243
254
  repeat_penalty=repeat_penalty, streaming=True, callback=callback_instance):
244
-
245
255
  answer += token
246
256
  write_tokens_to_file(token, workflow_id)
247
257
  if progress_callback is not None:
@@ -134,57 +134,4 @@ def chunk_markdown(content, tokenizer=None, chunk_size=500, chunk_overlap=125):
134
134
  return chunks, metadatas
135
135
 
136
136
  def chunk_semantic():
137
- pass
138
-
139
-
140
-
141
- # def chunk_text(text):
142
- #
143
- # # Basic initialization with default parameters
144
- # local_store_path = get_local_store_path()
145
- # model_name = "all-mpnet-base-v2"
146
- # model = os.path.join(local_store_path, "Models", "NLP", model_name)
147
- # chunker = SemanticChunker(
148
- # embedding_model=model, # Default model
149
- # threshold=0.4, # Similarity threshold (0-1)
150
- # similarity_window=3,
151
- # chunk_size=512, # Maximum tokens per chunk
152
- # #min_chunk_size=300 # minimal chunk size
153
- # )
154
- #
155
- # chunks = chunker.chunk(text)
156
- # chunks1 = []
157
- # for chunk in chunks:
158
- # chunks1.append(chunk.text)
159
- # return chunks1
160
-
161
-
162
- # @staticmethod
163
- # def chunk_data(data):
164
- # """
165
- # Takes a Table, segments the content of each instance into chunks of approximately
166
- # 400 words, stopping at sentence boundaries, and returns a new Table with the new instances.
167
- #
168
- # :param data: The input Table.
169
- # :return: A new Table with the segmented instances.
170
- # """
171
- #
172
- # new_instances = []
173
- # domain = data.domain
174
- #
175
- # # Créer un nouveau domaine avec une colonne "Chunks"
176
- # new_metas = list(domain.metas) + [Orange.data.StringVariable("Chunks")]
177
- # new_domain = Orange.data.Domain(domain.attributes, domain.class_vars, new_metas)
178
- #
179
- # for instance in data:
180
- # content = instance["content"].value # Vérifie que "content" existe bien
181
- # chunks = chunk_text(content) # Découpe le texte en segments
182
- #
183
- # for chunk in chunks:
184
- # # Construire une nouvelle instance avec le segment
185
- # new_metas_values = list(instance.metas) + [chunk]
186
- # new_instance = Orange.data.Instance(new_domain, [instance[x] for x in domain.attributes] + [instance[y] for y in domain.class_vars] + new_metas_values)
187
- # new_instances.append(new_instance)
188
- #
189
- # # Retourner une nouvelle table avec toutes les instances générées
190
- # return Orange.data.Table.from_list(new_domain, new_instances)
137
+ pass
@@ -15,13 +15,13 @@ def process_documents(dirpath):
15
15
 
16
16
  # get path from user selection
17
17
  embeddings = check_for_embeddings(dirpath)
18
- dirpath = dirpath.replace("\\", "/")
18
+ dirpath = dirpath.replace("/", "\\")
19
19
 
20
20
  # Set selected path in the saved embeddings
21
21
  if embeddings is not None:
22
- common_path = find_common_root(embeddings).replace("\\", "/")
22
+ common_path = find_common_root(embeddings).replace("/", "\\")
23
23
  for row in embeddings:
24
- row["path"] = row["path"].value.replace(common_path, dirpath)
24
+ row["path"] = row["path"].value.replace("/", "\\").replace(common_path, dirpath)
25
25
 
26
26
  # Verify which files are already processed
27
27
  files_to_process = get_files_to_process(dirpath, embeddings)
@@ -87,7 +87,7 @@ def get_files_to_process(folder_path, table=None):
87
87
  # Check if the file has a supported extension
88
88
  if os.path.splitext(file)[1].lower() in supported_extensions:
89
89
  # Add the file if it is not already in the table
90
- filepath = os.path.join(root, file).replace("\\", "/")
90
+ filepath = os.path.join(root, file).replace("/", "\\")
91
91
  if filepath not in existing_paths:
92
92
  new_files.append(filepath)
93
93
  sizes[filepath] = os.path.getsize(filepath)
@@ -10,7 +10,7 @@ prompt_templates = {
10
10
 
11
11
 
12
12
 
13
- "mistral": """<s>[INST] {user_prompt} [/INST]\n""",
13
+ "mistral": """<s>[INST] {user_prompt} [/INST]</s>\n""",
14
14
 
15
15
 
16
16
 
@@ -0,0 +1,3 @@
1
+ from sentence_transformers import SentenceTransformer
2
+
3
+ model = SentenceTransformer(r"C:\Users\lucas\AppData\Local\Programs\aait_store\Models\NLP\all-mpnet-base-v2")
@@ -52,10 +52,10 @@ def generate_translation(table, model, tokenizer, progress_callback=None, argsel
52
52
 
53
53
 
54
54
  def translate(text, model, tokenizer, stream=False, argself=None):
55
- tokenized_text = tokenizer([text], return_tensors="pt")
55
+ tokenized_text = tokenizer([text], return_tensors="pt", truncation=True, max_length=512)
56
56
  if not stream:
57
57
  tokenized_translated = model.generate(**tokenized_text)
58
- translated_text = tokenizer.decode(tokenized_translated[0], skip_special_tokens=True)
58
+ translated_text = tokenizer.decode(tokenized_translated[0], skip_special_tokens=True, truncation=True)
59
59
  else: # TODO: décalage bizarre au lancement d'un workflow
60
60
  streamer = TextIteratorStreamer(tokenizer, skip_special_tokens=True)
61
61
  generation_kwargs = dict(tokenized_text, streamer=streamer, max_new_tokens=512, num_beams=1)
@@ -464,7 +464,7 @@ def get_local_store_path():
464
464
  os.makedirs(store_ia_path,exist_ok=True)
465
465
  # create blanck file with future remote path
466
466
  try:
467
- with open(store_ia_path + '/remote_ressources_path.txt', 'w') as fp:
467
+ with open(store_ia_path + '/remote_ressources_path.txt', 'w'):
468
468
  pass
469
469
  except:
470
470
  SimpleDialogQt.BoxError("error impossible to write file :"+ store_ia_path)
@@ -1322,6 +1322,7 @@ def get_api_local_folder(workflow_id=""):
1322
1322
  workflow_id=workflow_id[:-4]
1323
1323
  result+=workflow_id+"/"
1324
1324
  return result
1325
+
1325
1326
  def get_api_local_folder_admin():
1326
1327
  return get_api_local_folder()[:-1]+"_adm/"
1327
1328
 
@@ -1332,17 +1333,40 @@ def get_path_linkHTMLWorkflow():
1332
1333
  aait_path = get_local_store_path()
1333
1334
  return aait_path + "Parameters/linkHTMLWorkflow/"
1334
1335
 
1336
+ def get_path_mailFolder():
1337
+ aait_path = get_local_store_path()
1338
+ return aait_path + "exchangeMail/"
1339
+
1340
+ def get_secret_content_dir():
1341
+ aait_path = get_local_store_path()
1342
+ the_path=aait_path+"/keys/"
1343
+ if not os.path.exists(the_path):
1344
+ os.makedirs(the_path)
1345
+ return the_path
1335
1346
 
1336
1347
  def get_second_from_1970():
1337
1348
  return int(time.time())
1338
1349
 
1339
1350
  def write_file_time(path):
1340
1351
  time= get_second_from_1970()
1352
+ time_ok=path[:-3]+".ok"
1353
+ reset_files([time_ok])
1341
1354
  with open(path, "w") as f:
1342
1355
  f.write(str(time))
1356
+ try:
1357
+ with open(time_ok, "w"):
1358
+ pass
1359
+ except Exception as e:
1360
+ print(f"Error creating .ok file: {e}")
1343
1361
  return
1344
1362
 
1345
1363
  def read_file_time(path):
1364
+ time_ok = path[:-3] + ".ok"
1365
+ for _ in range(100):
1366
+ if not os.path.exists(time_ok):
1367
+ time.sleep(0.5)
1368
+ if not os.path.exists(time_ok):
1369
+ return 0 # time out
1346
1370
  with open(path, "r") as f:
1347
1371
  content = f.read()
1348
1372
  return int(content)
@@ -1377,5 +1401,7 @@ if __name__ == "__main__":
1377
1401
  #print(already_downloaded_compressed_server("http://88.172.137.71:40386/share/ma0UJQ8-jqb9uqiM/AAIT_v240916","Models/NLP/all-mpnet-base-v2/config.json",r"C:\Users\timot\aait_store\Models\NLP\all-mpnet-base-v2\config.json"))
1378
1402
  #GetFromRemote("All AI Store")
1379
1403
  #IsStoreCompressed("http://88.172.137.71:40386/share/ma0UJQ8-jqb9uqiM/IFIA_models/repository.aait")
1380
- set_aait_store_remote_ressources_path("http://88.172.137.71:40386/share/ma0UJQ8-jqb9uqiM/IFIA_models/repository.aait")
1404
+ #set_aait_store_remote_ressources_path("http://88.172.137.71:40386/share/ma0UJQ8-jqb9uqiM/IFIA_models/repository.aait")
1405
+ aaa = get_second_from_1970()
1406
+ print(aaa)
1381
1407
 
@@ -55,9 +55,16 @@ def BoxSelectExistingFile(argself,default_dir="",extention="All Files (*);;Text
55
55
  """
56
56
  return "" if nothing was selected else the path
57
57
  """
58
- options = QFileDialog.Options()
59
- options |= QFileDialog.ReadOnly
60
- fileName, _ = QFileDialog.getOpenFileName(argself, "Select a file", default_dir, extention,options=options)
58
+ try: # Qt 6
59
+ readonly = QFileDialog.Option.ReadOnly
60
+ except AttributeError: # Qt 5
61
+ readonly = QFileDialog.ReadOnly
62
+
63
+ fileName, _ = QFileDialog.getOpenFileName(
64
+ argself, "Sélectionner un fichier", default_dir,
65
+ options=readonly
66
+ )
67
+
61
68
  if fileName:
62
69
  fileName=fileName.replace("\\", "/")
63
70
  return fileName
@@ -221,6 +228,7 @@ def get_number_from_dialog(text, value_min, value_max):
221
228
  selected_value = get_number_from_dialog("select a number between 1 et 100 :", 1, 100)
222
229
  print("result :", selected_value)
223
230
  """
231
+ ## surement fausse alarme de pyflakes
224
232
  app = QApplication(sys.argv) if not QApplication.instance() else QApplication.instance()
225
233
  dialog = NumberInputDialog(text, value_min, value_max)
226
234
  if dialog.exec():
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  from datetime import datetime
3
3
  import MetManagement as MetManagement
4
-
4
+ import pandas as pd
5
5
  # Liste des dossiers à ignorer
6
6
  ignored_dirs = {".git", ".bin", "lfs", "__pycache__", ".svn", ".hg", "node_modules"}
7
7
 
@@ -8,3 +8,4 @@ except ImportError:
8
8
  #("uic imported from PyQt6")
9
9
  except ImportError:
10
10
  print("This Orange does not run on PyQt6, could not import uic")
11
+ _ = uic # Supprime l'avertissement Pyflakes si uic n'est pas encore utilisé
@@ -6,8 +6,8 @@ import psutil
6
6
  def open_hide_terminal(command, with_qt=True, env=None):
7
7
  """
8
8
  Ouvre un nouveau terminal indépendant et exécute la commande spécifiée.
9
-
10
- :param command: La commande à exécuter.
9
+ /!\ attention command est une liste
10
+ :param command: La liste de commande à exécuter.
11
11
  :param with_qt: Désactive l'affichage si False (utile pour les applications Qt sans affichage).
12
12
  :param hide_terminal: Masque la fenêtre du terminal si True.
13
13
  :return: Le PID du processus du terminal ouvert.
@@ -24,10 +24,18 @@ def open_hide_terminal(command, with_qt=True, env=None):
24
24
  env['QT_QPA_PLATFORM'] = 'offscreen'
25
25
 
26
26
  process = None
27
+ if not isinstance(command, list):
28
+ raise RuntimeError("error command need to be a list")
29
+ if len(command)==0:
30
+ raise RuntimeError("error command need to be a list with elements")
31
+
27
32
 
28
33
  if sys.platform.startswith("win"):
29
34
  # je ne comprends pas pourquoi shell)=True cache le terminal
30
- process = subprocess.Popen(["cmd.exe", "/k", command], env=env, shell=True,
35
+ # j insere cmd /k command
36
+ command.insert(0,"/k")
37
+ command.insert(0, "cmd.exe")
38
+ process = subprocess.Popen(command, env=env, shell=True,
31
39
  creationflags=subprocess.CREATE_NEW_CONSOLE)
32
40
 
33
41
  # startupinfo = subprocess.STARTUPINFO()
@@ -44,24 +52,26 @@ def open_hide_terminal(command, with_qt=True, env=None):
44
52
  # creationflags=creationflags
45
53
  # )
46
54
  elif sys.platform.startswith("linux"):
55
+ command_chaine = ' '.join(command)
47
56
  if hide_terminal:
48
- process = subprocess.Popen(["bash", "-c", command], env=env, stdout=subprocess.DEVNULL,
57
+ process = subprocess.Popen(["bash", "-c", command_chaine], env=env, stdout=subprocess.DEVNULL,
49
58
  stderr=subprocess.DEVNULL)
50
59
  else:
51
60
  try:
52
- process = subprocess.Popen(["gnome-terminal", "--", "bash", "-c", command + "; exec bash"], env=env)
61
+ process = subprocess.Popen(["gnome-terminal", "--", "bash", "-c", command_chaine + "; exec bash"], env=env)
53
62
  except FileNotFoundError:
54
- process = subprocess.Popen(["x-terminal-emulator", "-e", "bash", "-c", command + "; exec bash"],
63
+ process = subprocess.Popen(["x-terminal-emulator", "-e", "bash", "-c", command_chaine + "; exec bash"],
55
64
  env=env)
56
65
 
57
66
 
58
67
  elif sys.platform.startswith("darwin"):
68
+ command_chaine = ' '.join(command)
59
69
  if hide_terminal:
60
70
  if with_qt == False:
61
- command = "QT_QPA_PLATFORM=offscreen " + command
71
+ command_chaine = "QT_QPA_PLATFORM=offscreen " + command_chaine
62
72
  # Lancer bash sans ouvrir un terminal visible
63
73
  process = subprocess.Popen(
64
- ["/bin/bash", "-c", command],
74
+ ["/bin/bash", "-c", command_chaine],
65
75
  env=env,
66
76
  stdout=subprocess.DEVNULL,
67
77
  stderr=subprocess.DEVNULL
@@ -69,19 +79,19 @@ def open_hide_terminal(command, with_qt=True, env=None):
69
79
  else:
70
80
  # Lancer bash sans ouvrir un terminal visible
71
81
  process = subprocess.Popen(
72
- ["/bin/bash", "-c", command],
82
+ ["/bin/bash", "-c", command_chaine],
73
83
  env=env,
74
84
  stdout=subprocess.DEVNULL,
75
85
  stderr=subprocess.DEVNULL
76
86
  )
77
87
  else:
78
88
  if with_qt==False:
79
- command = "QT_QPA_PLATFORM=offscreen " + command
89
+ command = "QT_QPA_PLATFORM=offscreen " + command_chaine
80
90
  # Sinon ouvrir Terminal.app
81
- process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command}\"'])
91
+ process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command_chaine}\"'])
82
92
  else:
83
93
  # Sinon ouvrir Terminal.app
84
- process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command}\"'])
94
+ process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command_chaine}\"'])
85
95
  if process:
86
96
  return process.pid
87
97
  else:
@@ -90,8 +100,9 @@ def open_hide_terminal(command, with_qt=True, env=None):
90
100
 
91
101
  def open_terminal(command, with_qt=True, env=None):
92
102
  """
103
+ /!\ attention command est une liste
93
104
  Ouvre un nouveau terminal indépendant et exécute la commande spécifiée.
94
- :param command: La commande à exécuter.
105
+ :param command: La liste de commande à exécuter.
95
106
  :param with_qt: Désactive l'affichage si False (utile pour les applications Qt sans affichage).
96
107
  :return: Le PID du processus du terminal ouvert.
97
108
  """
@@ -105,20 +116,31 @@ def open_terminal(command, with_qt=True, env=None):
105
116
  if not with_qt:
106
117
  env['QT_QPA_PLATFORM'] = 'offscreen'
107
118
  process = None
119
+ if not isinstance(command, list):
120
+ raise RuntimeError("error command need to be a list")
121
+ if len(command)==0:
122
+ raise RuntimeError("error command need to be a list with elements")
123
+
124
+
108
125
 
109
126
  if sys.platform.startswith("win"):
110
- process = subprocess.Popen(["cmd.exe", "/k", command], env=env,creationflags=subprocess.CREATE_NEW_CONSOLE)
127
+ # j insere cmd /k command
128
+ command.insert(0,"/k")
129
+ command.insert(0, "cmd.exe")
130
+ process = subprocess.Popen(command, env=env,creationflags=subprocess.CREATE_NEW_CONSOLE)
111
131
  elif sys.platform.startswith("linux"):
132
+ command_chaine = ' '.join(command)
112
133
  try:
113
- process = subprocess.Popen(["gnome-terminal", "--", "bash", "-c", command + "; exec bash"], env=env)
134
+ process = subprocess.Popen(["gnome-terminal", "--", "bash", "-c", command_chaine + "; exec bash"], env=env)
114
135
  except FileNotFoundError:
115
- process = subprocess.Popen(["x-terminal-emulator", "-e", "bash", "-c", command + "; exec bash"], env=env)
136
+ process = subprocess.Popen(["x-terminal-emulator", "-e", "bash", "-c", command_chaine + "; exec bash"], env=env)
116
137
  elif sys.platform.startswith("darwin"):
138
+ command_chaine = ' '.join(command)
117
139
  if with_qt == False:
118
- command = "QT_QPA_PLATFORM=offscreen "+command
119
- process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command}\"'])
140
+ command_chaine = "QT_QPA_PLATFORM=offscreen "+command_chaine
141
+ process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command_chaine}\"'])
120
142
  else:
121
- process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command}\"'])
143
+ process = subprocess.Popen(["osascript", "-e", f'tell app "Terminal" to do script \"{command_chaine}\"'])
122
144
  if process:
123
145
  return process.pid
124
146
  else:
@@ -93,7 +93,7 @@ if os.name=='nt':
93
93
  ]
94
94
 
95
95
  user32 = ctypes.windll.user32
96
- kernel32 = ctypes.windll.kernel32
96
+ #kernel32 = ctypes.windll.kernel32
97
97
  shell32 = ctypes.windll.shell32
98
98
 
99
99
  SHBrowseForFolderW = shell32.SHBrowseForFolderW