aait 1.0.4.1__tar.gz → 1.0.4.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 (248) hide show
  1. {aait-1.0.4.1 → aait-1.0.4.3}/PKG-INFO +1 -1
  2. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/SOURCES.txt +15 -27
  4. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/MetManagement.py +10 -2
  5. aait-1.0.4.3/orangecontrib/AAIT/utils/mac_utils.py +110 -0
  6. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/windows_utils.py +166 -0
  7. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +10 -2
  8. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +32 -22
  9. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +19 -8
  10. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +79 -3
  11. aait-1.0.4.3/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +63 -0
  12. aait-1.0.4.3/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +64 -0
  13. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +1 -1
  14. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +2 -0
  15. aait-1.0.4.3/orangecontrib/AAIT/widgets/OWReranking.py +199 -0
  16. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +2 -0
  17. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +13 -0
  18. aait-1.0.4.3/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +41 -0
  19. aait-1.0.4.3/orangecontrib/AAIT/widgets/designer/owreranking.ui +41 -0
  20. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  21. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  22. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  23. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  24. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +27 -0
  25. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +27 -27
  26. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +27 -27
  27. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +27 -27
  28. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +27 -27
  29. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/owreranking.svg +16 -0
  30. aait-1.0.4.3/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  31. {aait-1.0.4.1 → aait-1.0.4.3}/setup.py +1 -1
  32. aait-1.0.4.1/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -79
  33. aait-1.0.4.1/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -17
  34. aait-1.0.4.1/orangecontrib/AAIT/llm/SERV_requests.py +0 -73
  35. aait-1.0.4.1/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -17
  36. aait-1.0.4.1/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -170
  37. aait-1.0.4.1/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -53
  38. aait-1.0.4.1/orangecontrib/AAIT/llm/finetuning.py +0 -250
  39. aait-1.0.4.1/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -334
  40. aait-1.0.4.1/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -124
  41. aait-1.0.4.1/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -68
  42. aait-1.0.4.1/orangecontrib/AAIT/llm/main_Finetuning.py +0 -96
  43. aait-1.0.4.1/orangecontrib/AAIT/llm/quickpy.py +0 -99
  44. aait-1.0.4.1/orangecontrib/AAIT/llm/test.py +0 -18
  45. aait-1.0.4.1/orangecontrib/AAIT/llm/test_functions.py +0 -0
  46. aait-1.0.4.1/orangecontrib/IMG4IT/__init__.py +0 -0
  47. aait-1.0.4.1/orangecontrib/IMG4IT/utils/__init__.py +0 -0
  48. aait-1.0.4.1/tests/test_class_values_context_handler.py +0 -75
  49. aait-1.0.4.1/tests/test_credentials.py +0 -76
  50. aait-1.0.4.1/tests/test_domain_context_handler.py +0 -401
  51. aait-1.0.4.1/tests/test_gui.py +0 -140
  52. aait-1.0.4.1/tests/test_matplotlib_export.py +0 -43
  53. aait-1.0.4.1/tests/test_perfect_domain_context_handler.py +0 -148
  54. aait-1.0.4.1/tests/test_scatterplot_density.py +0 -59
  55. aait-1.0.4.1/tests/test_settings_handler.py +0 -27
  56. aait-1.0.4.1/tests/test_widgets_outputs.py +0 -29
  57. aait-1.0.4.1/tests/test_workflows.py +0 -80
  58. {aait-1.0.4.1 → aait-1.0.4.3}/License.txt +0 -0
  59. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/dependency_links.txt +0 -0
  60. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/entry_points.txt +0 -0
  61. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/namespace_packages.txt +0 -0
  62. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/requires.txt +0 -0
  63. {aait-1.0.4.1 → aait-1.0.4.3}/aait.egg-info/top_level.txt +0 -0
  64. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/__init__.py +0 -0
  65. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  66. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  67. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  68. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  69. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  70. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  71. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  72. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  73. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  74. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  75. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  76. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  77. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  78. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  79. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  80. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  81. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  82. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  83. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  84. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  85. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  86. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  87. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  88. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  89. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  90. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  91. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  92. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  93. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
  94. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/answers.py +0 -0
  95. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/chunking.py +0 -0
  96. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  97. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  98. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  99. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  100. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  101. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/llm/translations.py +0 -0
  102. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  103. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  104. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  105. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  106. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
  107. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  108. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  109. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  110. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  111. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  112. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  113. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  114. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  115. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  116. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  117. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  118. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  119. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  120. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  121. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  122. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  123. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  124. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  125. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  126. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  127. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  128. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  129. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  130. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  131. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  132. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  133. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  134. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  135. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  136. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  137. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  138. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  139. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  140. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  141. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  142. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  143. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  144. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  145. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  146. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  147. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  148. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  149. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  150. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  151. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  152. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  153. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  154. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWPaddleOCR.py +0 -0
  155. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  156. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  157. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  158. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  159. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  160. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  161. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  162. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  163. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  164. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  165. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  166. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  167. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  168. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  169. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  170. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  171. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  172. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  173. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  174. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  175. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  176. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  177. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  178. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  179. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  180. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  181. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  182. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  183. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  184. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  185. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  186. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  187. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  188. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  189. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  190. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  191. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  192. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owpaddleocr.ui +0 -0
  193. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  194. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  195. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  196. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  197. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  198. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  199. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  200. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  201. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  202. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  203. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  204. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  205. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  206. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  207. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  208. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  209. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  210. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  211. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  212. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  213. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  214. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  215. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  216. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  217. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  218. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  219. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  220. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  221. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  222. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  223. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  224. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  225. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  226. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  227. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  228. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  229. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  230. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  231. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  232. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  233. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  234. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  235. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  236. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  237. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  238. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  239. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  240. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  241. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  242. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/paddleocr.svg +0 -0
  243. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  244. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  245. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  246. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  247. {aait-1.0.4.1 → aait-1.0.4.3}/orangecontrib/__init__.py +0 -0
  248. {aait-1.0.4.1 → aait-1.0.4.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 1.0.4.1
3
+ Version: 1.0.4.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.1
2
2
  Name: aait
3
- Version: 1.0.4.1
3
+ Version: 1.0.4.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,4 +1,5 @@
1
1
  License.txt
2
+ setup.cfg
2
3
  setup.py
3
4
  aait.egg-info/PKG-INFO
4
5
  aait.egg-info/SOURCES.txt
@@ -37,28 +38,14 @@ orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py
37
38
  orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll
38
39
  orangecontrib/AAIT/llm/GPT4ALL.py
39
40
  orangecontrib/AAIT/llm/GPT4ALL_killer.py
40
- orangecontrib/AAIT/llm/MergeBaseLora.py
41
- orangecontrib/AAIT/llm/SERV_kill_workflow.py
42
- orangecontrib/AAIT/llm/SERV_requests.py
43
- orangecontrib/AAIT/llm/SERV_start_workflow.py
44
- orangecontrib/AAIT/llm/Tutorial_Finetuning.py
45
- orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py
46
41
  orangecontrib/AAIT/llm/__init__.py
47
42
  orangecontrib/AAIT/llm/answers.py
48
43
  orangecontrib/AAIT/llm/chunking.py
49
44
  orangecontrib/AAIT/llm/embeddings.py
50
- orangecontrib/AAIT/llm/finetuning.py
51
- orangecontrib/AAIT/llm/functions_DatasetGeneration.py
52
- orangecontrib/AAIT/llm/functions_Finetuning.py
53
45
  orangecontrib/AAIT/llm/lemmes.py
54
46
  orangecontrib/AAIT/llm/lmstudio.py
55
- orangecontrib/AAIT/llm/main_DatasetGeneration.py
56
- orangecontrib/AAIT/llm/main_Finetuning.py
57
47
  orangecontrib/AAIT/llm/process_documents.py
58
48
  orangecontrib/AAIT/llm/prompt_management.py
59
- orangecontrib/AAIT/llm/quickpy.py
60
- orangecontrib/AAIT/llm/test.py
61
- orangecontrib/AAIT/llm/test_functions.py
62
49
  orangecontrib/AAIT/llm/translations.py
63
50
  orangecontrib/AAIT/optimiser/__init__.py
64
51
  orangecontrib/AAIT/optimiser/optuna_multi.py
@@ -71,6 +58,7 @@ orangecontrib/AAIT/utils/check_data_in.py
71
58
  orangecontrib/AAIT/utils/delta_local_shared_fodler.py
72
59
  orangecontrib/AAIT/utils/import_uic.py
73
60
  orangecontrib/AAIT/utils/initialize_from_ini.py
61
+ orangecontrib/AAIT/utils/mac_utils.py
74
62
  orangecontrib/AAIT/utils/shared_functions.py
75
63
  orangecontrib/AAIT/utils/shared_variables.py
76
64
  orangecontrib/AAIT/utils/subprocess_management.py
@@ -102,6 +90,7 @@ orangecontrib/AAIT/widgets/OWLLM4ALL.py
102
90
  orangecontrib/AAIT/widgets/OWLMStudio.py
103
91
  orangecontrib/AAIT/widgets/OWLanguageDetection.py
104
92
  orangecontrib/AAIT/widgets/OWLemmatizer.py
93
+ orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py
105
94
  orangecontrib/AAIT/widgets/OWModel_Falcon.py
106
95
  orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py
107
96
  orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py
@@ -109,6 +98,7 @@ orangecontrib/AAIT/widgets/OWModel_MPNET.py
109
98
  orangecontrib/AAIT/widgets/OWModel_Mistral.py
110
99
  orangecontrib/AAIT/widgets/OWModel_Qwen.py
111
100
  orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py
101
+ orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py
112
102
  orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py
113
103
  orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py
114
104
  orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py
@@ -123,6 +113,7 @@ orangecontrib/AAIT/widgets/OWPaddleOCR.py
123
113
  orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py
124
114
  orangecontrib/AAIT/widgets/OWQueryLLM.py
125
115
  orangecontrib/AAIT/widgets/OWRandomData.py
116
+ orangecontrib/AAIT/widgets/OWReranking.py
126
117
  orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py
127
118
  orangecontrib/AAIT/widgets/OWStartLoop.py
128
119
  orangecontrib/AAIT/widgets/OWTable2Corpus.py
@@ -149,6 +140,7 @@ orangecontrib/AAIT/widgets/designer/owlangdetect.ui
149
140
  orangecontrib/AAIT/widgets/designer/owlemmatizer.ui
150
141
  orangecontrib/AAIT/widgets/designer/owllm4all.ui
151
142
  orangecontrib/AAIT/widgets/designer/owloadworkflow.ui
143
+ orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui
152
144
  orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui
153
145
  orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui
154
146
  orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui
@@ -163,6 +155,7 @@ orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui
163
155
  orangecontrib/AAIT/widgets/designer/owpaddleocr.ui
164
156
  orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui
165
157
  orangecontrib/AAIT/widgets/designer/owqueryllm.ui
158
+ orangecontrib/AAIT/widgets/designer/owreranking.ui
166
159
  orangecontrib/AAIT/widgets/designer/owstartloop.ui
167
160
  orangecontrib/AAIT/widgets/designer/owtable2corpus.ui
168
161
  orangecontrib/AAIT/widgets/designer/owtranslation.ui
@@ -178,6 +171,7 @@ orangecontrib/AAIT/widgets/icons/documents.png
178
171
  orangecontrib/AAIT/widgets/icons/endloop.png
179
172
  orangecontrib/AAIT/widgets/icons/extra_chunks.png
180
173
  orangecontrib/AAIT/widgets/icons/in_or_out.png
174
+ orangecontrib/AAIT/widgets/icons/input.png
181
175
  orangecontrib/AAIT/widgets/icons/keyword.png
182
176
  orangecontrib/AAIT/widgets/icons/languages.png
183
177
  orangecontrib/AAIT/widgets/icons/llm4all.svg
@@ -190,7 +184,10 @@ orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg
190
184
  orangecontrib/AAIT/widgets/icons/logo_solar.svg
191
185
  orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg
192
186
  orangecontrib/AAIT/widgets/icons/logo_upload.png
187
+ orangecontrib/AAIT/widgets/icons/models.png
193
188
  orangecontrib/AAIT/widgets/icons/optimisation.png
189
+ orangecontrib/AAIT/widgets/icons/optimizer.png
190
+ orangecontrib/AAIT/widgets/icons/output.png
194
191
  orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg
195
192
  orangecontrib/AAIT/widgets/icons/owchunking.png
196
193
  orangecontrib/AAIT/widgets/icons/owconversellm.svg
@@ -201,6 +198,7 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
201
198
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
202
199
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
203
200
  orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
201
+ orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
204
202
  orangecontrib/AAIT/widgets/icons/owmodel_falcon.png
205
203
  orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg
206
204
  orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg
@@ -210,6 +208,7 @@ orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg
210
208
  orangecontrib/AAIT/widgets/icons/owoptimisation.svg
211
209
  orangecontrib/AAIT/widgets/icons/owoptimisationselection.png
212
210
  orangecontrib/AAIT/widgets/icons/owqueryllm.svg
211
+ orangecontrib/AAIT/widgets/icons/owreranking.svg
213
212
  orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg
214
213
  orangecontrib/AAIT/widgets/icons/owtable2corpus.svg
215
214
  orangecontrib/AAIT/widgets/icons/owtranslation.svg
@@ -218,16 +217,5 @@ orangecontrib/AAIT/widgets/icons/paddleocr.svg
218
217
  orangecontrib/AAIT/widgets/icons/processdocuments.svg
219
218
  orangecontrib/AAIT/widgets/icons/qwen-color.png
220
219
  orangecontrib/AAIT/widgets/icons/startloop.png
221
- orangecontrib/AAIT/widgets/icons/widgetFactory.svg
222
- orangecontrib/IMG4IT/__init__.py
223
- orangecontrib/IMG4IT/utils/__init__.py
224
- tests/test_class_values_context_handler.py
225
- tests/test_credentials.py
226
- tests/test_domain_context_handler.py
227
- tests/test_gui.py
228
- tests/test_matplotlib_export.py
229
- tests/test_perfect_domain_context_handler.py
230
- tests/test_scatterplot_density.py
231
- tests/test_settings_handler.py
232
- tests/test_widgets_outputs.py
233
- tests/test_workflows.py
220
+ orangecontrib/AAIT/widgets/icons/tools.png
221
+ orangecontrib/AAIT/widgets/icons/widgetFactory.svg
@@ -528,7 +528,8 @@ def set_aait_store_remote_ressources_path(ressource_path):
528
528
  print("current remote version", version)
529
529
  except:
530
530
  SimpleDialogQt.BoxError(ressource_path+ " is not a valid remote ressource path")
531
- raise Exception(ressource_path+ " is not a valid remote ressource path")
531
+ print(ressource_path+ " is not a valid remote ressource path")
532
+ return
532
533
  store_ia_path = get_local_store_path()
533
534
  # writinf local file with directory path
534
535
  try:
@@ -856,6 +857,10 @@ def download_aait_store_file_or_directory(server_path: str = "", target: str = "
856
857
  output=str(Path(output).resolve().parent).replace('\\','/')+"/"
857
858
  windows_utils.win32_shellcopy(source, output)
858
859
  else:
860
+ #try:
861
+ # windows_utils.mac_shellcopy(source, output)
862
+ #except Exception as e:
863
+ #print(e)
859
864
  try:
860
865
  dialog_progress = SimpleDialogQt.ProgressDialog(
861
866
  title="Synchronsation please wait",
@@ -1335,7 +1340,10 @@ def get_path_linkHTMLWorkflow():
1335
1340
 
1336
1341
  def get_path_mailFolder():
1337
1342
  aait_path = get_local_store_path()
1338
- return aait_path + "exchangeMail/"
1343
+ the_path= aait_path + "exchangeMail/"
1344
+ if not os.path.exists(the_path):
1345
+ os.makedirs(the_path)
1346
+ return the_path
1339
1347
 
1340
1348
  def get_secret_content_dir():
1341
1349
  aait_path = get_local_store_path()
@@ -0,0 +1,110 @@
1
+ import subprocess
2
+ import os
3
+ import sys
4
+
5
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\","/"):
6
+ from Orange.widgets.orangecontrib.AAIT.utils import SimpleDialogQt
7
+ else:
8
+ from orangecontrib.AAIT.utils import SimpleDialogQt
9
+
10
+ def mac_shellcopy(src, dest):
11
+ """
12
+ Copie des fichiers sur macOS avec gestion des timeouts pour Google Drive.
13
+
14
+ :param src: Chemin source (str ou liste de str)
15
+ :param dest: Chemin de destination (str)
16
+ :returns: True si succès, False sinon
17
+ """
18
+ import io
19
+ from tqdm import tqdm
20
+
21
+ BUFFER_SIZE = 10 * 1024 * 1024 # 10MB buffer
22
+
23
+ if isinstance(src, str):
24
+ src = [src]
25
+
26
+ src = [os.path.abspath(s) for s in src]
27
+ dest = os.path.abspath(dest)
28
+
29
+ def copy_file_with_retries(source_path, dest_path, max_retries=3):
30
+ if not os.path.exists(source_path):
31
+ print(f"Erreur : fichier source introuvable : {source_path}")
32
+ return False
33
+
34
+ # Créer le dossier de destination
35
+ os.makedirs(os.path.dirname(dest_path), exist_ok=True)
36
+
37
+ # Obtenir la taille du fichier
38
+ try:
39
+ file_size = os.path.getsize(source_path)
40
+ except OSError:
41
+ print(f"Impossible d'obtenir la taille du fichier : {source_path}")
42
+ return False
43
+
44
+ for attempt in range(max_retries):
45
+ try:
46
+ with open(source_path, 'rb') as source, \
47
+ open(dest_path, 'wb') as target, \
48
+ tqdm(total=file_size, unit='B', unit_scale=True,
49
+ desc=f"Copie de {os.path.basename(source_path)}") as pbar:
50
+
51
+ while True:
52
+ buf = source.read(BUFFER_SIZE)
53
+ if not buf:
54
+ break
55
+ target.write(buf)
56
+ pbar.update(len(buf))
57
+
58
+ # Vérifier que la copie est complète
59
+ if os.path.getsize(dest_path) == file_size:
60
+ return True
61
+ else:
62
+ print(
63
+ f"Erreur : taille du fichier incorrecte après la copie, tentative {attempt + 1}/{max_retries}")
64
+ continue
65
+
66
+ except IOError as e:
67
+ if e.errno == 60: # Operation timed out
68
+ print(f"Timeout lors de la copie, tentative {attempt + 1}/{max_retries}")
69
+ # Supprimer le fichier partiellement copié
70
+ try:
71
+ if os.path.exists(dest_path):
72
+ os.remove(dest_path)
73
+ except:
74
+ pass
75
+ if attempt < max_retries - 1:
76
+ continue
77
+ print(f"Erreur lors de la copie : {e}")
78
+ return False
79
+ except Exception as e:
80
+ print(f"Erreur inattendue : {e}")
81
+ return False
82
+
83
+ return False
84
+
85
+ try:
86
+ for s in src:
87
+ filename = os.path.basename(s)
88
+ destination_path = os.path.join(dest, filename)
89
+
90
+ # Notification de début
91
+ os.system(
92
+ f'''osascript -e 'display notification "Début de la copie de {filename}" with title "Copie de fichier"' ''')
93
+
94
+ success = copy_file_with_retries(s, destination_path)
95
+
96
+ if not success:
97
+ # Notification d'échec
98
+ os.system(
99
+ f'''osascript -e 'display notification "Échec de la copie de {filename}" with title "Erreur de copie"' ''')
100
+ return False
101
+
102
+ # Notification de succès
103
+ os.system(
104
+ f'''osascript -e 'display notification "Copie terminée de {filename}" with title "Copie réussie"' ''')
105
+
106
+ return True
107
+
108
+ except Exception as e:
109
+ print(f"Erreur globale : {e}")
110
+ return False
@@ -331,3 +331,169 @@ if os.name=='nt':
331
331
  return ""
332
332
  else:
333
333
  return parts[0] if parts else ""
334
+
335
+
336
+
337
+
338
+ def select_new_file_ctypes(file_filter="All Files (*.*)"):
339
+ """
340
+ Opens a native Windows file dialog for creating a new file.
341
+
342
+ Args:
343
+ file_filter (str): File type filters, e.g., "Text Files (*.txt)" or "All Files (*.*)".
344
+
345
+ Returns:
346
+ str: Selected file path as a string, or an empty string if cancelled.
347
+ """
348
+ OFN_EXPLORER = 0x00080000
349
+ MAX_PATH = 65536 # Large buffer for filename
350
+
351
+ class OPENFILENAME(ctypes.Structure):
352
+ _fields_ = [
353
+ ("lStructSize", ctypes.wintypes.DWORD),
354
+ ("hwndOwner", ctypes.wintypes.HWND),
355
+ ("hInstance", ctypes.wintypes.HINSTANCE),
356
+ ("lpstrFilter", ctypes.c_wchar_p),
357
+ ("lpstrCustomFilter", ctypes.c_wchar_p),
358
+ ("nMaxCustFilter", ctypes.wintypes.DWORD),
359
+ ("nFilterIndex", ctypes.wintypes.DWORD),
360
+ ("lpstrFile", ctypes.c_wchar_p),
361
+ ("nMaxFile", ctypes.wintypes.DWORD),
362
+ ("lpstrFileTitle", ctypes.c_wchar_p),
363
+ ("nMaxFileTitle", ctypes.wintypes.DWORD),
364
+ ("lpstrInitialDir", ctypes.c_wchar_p),
365
+ ("lpstrTitle", ctypes.c_wchar_p),
366
+ ("Flags", ctypes.wintypes.DWORD),
367
+ ("nFileOffset", ctypes.wintypes.WORD),
368
+ ("nFileExtension", ctypes.wintypes.WORD),
369
+ ("lpstrDefExt", ctypes.c_wchar_p),
370
+ ("lCustData", ctypes.wintypes.LPARAM),
371
+ ("lpfnHook", ctypes.c_void_p),
372
+ ("lpTemplateName", ctypes.c_wchar_p),
373
+ ("pvReserved", ctypes.c_void_p),
374
+ ("dwReserved", ctypes.wintypes.DWORD),
375
+ ("FlagsEx", ctypes.wintypes.DWORD),
376
+ ]
377
+
378
+ user32 = ctypes.windll.user32
379
+ comdlg32 = ctypes.windll.comdlg32
380
+
381
+ # Convert file_filter into Windows format: "Description\0Pattern\0..."
382
+ if "(" in file_filter and ")" in file_filter:
383
+ description = file_filter.split("(")[0].strip()
384
+ pattern = file_filter[file_filter.find("(")+1:file_filter.find(")")]
385
+ else:
386
+ description = "All Files"
387
+ pattern = "*.*"
388
+
389
+ # Extract first extension for default
390
+ first_ext = pattern.split(";")[0].strip().lstrip("*.")
391
+ if not first_ext:
392
+ first_ext = "txt"
393
+
394
+ filter_combined = f"{description}\0{pattern}\0All Files\0*.*\0\0"
395
+
396
+ file_buffer = ctypes.create_unicode_buffer(MAX_PATH)
397
+
398
+ ofn = OPENFILENAME()
399
+ ofn.lStructSize = ctypes.sizeof(OPENFILENAME)
400
+ ofn.hwndOwner = 0
401
+ ofn.lpstrFilter = filter_combined
402
+ ofn.lpstrFile = ctypes.cast(file_buffer, ctypes.c_wchar_p)
403
+ ofn.nMaxFile = MAX_PATH
404
+ ofn.lpstrTitle = "Create New File"
405
+ ofn.Flags = OFN_EXPLORER
406
+ ofn.lpstrDefExt = first_ext # <- extension ajoutée automatiquement si absente
407
+
408
+ # Mémoriser les fenêtres existantes
409
+ hwnd_list_before = []
410
+ def enum_windows_proc(hwnd, lParam):
411
+ hwnd_list_before.append(hwnd)
412
+ return True
413
+
414
+ EnumWindows = user32.EnumWindows
415
+ EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.wintypes.BOOL, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
416
+ EnumWindows(EnumWindowsProc(enum_windows_proc), 0)
417
+
418
+ # Ouvre la boîte de dialogue
419
+ if not comdlg32.GetSaveFileNameW(ctypes.byref(ofn)):
420
+ return ""
421
+
422
+ time.sleep(0.1)
423
+
424
+ # Fenêtres après
425
+ hwnd_list_after = []
426
+ EnumWindows(EnumWindowsProc(lambda hwnd, lParam: hwnd_list_after.append(hwnd) or True), 0)
427
+ new_hwnds = list(set(hwnd_list_after) - set(hwnd_list_before))
428
+
429
+ selector_hwnd = None
430
+ for hwnd in new_hwnds:
431
+ length = user32.GetWindowTextLengthW(hwnd)
432
+ if length > 0:
433
+ title = ctypes.create_unicode_buffer(length + 1)
434
+ user32.GetWindowTextW(hwnd, title, length + 1)
435
+ if "Save" in title.value:
436
+ selector_hwnd = hwnd
437
+ break
438
+
439
+ def enforce_modal(hwnd):
440
+ if not hwnd:
441
+ return
442
+ while user32.IsWindow(hwnd):
443
+ user32.SetForegroundWindow(hwnd)
444
+ user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0,
445
+ 0x0002 | 0x0001 | 0x0040) # SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW
446
+ time.sleep(0.2)
447
+
448
+ if selector_hwnd:
449
+ threading.Thread(target=enforce_modal, args=(selector_hwnd,), daemon=True).start()
450
+
451
+ result = ctypes.wstring_at(ctypes.addressof(file_buffer), file_buffer._length_)
452
+ return result.split('\0', 1)[0].replace("\\", "/")
453
+
454
+
455
+
456
+ import subprocess
457
+ import os
458
+ import sys
459
+
460
+ def mac_shellcopy(src, dest):
461
+ """
462
+ Copy files or directories on macOS using AppleScript to show a native progress dialog.
463
+ :param src: Path to source file or directory (str or list of str)
464
+ :param dest: Path to destination directory (str)
465
+ :returns: True if successful, False otherwise
466
+ """
467
+ if isinstance(src, str):
468
+ src = [src]
469
+ src = [os.path.abspath(s) for s in src]
470
+ dest = os.path.abspath(dest)
471
+
472
+ # AppleScript for copying with progress dialog
473
+ script = f'''
474
+ set srcList to {{{", ".join([f'POSIX file "{s}"' for s in src])}}}
475
+ set destFolder to POSIX file "{dest}"
476
+ tell application "Finder"
477
+ repeat with aSrc in srcList
478
+ duplicate aSrc to destFolder with replacing
479
+ end repeat
480
+ end tell
481
+ '''
482
+
483
+ try:
484
+ result = subprocess.run(
485
+ ['osascript', '-e', script],
486
+ capture_output=True,
487
+ text=True
488
+ )
489
+ if result.returncode == 0:
490
+ return True
491
+ else:
492
+ print("AppleScript error:", result.stderr)
493
+ return False
494
+ except Exception as e:
495
+ print("Error:", e)
496
+ return False
497
+
498
+ # Usage:
499
+ # mac_shellcopy("/path/to/source", "/path/to/destination")
@@ -349,13 +349,20 @@ class OWAAITResourcesManager(widget.OWWidget):
349
349
  descriptions[name] = element["description"][0]
350
350
 
351
351
  self.descriptions = descriptions
352
+ print(self.descriptions)
352
353
  self.comboBox.addItems(workflows)
353
354
 
355
+ if workflows:
356
+ self.handleComboBoxChange(0)
357
+
354
358
  def handleComboBoxChange(self, index):
355
359
  selected_file = self.comboBox.itemText(index)
356
- if selected_file=="":
360
+ if selected_file == "":
361
+ self.label_info.setText("")
357
362
  return
358
-
363
+ # Set the label to the description
364
+ description = self.descriptions.get(selected_file, "")
365
+ self.label_info.setText(description)
359
366
 
360
367
  def read_description(self, file_name):
361
368
  # Chemin du fichier texte contenant la description
@@ -367,6 +374,7 @@ class OWAAITResourcesManager(widget.OWWidget):
367
374
  description = file.read()
368
375
  else:
369
376
  description = ""
377
+ print("alllloooo: ", description)
370
378
  return description
371
379
 
372
380
  def saveFile(self):
@@ -4,9 +4,10 @@ import re
4
4
  import Orange.data
5
5
  from Orange.widgets import widget
6
6
  from Orange.widgets.widget import Input, Output
7
- from Orange.data import Table, Domain, DiscreteVariable
7
+ from Orange.data import Table, Domain, DiscreteVariable
8
8
  from AnyQt.QtWidgets import QPushButton, QCheckBox
9
9
  from Orange.widgets.settings import Setting
10
+
10
11
  # from fontTools.varLib.mutator import curr
11
12
 
12
13
  if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
@@ -16,6 +17,7 @@ else:
16
17
  from orangecontrib.AAIT.utils.import_uic import uic
17
18
  from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
18
19
 
20
+
19
21
  @apply_modification_from_python_file(filepath_original_widget=__file__)
20
22
  class OWApplyRules(widget.OWWidget):
21
23
  name = "Apply Rules to data"
@@ -27,6 +29,7 @@ class OWApplyRules(widget.OWWidget):
27
29
  keywords = "Apply Rules to data"
28
30
  gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owapplyrules.ui")
29
31
  want_control_area = False
32
+
30
33
  class Inputs:
31
34
  rules = Input("Rules", Orange.data.Table)
32
35
  data = Input("Data", Orange.data.Table)
@@ -36,7 +39,6 @@ class OWApplyRules(widget.OWWidget):
36
39
 
37
40
  strauto: str = Setting('False')
38
41
 
39
-
40
42
  @Inputs.rules
41
43
  def set_rules(self, data):
42
44
  self.rules_data = data
@@ -70,7 +72,6 @@ class OWApplyRules(widget.OWWidget):
70
72
  self.btn_run = self.findChild(QPushButton, "pushButton")
71
73
  self.btn_run.clicked.connect(self.run)
72
74
 
73
-
74
75
  self.checkbox_interface = self.findChild(QCheckBox, 'checkBox')
75
76
  if self.strauto == 'Middle':
76
77
  self.strauto = 'False'
@@ -95,7 +96,14 @@ class OWApplyRules(widget.OWWidget):
95
96
  text_to_edit = text_to_edit[:-1]
96
97
  return text_to_edit
97
98
 
99
+ def normalize_rule(self, unit_rule):
100
+ unit_rule = re.sub(r'(?<!>)>(?!=)', '>=', unit_rule)
101
+ unit_rule = re.sub(r'(?<!<)<(?!=)', '<=', unit_rule)
102
+ return unit_rule
98
103
 
104
+ def needs_normalization(self, unit_rule):
105
+ # Vérifie s'il y a un > non suivi de =, ou un < non suivi de =
106
+ return bool(re.search(r'(?<!>)>(?!=)|(?<!<)<(?!=)', unit_rule))
99
107
 
100
108
  def run(self):
101
109
  self.error("")
@@ -104,8 +112,6 @@ class OWApplyRules(widget.OWWidget):
104
112
  self.error("You must have rules and data")
105
113
  return
106
114
 
107
-
108
-
109
115
  data_regle = self.rules_data
110
116
  data_value = self.data
111
117
  num_col_regle = data_regle.domain.index("regle")
@@ -120,34 +126,36 @@ class OWApplyRules(widget.OWWidget):
120
126
 
121
127
  ## cette partie permet de gérer le cas ou dans une règle une variable n'est pas présente dans les données d'entrées et de pas avoir une erreur
122
128
  regl_list = str(current_regle).split(" and ")
123
- compteur=0
129
+ compteur = 0
124
130
  for unit_rule in regl_list:
125
- compteur=compteur+1
131
+ compteur = compteur + 1
132
+ if self.needs_normalization(unit_rule) and "->" not in unit_rule:
133
+ unit_rule = self.normalize_rule(unit_rule)
126
134
  current_var, current_symb, current_value = re.split(r'(<=|>=)', unit_rule)
127
135
  current_var = self.del_space_debut_fin(current_var)
128
136
  if current_var not in data_value.domain:
129
137
  var_not_in_domain.append(current_var)
130
- if compteur!=1:
131
- current_var="and "+ current_var
132
- value_in_rule_not_in_domain.append(current_var +" "+ current_symb + current_value)
138
+ if compteur != 1:
139
+ current_var = "and " + current_var
140
+ value_in_rule_not_in_domain.append(current_var + " " + current_symb + current_value)
133
141
  if len(var_not_in_domain) > 0:
134
142
  self.warning("Warning " + ",".join(var_not_in_domain) + " not in possible variable")
135
143
 
136
- for j,element in enumerate(value_in_rule_not_in_domain):
144
+ for j, element in enumerate(value_in_rule_not_in_domain):
137
145
  current_regle = str(current_regle).replace(element, "")
138
146
 
139
147
  # if current rules start with " and " we need to remove the begin of the rule
140
- test_current_regle=str(current_regle)
148
+ test_current_regle = str(current_regle)
141
149
  # print("#####")
142
150
  # print(test_current_regle)
143
151
  # print(type(test_current_regle))
144
152
  # print("##########################")
145
- while(test_current_regle[0]==" "):
146
- test_current_regle=test_current_regle[1:]
147
- if len(test_current_regle)>=4:
148
- if test_current_regle[:4]=="and ":
149
- test_current_regle=test_current_regle[4:]
150
- current_regle=test_current_regle
153
+ while (test_current_regle[0] == " "):
154
+ test_current_regle = test_current_regle[1:]
155
+ if len(test_current_regle) >= 4:
156
+ if test_current_regle[:4] == "and ":
157
+ test_current_regle = test_current_regle[4:]
158
+ current_regle = test_current_regle
151
159
  print(current_regle)
152
160
  for i in range(len(data_value)):
153
161
  new_regle = str(current_regle)
@@ -196,15 +204,17 @@ class OWApplyRules(widget.OWWidget):
196
204
 
197
205
  def on_checkbox_toggled(self, state):
198
206
  if state == 2: # Qt.Checked (valeur 2 pour "coché")
199
- self.strauto='True'
207
+ self.strauto = 'True'
200
208
  elif state == 0: # Qt.Unchecked (valeur 0 pour "décoché")
201
- self.strauto='False'
202
- elif state==1:
209
+ self.strauto = 'False'
210
+ elif state == 1:
203
211
  self.strauto = 'Middle'
204
212
 
213
+
205
214
  if __name__ == "__main__":
206
215
  from AnyQt.QtWidgets import QApplication
216
+
207
217
  app = QApplication(sys.argv)
208
218
  my_widget = OWApplyRules()
209
219
  my_widget.show()
210
- app.exec_()
220
+ app.exec_()