aait 2.0.2.18__tar.gz → 2.0.2.19__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 (247) hide show
  1. {aait-2.0.2.18 → aait-2.0.2.19}/PKG-INFO +1 -1
  2. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/SOURCES.txt +8 -2
  4. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +5 -1
  5. aait-2.0.2.19/orangecontrib/AAIT/widgets/OWAddColumns.py +236 -0
  6. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWEditTable.py +4 -1
  7. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWEndLoop.py +5 -1
  8. aait-2.0.2.19/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +110 -0
  9. aait-2.0.2.19/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +42 -0
  10. aait-2.0.2.19/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  11. aait-2.0.2.19/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +22 -0
  12. aait-2.0.2.19/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  13. aait-2.0.2.19/orangecontrib/AAIT/widgets/icons/zip.svg +26 -0
  14. {aait-2.0.2.18 → aait-2.0.2.19}/setup.py +1 -1
  15. aait-2.0.2.18/orangecontrib/AAIT/widgets/OWEnvInfo.py +0 -101
  16. {aait-2.0.2.18 → aait-2.0.2.19}/License.txt +0 -0
  17. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/dependency_links.txt +0 -0
  18. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/entry_points.txt +0 -0
  19. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/namespace_packages.txt +0 -0
  20. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/requires.txt +0 -0
  21. {aait-2.0.2.18 → aait-2.0.2.19}/aait.egg-info/top_level.txt +0 -0
  22. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/__init__.py +0 -0
  23. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  24. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  25. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  26. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  27. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  28. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  29. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  30. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  31. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  32. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  33. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  34. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  35. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  36. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  37. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  38. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  39. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  40. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  41. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  42. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  43. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  44. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  45. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  46. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  47. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  48. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  49. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  50. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  51. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  52. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  53. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  54. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  55. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  56. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  57. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/__init__.py +0 -0
  58. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/answers.py +0 -0
  59. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/chunking.py +0 -0
  60. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  61. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  62. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  63. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  64. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  65. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  66. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  67. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  68. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  69. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  70. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  71. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/test.py +0 -0
  72. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  73. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/llm/translations.py +0 -0
  74. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  75. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  76. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  77. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  78. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  79. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/__init__.py +0 -0
  80. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  81. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  82. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  83. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  84. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  85. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  86. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  87. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  88. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  89. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  90. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  91. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  92. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  93. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  94. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  95. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  96. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  97. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  98. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  99. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  100. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  101. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  102. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  103. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  104. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  105. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  106. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  107. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
  108. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  109. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  110. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  111. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  112. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  113. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  114. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  115. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  116. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  117. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  118. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  119. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  120. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  121. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  122. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  123. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  124. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  125. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  126. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  127. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  128. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  129. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  130. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  131. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  132. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  133. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  134. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  135. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  136. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  137. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  138. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  139. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  140. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  141. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  142. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  143. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  144. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  145. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  146. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  147. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  148. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  149. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  150. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  151. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  152. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  153. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  154. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  155. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  156. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  157. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  158. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  159. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  160. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  161. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  162. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  163. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  164. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  165. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  166. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  167. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  168. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  169. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  170. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  171. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  172. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  173. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  174. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  175. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  176. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  177. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  178. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  179. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  180. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  181. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  182. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  183. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  184. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  185. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  186. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  187. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  188. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  189. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  190. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  191. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  192. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  193. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  194. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  195. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  196. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  197. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  198. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  199. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  200. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  201. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  202. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  203. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  204. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  205. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  206. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  207. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  208. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  209. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  210. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  211. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  212. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  213. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  214. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  215. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  216. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  217. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  218. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  219. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  220. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  221. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  222. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  223. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  224. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  225. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  226. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  227. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  228. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  229. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  230. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  231. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  232. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  233. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  234. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  235. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  236. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  237. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  238. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  239. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  240. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  241. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  242. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  243. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  244. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  245. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  246. {aait-2.0.2.18 → aait-2.0.2.19}/orangecontrib/__init__.py +0 -0
  247. {aait-2.0.2.18 → aait-2.0.2.19}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.2.18
3
+ Version: 2.0.2.19
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.0.2.18
3
+ Version: 2.0.2.19
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
@@ -84,6 +84,7 @@ orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py
84
84
  orangecontrib/AAIT/utils/tools/first_time_check.py
85
85
  orangecontrib/AAIT/utils/tools/owcorpus_ok.txt
86
86
  orangecontrib/AAIT/widgets/OWAAITResourcesManager.py
87
+ orangecontrib/AAIT/widgets/OWAddColumns.py
87
88
  orangecontrib/AAIT/widgets/OWApplyRules.py
88
89
  orangecontrib/AAIT/widgets/OWCN2rule_view.py
89
90
  orangecontrib/AAIT/widgets/OWChunking.py
@@ -93,7 +94,6 @@ orangecontrib/AAIT/widgets/OWCreateEmbeddings.py
93
94
  orangecontrib/AAIT/widgets/OWDisplayMD.py
94
95
  orangecontrib/AAIT/widgets/OWEditTable.py
95
96
  orangecontrib/AAIT/widgets/OWEndLoop.py
96
- orangecontrib/AAIT/widgets/OWEnvInfo.py
97
97
  orangecontrib/AAIT/widgets/OWExecuteScript.py
98
98
  orangecontrib/AAIT/widgets/OWExtraChunks.py
99
99
  orangecontrib/AAIT/widgets/OWExtractTokens.py
@@ -142,6 +142,7 @@ orangecontrib/AAIT/widgets/__init__.py
142
142
  orangecontrib/AAIT/widgets/designer/owMarkdown.ui
143
143
  orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui
144
144
  orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui
145
+ orangecontrib/AAIT/widgets/designer/owaddcolumns.ui
145
146
  orangecontrib/AAIT/widgets/designer/owapplyrules.ui
146
147
  orangecontrib/AAIT/widgets/designer/owchunking.ui
147
148
  orangecontrib/AAIT/widgets/designer/owconcatrules.ui
@@ -152,6 +153,7 @@ orangecontrib/AAIT/widgets/designer/owexecutescript.ui
152
153
  orangecontrib/AAIT/widgets/designer/owextrachunks.ui
153
154
  orangecontrib/AAIT/widgets/designer/owextracttokens.ui
154
155
  orangecontrib/AAIT/widgets/designer/owfilewithpath.ui
156
+ orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui
155
157
  orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui
156
158
  orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui
157
159
  orangecontrib/AAIT/widgets/designer/owkeyword.ui
@@ -211,8 +213,10 @@ orangecontrib/AAIT/widgets/icons/owchunking.png
211
213
  orangecontrib/AAIT/widgets/icons/owconversellm.svg
212
214
  orangecontrib/AAIT/widgets/icons/owedittable.svg
213
215
  orangecontrib/AAIT/widgets/icons/owembeddings.svg
216
+ orangecontrib/AAIT/widgets/icons/owenvinfo.png
214
217
  orangecontrib/AAIT/widgets/icons/owexecutescript.svg
215
218
  orangecontrib/AAIT/widgets/icons/owextracttokens.svg
219
+ orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg
216
220
  orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
217
221
  orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
218
222
  orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
@@ -234,6 +238,8 @@ orangecontrib/AAIT/widgets/icons/owtranslation.svg
234
238
  orangecontrib/AAIT/widgets/icons/owtrigger.svg
235
239
  orangecontrib/AAIT/widgets/icons/processdocuments.svg
236
240
  orangecontrib/AAIT/widgets/icons/qwen-color.png
241
+ orangecontrib/AAIT/widgets/icons/select_dynamic_row.png
237
242
  orangecontrib/AAIT/widgets/icons/startloop.png
238
243
  orangecontrib/AAIT/widgets/icons/tools.png
239
- orangecontrib/AAIT/widgets/icons/widgetFactory.svg
244
+ orangecontrib/AAIT/widgets/icons/widgetFactory.svg
245
+ orangecontrib/AAIT/widgets/icons/zip.svg
@@ -498,4 +498,8 @@ if __name__ == '__main__':
498
498
  app = QApplication(sys.argv)
499
499
  window = OWAAITResourcesManager()
500
500
  window.show()
501
- app.exec_()
501
+ if hasattr(app, "exec"):
502
+ app.exec()
503
+ else:
504
+ app.exec_()
505
+
@@ -0,0 +1,236 @@
1
+ import os
2
+ import sys
3
+ import platform
4
+ import numpy as np
5
+ import datetime as datetime
6
+ import Orange
7
+ import Orange.data
8
+ from Orange.widgets import widget
9
+ from Orange.widgets.utils.signals import Input, Output
10
+ from AnyQt.QtWidgets import (
11
+ QApplication, QWidget, QCheckBox, QVBoxLayout, QSizePolicy,
12
+ QPushButton, QHBoxLayout, QScrollArea, QLabel
13
+ )
14
+
15
+ # Conditional imports to mirror Orange add-on layout
16
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
17
+ from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
18
+ from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
19
+ else:
20
+ from orangecontrib.AAIT.utils.import_uic import uic
21
+ from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
22
+
23
+ try:
24
+ import importlib.metadata as importlib_metadata
25
+ except Exception: # pragma: no cover
26
+ import importlib_metadata # type: ignore
27
+
28
+
29
+ @apply_modification_from_python_file(filepath_original_widget=__file__)
30
+ class OWAddColumns(widget.OWWidget):
31
+ name = "Add columns"
32
+ description = "Ajoute des colonnes choisies (OS/Python/Orange/paquets...) à une Table en entrée."
33
+ category = "AAIT - TOOLBOX"
34
+ icon = "icons/owenvinfo.png"
35
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
36
+ icon = "icons_dev/owenvinfo.png"
37
+ gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owaddcolumns.ui")
38
+ priority = 1094
39
+
40
+ want_main_area = True
41
+ want_control_area = False
42
+
43
+ class Inputs:
44
+ data = Input("Data", Orange.data.Table)
45
+
46
+ class Outputs:
47
+ data = Output("Data", Orange.data.Table)
48
+
49
+ def __init__(self):
50
+ super().__init__()
51
+
52
+ # 1) Charger ton .ui d’origine dans un enfant
53
+ self.form: QWidget = uic.loadUi(self.gui)
54
+ self.mainArea.layout().addWidget(self.form)
55
+ self.form.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
56
+ self.setMinimumSize(470, 300)
57
+
58
+ # 2) Récupérer ce que le .ui pourrait contenir
59
+ self.Description = getattr(self.form, "Description", None)
60
+ self.varsLayout: QVBoxLayout = getattr(self.form, "varsLayout", None)
61
+ self.btnSelectAll = getattr(self.form, "btnSelectAll", None)
62
+ self.btnClearAll = getattr(self.form, "btnClearAll", None)
63
+ self.btnApply = getattr(self.form, "btnApply", None)
64
+
65
+ # 3) Si la zone de sélection n'existe pas dans le .ui d’origine, on la crée
66
+ if self.varsLayout is None:
67
+ self._build_fallback_selector_panel() # crée varsLayout + boutons
68
+
69
+ # 4) Etat interne
70
+ self._var_checks: dict[str, QCheckBox] = {}
71
+ self._current_data: Orange.data.Table | None = None
72
+
73
+ # 5) Peupler et connecter
74
+ self._available_keys, _ = self._collect()
75
+ self._build_dynamic_checkboxes(self._available_keys)
76
+
77
+ if self.btnSelectAll:
78
+ self.btnSelectAll.clicked.connect(self._select_all)
79
+ if self.btnClearAll:
80
+ self.btnClearAll.clicked.connect(self._clear_all)
81
+ if self.btnApply:
82
+ self.btnApply.clicked.connect(self._apply)
83
+
84
+ # ---------- Panneau de fallback (si le .ui n'a pas de zone) ----------
85
+ def _build_fallback_selector_panel(self):
86
+ """
87
+ Construit un panneau (boutons + scroll + layout) sous le .ui d’origine,
88
+ et renseigne: self.varsLayout, self.btnSelectAll, self.btnClearAll, self.btnApply.
89
+ """
90
+ panel = QWidget(self)
91
+ panel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
92
+ vroot = QVBoxLayout(panel)
93
+ vroot.setContentsMargins(12, 12, 12, 12)
94
+ vroot.setSpacing(8)
95
+
96
+ # Ligne de boutons
97
+ h = QHBoxLayout()
98
+ self.btnSelectAll = QPushButton("Tout cocher", panel)
99
+ self.btnClearAll = QPushButton("Tout décocher", panel)
100
+ h.addWidget(self.btnSelectAll)
101
+ h.addWidget(self.btnClearAll)
102
+ h.addStretch(1)
103
+ self.btnApply = QPushButton("Appliquer", panel)
104
+ h.addWidget(self.btnApply)
105
+ vroot.addLayout(h)
106
+
107
+ # Scroll + conteneur de cases à cocher
108
+ scroll = QScrollArea(panel)
109
+ scroll.setWidgetResizable(True)
110
+ scroll.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
111
+
112
+ inner = QWidget(scroll)
113
+ inner.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
114
+ self.varsLayout = QVBoxLayout(inner)
115
+ self.varsLayout.setContentsMargins(6, 6, 6, 6)
116
+ self.varsLayout.setSpacing(6)
117
+ scroll.setWidget(inner)
118
+
119
+ vroot.addWidget(scroll)
120
+
121
+ # Ajouter ce panneau APRÈS le .ui d’origine
122
+ self.mainArea.layout().addWidget(panel)
123
+
124
+ # ---------- Collecte ----------
125
+ @staticmethod
126
+ def _safe_version(pkg: str):
127
+ try:
128
+ return importlib_metadata.version(pkg)
129
+ except Exception:
130
+ return None
131
+
132
+ def _collect(self):
133
+ keys = [
134
+ "OS", "Machine", "Processor",
135
+ "Python Version", "Python Executable", "Orange3",
136
+ "Time"
137
+ ]
138
+ vals = [
139
+ platform.platform(),
140
+ platform.machine(),
141
+ platform.processor() or platform.machine(),
142
+ sys.version.replace("\n", " "),
143
+ sys.executable,
144
+ getattr(Orange, "__version__", "unknown"),
145
+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
146
+ ]
147
+
148
+ notable = ["aait", "io4it", "hlit"]
149
+ for pkg in notable:
150
+ ver = self._safe_version(pkg)
151
+ if ver:
152
+ keys.append(pkg)
153
+ vals.append(ver)
154
+ return keys, vals
155
+
156
+ # ---------- Cases à cocher dynamiques ----------
157
+ def _build_dynamic_checkboxes(self, keys):
158
+ if not self.varsLayout:
159
+ return # sécurité (ne devrait plus arriver)
160
+
161
+ # Nettoyer
162
+ while self.varsLayout.count():
163
+ item = self.varsLayout.takeAt(0)
164
+ w = item.widget()
165
+ if w:
166
+ w.setParent(None)
167
+
168
+ self._var_checks.clear()
169
+ for k in keys:
170
+ cb = QCheckBox(k)
171
+ cb.setChecked(True)
172
+ self.varsLayout.addWidget(cb)
173
+ self._var_checks[k] = cb
174
+
175
+ self.varsLayout.addStretch(1)
176
+
177
+ # ---------- Slots ----------
178
+ def _select_all(self):
179
+ for cb in self._var_checks.values():
180
+ cb.setChecked(True)
181
+
182
+ def _clear_all(self):
183
+ for cb in self._var_checks.values():
184
+ cb.setChecked(False)
185
+
186
+ # ---------- Entrée ----------
187
+ @Inputs.data
188
+ def set_data(self, data: Orange.data.Table | None):
189
+ self._current_data = data
190
+ self._apply()
191
+
192
+ # ---------- Application ----------
193
+ def _apply(self):
194
+ data = self._current_data
195
+ if data is None:
196
+ self.Outputs.data.send(None)
197
+ return
198
+
199
+ keys, vals = self._collect()
200
+ kv = dict(zip(keys, vals))
201
+ selected_keys = [k for k, cb in self._var_checks.items() if cb.isChecked() and k in kv]
202
+
203
+ if not selected_keys:
204
+ self.Outputs.data.send(data)
205
+ return
206
+
207
+ existing_meta_vars = list(data.domain.metas)
208
+ new_meta_vars = [Orange.data.StringVariable.make(k) for k in selected_keys]
209
+
210
+ new_domain = Orange.data.Domain(
211
+ attributes=list(data.domain.attributes),
212
+ class_vars=list(data.domain.class_vars),
213
+ metas=existing_meta_vars + new_meta_vars,
214
+ )
215
+
216
+ n = len(data)
217
+ left = data.metas if (data.metas is not None and data.metas.size) else np.empty((n, len(existing_meta_vars)), dtype=object)
218
+ right = np.empty((n, len(new_meta_vars)), dtype=object)
219
+ for j, k in enumerate(selected_keys):
220
+ right[:, j] = kv.get(k, "")
221
+
222
+ metas = np.hstack([left, right]) if left.size else right
223
+
224
+ out = Orange.data.Table(new_domain, data.X, data.Y, metas=metas, W=data.W)
225
+ out.name = data.name or "Data with added columns"
226
+ self.Outputs.data.send(out)
227
+
228
+
229
+ if __name__ == "__main__":
230
+ app = QApplication(sys.argv)
231
+ w = OWAddColumns()
232
+ w.show()
233
+ if hasattr(app, "exec"):
234
+ app.exec()
235
+ else:
236
+ app.exec_()
@@ -230,4 +230,7 @@ if __name__ == "__main__":
230
230
  app = QApplication(sys.argv)
231
231
  obj = OWEditTable()
232
232
  obj.show()
233
- app.exec_()
233
+ if hasattr(app, "exec"):
234
+ app.exec()
235
+ else:
236
+ app.exec_()
@@ -153,4 +153,8 @@ if __name__ == "__main__":
153
153
  app = QApplication(sys.argv)
154
154
  obj = EndLoopWidget()
155
155
  obj.show()
156
- app.exec_()
156
+ if hasattr(app, "exec"):
157
+ app.exec()
158
+ else:
159
+ app.exec_()
160
+
@@ -0,0 +1,110 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="windowTitle">
6
+ <string>Add columns</string>
7
+ </property>
8
+ <property name="minimumSize">
9
+ <size>
10
+ <width>470</width>
11
+ <height>360</height>
12
+ </size>
13
+ </property>
14
+
15
+ <layout class="QVBoxLayout" name="verticalLayoutRoot">
16
+ <!-- Description -->
17
+ <item>
18
+ <widget class="QLabel" name="Description">
19
+ <property name="text">
20
+ <string>Select the variables to add as meta columns to the input table.</string>
21
+ </property>
22
+ <property name="wordWrap">
23
+ <bool>true</bool>
24
+ </property>
25
+ </widget>
26
+ </item>
27
+
28
+ <!-- Buttons row -->
29
+ <item>
30
+ <layout class="QHBoxLayout" name="buttonRow">
31
+ <item>
32
+ <widget class="QPushButton" name="btnSelectAll">
33
+ <property name="text">
34
+ <string>Select all</string>
35
+ </property>
36
+ </widget>
37
+ </item>
38
+ <item>
39
+ <widget class="QPushButton" name="btnClearAll">
40
+ <property name="text">
41
+ <string>Clear all</string>
42
+ </property>
43
+ </widget>
44
+ </item>
45
+ <item>
46
+ <spacer name="horizontalSpacer">
47
+ <property name="orientation">
48
+ <enum>Qt::Horizontal</enum>
49
+ </property>
50
+ <property name="sizeHint" stdset="0">
51
+ <size>
52
+ <width>40</width>
53
+ <height>20</height>
54
+ </size>
55
+ </property>
56
+ </spacer>
57
+ </item>
58
+ <item>
59
+ <widget class="QPushButton" name="btnApply">
60
+ <property name="text">
61
+ <string>Apply</string>
62
+ </property>
63
+ </widget>
64
+ </item>
65
+ </layout>
66
+ </item>
67
+
68
+ <!-- Scrollable area for checkboxes -->
69
+ <item>
70
+ <widget class="QScrollArea" name="varsScroll">
71
+ <property name="widgetResizable">
72
+ <bool>true</bool>
73
+ </property>
74
+ <widget class="QWidget" name="varsContainer">
75
+ <layout class="QVBoxLayout" name="varsLayout">
76
+ <!-- Checkboxes are added dynamically here -->
77
+ <item>
78
+ <spacer name="verticalSpacer">
79
+ <property name="orientation">
80
+ <enum>Qt::Vertical</enum>
81
+ </property>
82
+ <property name="sizeHint" stdset="0">
83
+ <size>
84
+ <width>20</width>
85
+ <height>40</height>
86
+ </size>
87
+ </property>
88
+ </spacer>
89
+ </item>
90
+ </layout>
91
+ </widget>
92
+ </widget>
93
+ </item>
94
+
95
+ <!-- Footer -->
96
+ <item>
97
+ <widget class="QLabel" name="footer">
98
+ <property name="text">
99
+ <string>Note: the added columns are metas (text) with the same value for all rows.</string>
100
+ </property>
101
+ <property name="wordWrap">
102
+ <bool>true</bool>
103
+ </property>
104
+ </widget>
105
+ </item>
106
+ </layout>
107
+ </widget>
108
+ <resources/>
109
+ <connections/>
110
+ </ui>
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>394</width>
10
+ <height>238</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <widget class="QCheckBox" name="checkBox">
17
+ <property name="geometry">
18
+ <rect>
19
+ <x>30</x>
20
+ <y>80</y>
21
+ <width>365</width>
22
+ <height>31</height>
23
+ </rect>
24
+ </property>
25
+ <property name="text">
26
+ <string>Enable search on directory and sub-directories</string>
27
+ </property>
28
+ </widget>
29
+ <widget class="QLineEdit" name="lineEdit">
30
+ <property name="geometry">
31
+ <rect>
32
+ <x>30</x>
33
+ <y>130</y>
34
+ <width>361</width>
35
+ <height>21</height>
36
+ </rect>
37
+ </property>
38
+ </widget>
39
+ </widget>
40
+ <resources/>
41
+ <connections/>
42
+ </ui>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
5
+ width="800px" height="800px" viewBox="0 0 45 45" xml:space="preserve">
6
+ <g>
7
+ <path d="M26.083,7.417c0,0.69-0.56,1.25-1.25,1.25H9.917c-0.69,0-1.25-0.56-1.25-1.25s0.56-1.25,1.25-1.25h14.916
8
+ C25.523,6.167,26.083,6.727,26.083,7.417z M24.833,11.25H9.917c-0.69,0-1.25,0.56-1.25,1.25s0.56,1.25,1.25,1.25h14.916
9
+ c0.69,0,1.25-0.56,1.25-1.25S25.523,11.25,24.833,11.25z M44.939,18.667l-5,22.5c-0.254,1.144-1.27,1.958-2.439,1.958h-5h-25h-5
10
+ c-1.381,0-2.5-1.119-2.5-2.5v-30c0-1.381,1.119-2.5,2.5-2.5h1.25v-5c0-0.69,0.559-1.25,1.25-1.25h25c0.689,0,1.25,0.56,1.25,1.25v5
11
+ h1.25c1.381,0,2.5,1.119,2.5,2.5v2.5h2.5c1.381,0,2.5,1.119,2.5,2.5h2.5c0.758,0,1.477,0.344,1.949,0.936
12
+ C44.924,17.152,45.105,17.927,44.939,18.667z M3.75,10.625H2.5v30h1.25V10.625z M31.25,13.125h1.25v-2.5h-1.25V13.125z
13
+ M12.5,15.625h15c0-1.381,1.119-2.5,2.5-2.5v-10H5v37.5h0.002c0-0.182,5.057-23.042,5.057-23.042
14
+ C10.313,16.439,11.329,15.625,12.5,15.625z M34.445,36.346L30.5,33.125c-0.344-0.28-0.771-0.378-1.178-0.316l-0.459-0.375
15
+ c0.951-1.438,1.377-3.146,1.201-4.885c-0.201-1.992-1.166-3.789-2.717-5.056c-1.338-1.09-3.021-1.691-4.743-1.691
16
+ c-2.263,0-4.381,1.004-5.813,2.757c-2.615,3.202-2.137,7.938,1.066,10.553c1.335,1.092,3.019,1.691,4.74,1.691
17
+ c1.843,0,3.582-0.675,4.939-1.867l0.52,0.422c0.021,0.41,0.2,0.812,0.545,1.092l3.942,3.221c0.279,0.229,0.615,0.338,0.948,0.338
18
+ c0.436,0,0.865-0.188,1.162-0.551C35.184,37.814,35.086,36.87,34.445,36.346z M25.768,24.43c-0.931-0.758-2.05-1.127-3.161-1.127
19
+ c-1.449,0-2.887,0.627-3.875,1.838c-1.747,2.14-1.429,5.289,0.71,7.035c0.929,0.758,2.048,1.127,3.159,1.127
20
+ c1.448,0,2.887-0.627,3.875-1.838C28.225,29.326,27.904,26.177,25.768,24.43z"/>
21
+ </g>
22
+ </svg>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 48 48" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <path d="M47.987,21.938c-0.006-0.091-0.023-0.178-0.053-0.264c-0.011-0.032-0.019-0.063-0.033-0.094
8
+ c-0.048-0.104-0.109-0.202-0.193-0.285c-0.001-0.001-0.001-0.001-0.001-0.001L42,15.586V10c0-0.022-0.011-0.041-0.013-0.063
9
+ c-0.006-0.088-0.023-0.173-0.051-0.257c-0.011-0.032-0.019-0.063-0.034-0.094c-0.049-0.106-0.11-0.207-0.196-0.293l-9-9
10
+ c-0.086-0.086-0.187-0.148-0.294-0.196c-0.03-0.014-0.06-0.022-0.091-0.032c-0.085-0.03-0.172-0.047-0.263-0.052
11
+ C32.039,0.01,32.021,0,32,0H7C6.448,0,6,0.448,6,1v14.586l-5.707,5.707c0,0-0.001,0.001-0.002,0.002
12
+ c-0.084,0.084-0.144,0.182-0.192,0.285c-0.014,0.031-0.022,0.062-0.033,0.094c-0.03,0.086-0.048,0.173-0.053,0.264
13
+ C0.011,21.96,0,21.978,0,22v19c0,0.552,0.448,1,1,1h5v5c0,0.552,0.448,1,1,1h34c0.552,0,1-0.448,1-1v-5h5c0.552,0,1-0.448,1-1V22
14
+ C48,21.978,47.989,21.96,47.987,21.938z M44.586,21H42v-2.586L44.586,21z M38.586,9H33V3.414L38.586,9z M8,2h23v8
15
+ c0,0.552,0.448,1,1,1h8v5v5H8v-5V2z M6,18.414V21H3.414L6,18.414z M40,46H8v-4h32V46z M46,40H2V23h5h34h5V40z"/>
16
+ <polygon points="14.582,27.766 18.356,27.766 14.31,36.317 14.31,38 20.6,38 20.6,36.164 16.571,36.164 20.6,27.613 20.6,25.964
17
+ 14.582,25.964 "/>
18
+ <rect x="22.436" y="25.964" width="2.04" height="12.036"/>
19
+ <path d="M32.542,26.72c-0.323-0.277-0.688-0.473-1.097-0.586c-0.408-0.113-0.805-0.17-1.19-0.17h-3.332V38h2.006v-4.828h1.428
20
+ c0.419,0,0.827-0.074,1.224-0.221c0.397-0.147,0.748-0.374,1.054-0.68c0.306-0.306,0.553-0.688,0.739-1.148
21
+ c0.187-0.459,0.28-0.994,0.28-1.606c0-0.68-0.105-1.247-0.314-1.7C33.132,27.364,32.866,26.998,32.542,26.72z M31.259,31.005
22
+ c-0.306,0.334-0.697,0.501-1.173,0.501H28.93v-3.825h1.156c0.476,0,0.867,0.147,1.173,0.442c0.306,0.295,0.459,0.765,0.459,1.411
23
+ C31.718,30.18,31.565,30.67,31.259,31.005z"/>
24
+ </g>
25
+ </g>
26
+ </svg>
@@ -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.0.2.18" # la version doit être supérieure à la précédente sinon la publication sera refusée
7
+ VERSION = "2.0.2.19" # 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"
@@ -1,101 +0,0 @@
1
- import os
2
- import sys
3
- import platform
4
- import numpy as np
5
- import datetime as datetime
6
- import Orange
7
- import Orange.data
8
- from Orange.widgets import widget
9
- from Orange.widgets.utils.signals import Output
10
-
11
- from AnyQt.QtWidgets import QApplication
12
-
13
- # Conditional imports to mirror Orange add-on layout
14
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
15
- from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
16
- from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
17
- else:
18
- from orangecontrib.AAIT.utils.import_uic import uic
19
- from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
20
-
21
- try:
22
- import importlib.metadata as importlib_metadata
23
- except Exception: # pragma: no cover
24
- import importlib_metadata # type: ignore
25
-
26
-
27
- @apply_modification_from_python_file(filepath_original_widget=__file__)
28
- class OWEnvInfo(widget.OWWidget):
29
- name = "Environment Info"
30
- description = "Exports system, Orange, Python, and package versions as a single-row table."
31
- category = "AAIT - TOOLBOX"
32
- icon = "icons/owenvinfo.png"
33
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
34
- icon = "icons_dev/owenvinfo.png"
35
- gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owenvinfo.ui")
36
- priority = 1094
37
- want_control_area = False
38
-
39
- class Outputs:
40
- data = Output("Environment Info", Orange.data.Table)
41
-
42
- def __init__(self):
43
- super().__init__()
44
- self.setFixedWidth(470)
45
- self.setFixedHeight(300)
46
- uic.loadUi(self.gui, self)
47
-
48
- table = self._build_table()
49
- self.Outputs.data.send(table)
50
-
51
- @staticmethod
52
- def _safe_version(pkg: str):
53
- try:
54
- return importlib_metadata.version(pkg)
55
- except Exception:
56
- return None
57
-
58
- def _collect(self):
59
- keys = [
60
- "OS", "Machine", "Processor",
61
- "Python Version", "Python Executable", "Orange3",
62
- "Time"
63
- ]
64
- vals = [
65
- platform.platform(),
66
- platform.machine(),
67
- platform.processor() or platform.machine(),
68
- sys.version.replace("\n", " "),
69
- sys.executable,
70
- getattr(Orange, "__version__", "unknown"),
71
- datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # <-- valeur formatée
72
- ]
73
-
74
- notable = [
75
- "aait", "io4it", "hlit",
76
- ]
77
- for pkg in notable:
78
- ver = self._safe_version(pkg)
79
- if ver:
80
- keys.append(pkg)
81
- vals.append(ver)
82
- return keys, vals
83
-
84
- def _build_table(self) -> Orange.data.Table:
85
- keys, vals = self._collect()
86
-
87
- metas = [Orange.data.StringVariable.make(k) for k in keys]
88
- domain = Orange.data.Domain([], metas=metas)
89
- X = np.zeros((1, 0))
90
- M = np.array([vals], dtype=object)
91
- return Orange.data.Table(domain, X, metas=M)
92
-
93
-
94
- if __name__ == "__main__":
95
- app = QApplication(sys.argv)
96
- w = OWEnvInfo()
97
- w.show()
98
- if hasattr(app, "exec"):
99
- app.exec()
100
- else:
101
- app.exec_()
File without changes