aait 2.3.9__tar.gz → 2.3.9.2__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 (258) hide show
  1. {aait-2.3.9 → aait-2.3.9.2}/PKG-INFO +1 -1
  2. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/__init__.py +42 -0
  4. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/mac_utils.py +10 -5
  5. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/windows_utils.py +1 -2
  6. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWDisplayMD.py +50 -59
  7. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWInputSelector.py +74 -6
  8. {aait-2.3.9 → aait-2.3.9.2}/setup.py +1 -1
  9. {aait-2.3.9 → aait-2.3.9.2}/License.txt +0 -0
  10. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/SOURCES.txt +0 -0
  11. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/dependency_links.txt +0 -0
  12. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/entry_points.txt +0 -0
  13. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/namespace_packages.txt +0 -0
  14. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/requires.txt +0 -0
  15. {aait-2.3.9 → aait-2.3.9.2}/aait.egg-info/top_level.txt +0 -0
  16. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  17. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  18. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/__init__.py +0 -0
  19. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/answers.py +0 -0
  20. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/answers_llama.py +0 -0
  21. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/chunking.py +0 -0
  22. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  23. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  24. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  25. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  26. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  27. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/llm/translations.py +0 -0
  28. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  29. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  30. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  31. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/OperationSystem.py +0 -0
  32. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  33. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/__init__.py +0 -0
  34. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  35. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/aait_table_viewer.py +0 -0
  36. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/base_widget.py +0 -0
  37. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  38. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  39. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  40. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  41. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  42. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  43. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  44. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  45. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  46. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  47. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  48. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  49. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/utils/unlink_table_domain.py +0 -0
  50. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  51. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWAccumulator.py +0 -0
  52. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  53. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  54. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  55. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  56. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  57. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  58. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  59. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  60. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
  61. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  62. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  63. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  64. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  65. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
  66. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
  67. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  68. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
  69. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
  70. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  71. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  72. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
  73. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  74. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
  75. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLLMEngine.py +0 -0
  76. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  77. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  78. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLargeLanguageModel.py +0 -0
  79. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  80. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWLoadDocuments.py +0 -0
  81. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  82. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  83. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  84. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  85. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  86. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  87. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  88. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  89. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  90. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  91. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  92. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  93. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  94. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  95. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  96. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  97. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWOperationSystem.py +0 -0
  98. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  99. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  100. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  101. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  102. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  103. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  104. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  105. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  106. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
  107. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  108. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWSortAndSelect.py +0 -0
  109. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  110. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  111. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  112. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  113. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  114. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  115. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  116. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  117. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/ow_OperationSystem.ui +0 -0
  118. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  119. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  120. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +0 -0
  121. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  122. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  123. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  124. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  125. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  126. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owedgellm.ui +0 -0
  127. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  128. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
  129. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  130. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  131. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owexecutescript_TEST.ui +0 -0
  132. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  133. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  134. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  135. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  136. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  137. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -0
  138. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
  139. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  140. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  141. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  142. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  143. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
  144. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  145. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owlargelanguagemodel.ui +0 -0
  146. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  147. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  148. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owloaddocuments.ui +0 -0
  149. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  150. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  151. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  152. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  153. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  154. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  155. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  156. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  157. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
  158. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
  159. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
  160. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
  161. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
  162. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
  163. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  164. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  165. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  166. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  167. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  168. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  169. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  170. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  171. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
  172. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
  173. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
  174. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owsortandselect.ui +0 -0
  175. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  176. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  177. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  178. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  179. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
  180. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  181. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  182. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  183. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  184. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/blue_down_arrow.svg +0 -0
  185. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  186. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  187. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  188. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  189. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  190. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/edge_llm.svg +0 -0
  191. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  192. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  193. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/green_check.svg +0 -0
  194. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  195. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  196. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  197. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  198. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  199. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  200. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  201. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  202. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  203. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  204. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  205. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  206. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  207. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/operationSystem.png +0 -0
  208. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  209. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  210. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  211. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  212. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
  213. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  214. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  215. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  216. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  217. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
  218. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  219. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  220. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  221. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  222. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  223. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
  224. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  225. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  226. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  227. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  228. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
  229. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
  230. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owlargelanguagemodel.svg +0 -0
  231. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  232. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owloaddocuments.svg +0 -0
  233. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  234. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  235. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  236. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  237. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  238. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  239. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  240. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  241. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  242. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  243. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  244. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  245. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
  246. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owsortandselect.svg +0 -0
  247. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  248. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  249. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  250. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  251. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  252. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  253. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  254. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  255. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  256. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  257. {aait-2.3.9 → aait-2.3.9.2}/orangecontrib/__init__.py +0 -0
  258. {aait-2.3.9 → aait-2.3.9.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.3.9
3
+ Version: 2.3.9.2
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: 2.3.9
3
+ Version: 2.3.9.2
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,5 +1,47 @@
1
1
  import Orange
2
2
  from packaging import version
3
+
4
+ import sys
5
+ import re
6
+ import os
7
+ def check_executable_path():
8
+ exe = sys.executable
9
+
10
+ # caractères spéciaux interdits (tu peux en ajouter)
11
+ forbidden = r'[^A-Za-z0-9_\-./:\\]' # tout ce qui n'est PAS ce set
12
+ pattern = re.compile(forbidden)
13
+
14
+ if " " in exe or pattern.search(exe):
15
+ return False
16
+ return True
17
+
18
+ if not check_executable_path():
19
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
20
+ from orangecontrib.AAIT.utils import SimpleDialogQt
21
+ else:
22
+ from orangecontrib.AAIT.utils import SimpleDialogQt
23
+ SimpleDialogQt.BoxError("You must install this program in a path that does not contain spaces or special characters.")
24
+ exit(0)
25
+
26
+ def check_executable_length(max_length=260):
27
+ exe = sys.executable
28
+ length = len(exe)
29
+
30
+ if length > max_length:
31
+ print(f"ERROR: The installation path is too long ({length} characters). "
32
+ f"Maximum allowed is {max_length}.")
33
+ return False
34
+ return True
35
+
36
+ if not check_executable_length():
37
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
38
+ from orangecontrib.AAIT.utils import SimpleDialogQt
39
+ else:
40
+ from orangecontrib.AAIT.utils import SimpleDialogQt
41
+ SimpleDialogQt.BoxError("The installation path is too long. Please choose a shorter path..")
42
+ exit(0)
43
+
44
+
3
45
  target_version = version.parse("3.37")
4
46
  current_version = version.parse(Orange.version.version)
5
47
  if current_version < target_version: # Skip the file
@@ -359,20 +359,24 @@ if platform.system() == "Darwin":
359
359
  repeat with _f in _fs
360
360
  set end of _list to POSIX path of _f
361
361
  end repeat
362
- return _list as string -- AppleScript joint par ", " par défaut, donc faisons mieux :
362
+
363
+ -- On change temporairement le séparateur texte d'AppleScript
364
+ set oldDelims to AppleScript's text item delimiters
365
+ set AppleScript's text item delimiters to "//////"
366
+ set _joined to _list as text
367
+ set AppleScript's text item delimiters to oldDelims
368
+
369
+ return _joined
363
370
  on error number -128
364
371
  return ""
365
372
  end try
366
373
  end timeout
367
374
  '''
368
- # On exécute puis on convertit la liste AppleScript (qui reviendra "p1, p2, p3") en ';' côté Python
369
375
  cp = _run_osascript(script)
370
376
  raw = cp.stdout.strip()
371
377
  if not raw:
372
378
  return ""
373
- # AppleScript renvoie les listes avec ", " ; on découpe prudemment
374
- parts = [p.strip() for p in raw.split(",") if p.strip()]
375
- return str(";".join(parts))
379
+ return raw # le string avec les chemins séparés par //////
376
380
  else:
377
381
  script = f'''
378
382
  with timeout of 3600 seconds
@@ -389,6 +393,7 @@ if platform.system() == "Darwin":
389
393
  cp = _run_osascript(script)
390
394
  return cp.stdout.strip()
391
395
 
396
+
392
397
  # ----------------------------
393
398
  # 3) Enregistrer sous (nouveau fichier)
394
399
  # ----------------------------
@@ -276,13 +276,12 @@ if os.name=='nt':
276
276
  # Split sur \0
277
277
  parts = buffer_content.split('\0')
278
278
  parts = [p.replace("\\", "/") for p in parts if p]
279
-
280
279
  if multi_select:
281
280
  if len(parts) >= 2:
282
281
  folder = parts[0]
283
282
  files = parts[1:]
284
283
  full_paths = [f"{folder}/{file}" for file in files]
285
- return ';'.join(full_paths)
284
+ return '//////'.join(full_paths)
286
285
  elif len(parts) == 1:
287
286
  return parts[0]
288
287
  else:
@@ -498,50 +498,6 @@ class OWCorpusViewer(OWWidget, ConcurrentWidgetMixin):
498
498
  self.show_docs()
499
499
  self.commit.deferred()
500
500
 
501
- def show_docs(self):
502
- """Show the selected documents in the right area"""
503
- if self.corpus is None:
504
- return
505
-
506
- self.Warning.no_feats_display.clear()
507
- if len(self.display_features) == 0:
508
- self.Warning.no_feats_display()
509
-
510
- if self.show_tokens:
511
- tokens = list(self.corpus.ngrams_iterator(include_postags=True))
512
-
513
- parts = []
514
- for doc_count, c_index in enumerate(sorted(self.selected_documents)):
515
- text = ""
516
- for feature in self.display_features:
517
- value = str(self.corpus[c_index, feature.name])
518
- if feature in self.search_features:
519
- value = self.__mark_text(value)
520
- value = value.replace("\n", "<br/>")
521
- is_image = feature.attributes.get("type", "") == "image"
522
- if is_image and value != "?":
523
- value = os.path.join(feature.attributes.get("origin", ""), value)
524
- value = '<img src="{}"></img>'.format(value)
525
- text += (
526
- f'<tr><td class="variables"><strong>{feature.name}:</strong></td>'
527
- f'<td class="content">{value}</td></tr>'
528
- )
529
-
530
- if self.show_tokens:
531
- tokens_ = "".join(
532
- f'<span class="token">{token}</span>' for token in tokens[c_index]
533
- )
534
- text += (
535
- f'<tr><td class="variables"><strong>Tokens & Tags:</strong></td>'
536
- f"<td>{tokens_}</td></tr>"
537
- )
538
- parts.append(text)
539
-
540
- joined = SEPARATOR.join(parts)
541
- html = f"<table>{joined}</table>"
542
- base = QUrl.fromLocalFile(__file__)
543
- if self.doc_webview is not None:
544
- self.doc_webview.setHtml(HTML.format(html), base)
545
501
 
546
502
  def __mark_text(self, text):
547
503
  search_keyword = self.regexp_filter.strip("|")
@@ -691,22 +647,12 @@ class OWCorpusViewer(OWWidget, ConcurrentWidgetMixin):
691
647
  def convert_markdown_with_syntax_highlighting(self, markdown_text, base_path=""):
692
648
  """
693
649
  Convertit le texte Markdown avec syntaxe de code colorée en HTML.
694
-
695
- Utilise la bibliothèque 'markdown' pour convertir le texte Markdown
696
- en HTML, en incluant les extensions 'fenced_code' et 'codehilite'
697
- pour la syntaxe de code colorée.
698
-
699
- Les options de configuration sont définies pour que la bibliothèque
700
- 'codehilite' utilise les classes CSS pour la coloration syntaxique,
701
- et pour qu'elle ne tente pas de deviner le langage du code.
702
-
703
- Args :
704
- markdown_text (str) : Le texte Markdown à convertir.
705
-
706
- Returns :
707
- str : Le texte HTML converti.
708
650
  """
709
651
 
652
+ # --- Patch : normaliser les listes pour que les puces après un "1." restent des sous-listes ---
653
+ markdown_text = self._normalize_lists_for_markdown(markdown_text)
654
+ # ---------------------------------------------------------------------
655
+
710
656
  # Convertir le Markdown en HTML avec extensions pour le code
711
657
  html_content = markdown.markdown(
712
658
  markdown_text,
@@ -720,7 +666,6 @@ class OWCorpusViewer(OWWidget, ConcurrentWidgetMixin):
720
666
  }
721
667
  )
722
668
 
723
-
724
669
  # Ajouter le CSS pour Pygments
725
670
  css = HtmlFormatter().get_style_defs('.codehilite')
726
671
  html_content = f"<style>{css}</style>{html_content}"
@@ -729,6 +674,52 @@ class OWCorpusViewer(OWWidget, ConcurrentWidgetMixin):
729
674
  html_content = self.adjust_image_paths(html_content, base_path)
730
675
  return html_content
731
676
 
677
+ def _normalize_lists_for_markdown(self, text: str) -> str:
678
+ """
679
+ Transforme les puces qui suivent immédiatement un item numéroté
680
+ en sous-liste (en les indentant), pour éviter une renumérotation 1,2,3,4,5.
681
+
682
+ Exemple :
683
+ 1. Titre
684
+ 2. Autre titre
685
+ - sous-étape
686
+ - sous-étape
687
+
688
+ devient :
689
+ 1. Titre
690
+ 2. Autre titre
691
+ - sous-étape
692
+ - sous-étape
693
+ """
694
+ lines = text.splitlines()
695
+ out = []
696
+ in_ordered_list = False
697
+
698
+ for line in lines:
699
+ stripped = line.lstrip()
700
+
701
+ # Ligne d'une liste numérotée : "1. xxx"
702
+ if re.match(r'^\d+\.\s+', stripped):
703
+ in_ordered_list = True
704
+ # On normalise en supprimant l'indentation superflue éventuelle
705
+ out.append(stripped)
706
+ continue
707
+
708
+ # Ligne d'une puce qui suit une liste numérotée
709
+ if in_ordered_list and re.match(r'^[-*+]\s+', stripped):
710
+ # Si elle n'est pas déjà indentée, on l'indente comme sous-liste
711
+ if not line.startswith(' '):
712
+ out.append(' ' + stripped)
713
+ else:
714
+ out.append(line)
715
+ continue
716
+
717
+ # Autre contenu : on sort du contexte "liste numérotée"
718
+ in_ordered_list = False
719
+ out.append(line)
720
+
721
+ return "\n".join(out)
722
+
732
723
  def adjust_image_paths(self, html_content, base_path):
733
724
  """
734
725
  Corrige les chemins d'images pour qu'ils soient valides même pour des chemins relatifs.
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  from AnyQt.QtWidgets import QPushButton, QApplication, QRadioButton, QComboBox,QCheckBox,QLineEdit
3
3
  import sys
4
-
4
+ import numpy as np
5
5
  from Orange.widgets.settings import Setting
6
6
  from Orange.widgets.widget import OWWidget, Output, Input
7
7
  from Orange.data import Table, Domain, StringVariable
@@ -404,7 +404,7 @@ class OWInputSelector(OWWidget):
404
404
  file_filter=file_filter,
405
405
  dialog_title=dialog_title
406
406
  )
407
- if sys.platform.startswith("Darwin"):
407
+ if sys.platform.startswith("Darwin") or sys.platform.startswith("darwin") :
408
408
  return mac_utils.select_file_macos(
409
409
  multi_select=multi_select,
410
410
  file_filter=file_filter,
@@ -417,16 +417,15 @@ class OWInputSelector(OWWidget):
417
417
  "", # initial directory
418
418
  file_filter # filter
419
419
  )
420
+ files=files[0]
420
421
  return files
421
422
 
422
423
  def select_new_file(self, file_filter, dialog_title):
423
424
  if os.name == 'nt':
424
425
  return windows_utils.select_new_file_ctypes(file_filter=file_filter, dialog_title=dialog_title)
425
- if sys.platform.startswith("Darwin"):
426
+ if sys.platform.startswith("Darwin") or sys.platform.startswith("darwin"):
426
427
  return mac_utils.select_new_file_macos(file_filter=file_filter, dialog_title=dialog_title)
427
428
 
428
-
429
- print("a faire correctement sans qt sur mac (et linux")
430
429
  from AnyQt.QtWidgets import QFileDialog
431
430
  files, _ = QFileDialog.getSaveFileName(
432
431
  self, # parent
@@ -439,7 +438,7 @@ class OWInputSelector(OWWidget):
439
438
  def select_folder(self, dialog_title):
440
439
  if os.name=='nt':
441
440
  return windows_utils.select_folder_ctypes(title=dialog_title)
442
- if sys.platform.startswith("Darwin"):
441
+ if sys.platform.startswith("Darwin") or sys.platform.startswith("darwin"):
443
442
  return mac_utils.select_folder_macos(title=dialog_title)
444
443
 
445
444
  # a faire correctement sans qt sur mac
@@ -458,7 +457,76 @@ class OWInputSelector(OWWidget):
458
457
  return
459
458
 
460
459
  var = StringVariable("path")
460
+ separator = "//////"
461
+
462
+
463
+ if separator in self.selected_path:
464
+ # plusieurs fichiers
465
+
466
+ paths = self.selected_path.split(separator)
467
+ n_paths = len(paths)
468
+
469
+ if self.in_data is not None:
470
+ base = self.in_data
471
+ old_dom = base.domain
472
+
473
+ # Domaine = attributs + classes existants + nouvelle méta "path"
474
+ domain = Domain(
475
+ old_dom.attributes,
476
+ old_dom.class_vars,
477
+ list(old_dom.metas) + [var]
478
+ )
479
+
480
+ m_in = len(base)
481
+ n_rows = max(m_in, n_paths) # on peut devoir ajouter des lignes
482
+ n_attr = len(domain.attributes)
483
+ n_cls = len(domain.class_vars)
484
+ n_meta = len(domain.metas)
485
+
486
+ # Prépare des tableaux de la bonne taille
487
+ X_new = np.full((n_rows, n_attr), np.nan) if n_attr else np.empty((n_rows, 0))
488
+ # Y doit être 2D si des class_vars existent, sinon None
489
+ Y_new = (np.full((n_rows, n_cls), np.nan) if n_cls else None)
490
+
491
+ metas_new = np.empty((n_rows, n_meta), dtype=object)
492
+ # Initialiser chaque colonne de méta avec sa valeur "Unknown" Orange
493
+ for j, meta_var in enumerate(domain.metas):
494
+ unknown = getattr(meta_var, "Unknown", None)
495
+ metas_new[:, j] = unknown
496
+
497
+ # Copie des données existantes dans la partie haute
498
+ if m_in:
499
+ if n_attr:
500
+ X_new[:m_in, :] = base.X
501
+ if n_cls:
502
+ # Base.Y peut être 1D si une seule classe : on normalise en 2D
503
+ if base.Y is not None:
504
+ if np.ndim(base.Y) == 1 and n_cls == 1:
505
+ Y_new[:m_in, 0] = base.Y
506
+ else:
507
+ Y_new[:m_in, :] = base.Y
508
+ if len(old_dom.metas):
509
+ metas_new[:m_in, :n_meta - 1] = base.metas # on laisse la dernière col vide (path)
510
+
511
+ # Remplit la nouvelle colonne "path" pour les N premières lignes
512
+ metas_new[:n_paths, -1] = paths
513
+
514
+ new_table = Table.from_numpy(domain, X_new, Y_new, metas_new)
461
515
 
516
+ else:
517
+ # Pas de table en entrée : on crée une table uniquement avec la méta "path"
518
+ n_rows = max(n_paths, 1) # au moins 1 ligne
519
+ domain = Domain([], metas=[var])
520
+
521
+ metas_new = np.empty((n_rows, 1), dtype=object)
522
+ metas_new[:, 0] = "" # vide par défaut
523
+ metas_new[:n_paths, 0] = paths
524
+
525
+ X_dummy = np.empty((n_rows, 0))
526
+ new_table = Table.from_numpy(domain, X_dummy, None, metas_new)
527
+ self.Outputs.path.send(new_table)
528
+ self.Outputs.path_string.send(str(paths))
529
+ return
462
530
  if self.in_data is not None:
463
531
  domain = Domain(
464
532
  self.in_data.domain.attributes,
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
  NAME = "aait"
5
5
 
6
6
  # Version du package PyPI
7
- VERSION = "2.3.9" # la version doit être supérieure à la précédente sinon la publication sera refusée
7
+ VERSION = "2.3.9.2" # la version doit être supérieure à la précédente sinon la publication sera refusée
8
8
 
9
9
  # Facultatif / Adaptable à souhait
10
10
  AUTHOR = "Orange community"
File without changes
File without changes
File without changes
File without changes