aait 2.0.2.17__tar.gz → 2.0.2.18__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 (251) hide show
  1. {aait-2.0.2.17 → aait-2.0.2.18}/PKG-INFO +1 -1
  2. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/PKG-INFO +1 -1
  3. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/SOURCES.txt +1 -11
  4. aait-2.0.2.18/aait.egg-info/entry_points.txt +2 -0
  5. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/requires.txt +1 -2
  6. {aait-2.0.2.17 → aait-2.0.2.18}/setup.py +4 -14
  7. aait-2.0.2.17/aait.egg-info/entry_points.txt +0 -10
  8. aait-2.0.2.17/tests/test_class_values_context_handler.py +0 -75
  9. aait-2.0.2.17/tests/test_credentials.py +0 -76
  10. aait-2.0.2.17/tests/test_domain_context_handler.py +0 -401
  11. aait-2.0.2.17/tests/test_gui.py +0 -140
  12. aait-2.0.2.17/tests/test_matplotlib_export.py +0 -43
  13. aait-2.0.2.17/tests/test_perfect_domain_context_handler.py +0 -148
  14. aait-2.0.2.17/tests/test_scatterplot_density.py +0 -59
  15. aait-2.0.2.17/tests/test_settings_handler.py +0 -27
  16. aait-2.0.2.17/tests/test_widgets_outputs.py +0 -29
  17. aait-2.0.2.17/tests/test_workflows.py +0 -80
  18. {aait-2.0.2.17 → aait-2.0.2.18}/License.txt +0 -0
  19. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/dependency_links.txt +0 -0
  20. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/namespace_packages.txt +0 -0
  21. {aait-2.0.2.17 → aait-2.0.2.18}/aait.egg-info/top_level.txt +0 -0
  22. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/__init__.py +0 -0
  23. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
  24. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
  25. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
  26. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
  27. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
  28. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
  29. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
  30. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
  31. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
  32. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
  33. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
  34. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
  35. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
  36. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
  37. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
  38. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
  39. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
  40. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
  41. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
  42. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
  43. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
  44. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
  45. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
  46. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
  47. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  48. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  49. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/GPT4ALL.py +0 -0
  50. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/GPT4ALL_killer.py +0 -0
  51. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
  52. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
  53. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
  54. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
  55. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
  56. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
  57. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/__init__.py +0 -0
  58. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/answers.py +0 -0
  59. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/chunking.py +0 -0
  60. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  61. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/finetuning.py +0 -0
  62. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
  63. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
  64. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  65. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
  66. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
  67. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
  68. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  69. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
  70. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/quickpy.py +0 -0
  71. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/test.py +0 -0
  72. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/test_functions.py +0 -0
  73. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/llm/translations.py +0 -0
  74. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  75. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  76. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
  77. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  78. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  79. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/__init__.py +0 -0
  80. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  81. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
  82. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  83. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  84. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  85. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  86. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
  87. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  88. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  89. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  90. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  91. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  92. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  93. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  94. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  95. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  96. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  97. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  98. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  99. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  100. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  101. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
  102. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  103. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  104. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  105. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  106. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWEnvInfo.py +0 -0
  107. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  108. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  109. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  110. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
  111. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
  112. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  113. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  114. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
  115. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  116. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWLLM4ALL.py +0 -0
  117. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
  118. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  119. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  120. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  121. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  122. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  123. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  124. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  125. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  126. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  127. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  128. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  129. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  130. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  131. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  132. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  133. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  134. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  135. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  136. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  137. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  138. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  139. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  140. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  141. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  142. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  143. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  144. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
  145. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  146. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  147. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  148. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  149. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  150. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  151. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  152. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  153. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
  154. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  155. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  156. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  157. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  158. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
  159. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  160. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  161. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  162. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  163. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  164. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
  165. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  166. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  167. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  168. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  169. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  170. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  171. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  172. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  173. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  174. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  175. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  176. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  177. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  178. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  179. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  180. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  181. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  182. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  183. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  184. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  185. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  186. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  187. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  188. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  189. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  190. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  191. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  192. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  193. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  194. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  195. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  196. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  197. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  198. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  199. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  200. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  201. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  202. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  203. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/keyword.png +0 -0
  204. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  205. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/llm4all.svg +0 -0
  206. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  207. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  208. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  209. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  210. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  211. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  212. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  213. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  214. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  215. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  216. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  217. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  218. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  219. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  220. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  221. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  222. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  223. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  224. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  225. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  226. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  227. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  228. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  229. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  230. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  231. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  232. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  233. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  234. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  235. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  236. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  237. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  238. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  239. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  240. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  241. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  242. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  243. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  244. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  245. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  246. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  247. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  248. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  249. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  250. {aait-2.0.2.17 → aait-2.0.2.18}/orangecontrib/__init__.py +0 -0
  251. {aait-2.0.2.17 → aait-2.0.2.18}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aait
3
- Version: 2.0.2.17
3
+ Version: 2.0.2.18
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.17
3
+ Version: 2.0.2.18
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
@@ -236,14 +236,4 @@ orangecontrib/AAIT/widgets/icons/processdocuments.svg
236
236
  orangecontrib/AAIT/widgets/icons/qwen-color.png
237
237
  orangecontrib/AAIT/widgets/icons/startloop.png
238
238
  orangecontrib/AAIT/widgets/icons/tools.png
239
- orangecontrib/AAIT/widgets/icons/widgetFactory.svg
240
- tests/test_class_values_context_handler.py
241
- tests/test_credentials.py
242
- tests/test_domain_context_handler.py
243
- tests/test_gui.py
244
- tests/test_matplotlib_export.py
245
- tests/test_perfect_domain_context_handler.py
246
- tests/test_scatterplot_density.py
247
- tests/test_settings_handler.py
248
- tests/test_widgets_outputs.py
249
- tests/test_workflows.py
239
+ orangecontrib/AAIT/widgets/icons/widgetFactory.svg
@@ -0,0 +1,2 @@
1
+ [orange.widgets]
2
+ Advanced Artificial Intelligence Tools = orangecontrib.AAIT.widgets
@@ -1,4 +1,4 @@
1
- torch==2.7.1
1
+ torch
2
2
  sentence-transformers==5.0.0
3
3
  gpt4all[all]==2.8.2
4
4
  sacremoses==0.1.1
@@ -16,4 +16,3 @@ python-docx==1.1.2
16
16
  psutil
17
17
  thefuzz==0.22.1
18
18
  beautifulsoup4==4.12.3
19
- CATEGORIT==0.0.0.7
@@ -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.17" # la version doit être supérieure à la précédente sinon la publication sera refusée
7
+ VERSION = "2.0.2.18" # 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"
@@ -36,7 +36,7 @@ PACKAGE_DATA = {
36
36
  # Dépendances
37
37
 
38
38
  INSTALL_REQUIRES = [
39
- "torch==2.7.1",
39
+ "torch",
40
40
  "sentence-transformers==5.0.0",
41
41
  "gpt4all[all]==2.8.2",
42
42
  "sacremoses==0.1.1",
@@ -53,24 +53,14 @@ INSTALL_REQUIRES = [
53
53
  "python-docx==1.1.2",
54
54
  "psutil",
55
55
  "thefuzz==0.22.1",
56
- "beautifulsoup4==4.12.3",
57
- "CATEGORIT==0.0.0.7"]
56
+ "beautifulsoup4==4.12.3"]
58
57
 
59
58
 
60
59
  # Spécifie le dossier contenant les widgets et le nom de section qu'aura l'addon sur Orange
61
60
  ENTRY_POINTS = {
62
61
  "orange.widgets": (
63
- "Advanced Artificial Intelligence Tools = orangecontrib.AAIT.widgets",
64
- "AAIT - API = orangecontrib.API.widgets",
65
- "AAIT - MODELS = orangecontrib.LLM_MODELS.widgets",
66
- "AAIT - LLM INTEGRATION = orangecontrib.LLM_INTEGRATION.widgets",
67
- "AAIT - TOOLBOX = orangecontrib.TOOLBOX.widgets",
68
- "AAIT - ALGORITHM = orangecontrib.ALGORITHM.widgets",
69
- ),
70
- "orange.widgets.tutorials": (
71
- "AAIT Tutorials = orangecontrib.AAIT.tutorials",
62
+ "Advanced Artificial Intelligence Tools = orangecontrib.AAIT.widgets"
72
63
  )
73
-
74
64
  }
75
65
  # /!\ les noms de fichier 'orangecontrib.hkh_bot.widgets' doivent correspondre à l'arborescence
76
66
 
@@ -1,10 +0,0 @@
1
- [orange.widgets]
2
- AAIT - ALGORITHM = orangecontrib.ALGORITHM.widgets
3
- AAIT - API = orangecontrib.API.widgets
4
- AAIT - LLM INTEGRATION = orangecontrib.LLM_INTEGRATION.widgets
5
- AAIT - MODELS = orangecontrib.LLM_MODELS.widgets
6
- AAIT - TOOLBOX = orangecontrib.TOOLBOX.widgets
7
- Advanced Artificial Intelligence Tools = orangecontrib.AAIT.widgets
8
-
9
- [orange.widgets.tutorials]
10
- AAIT Tutorials = orangecontrib.AAIT.tutorials
@@ -1,75 +0,0 @@
1
- from unittest import TestCase
2
- from unittest.mock import Mock
3
- from Orange.data import DiscreteVariable, Domain
4
- from Orange.data import ContinuousVariable
5
- from Orange.widgets.settings import ContextSetting, ClassValuesContextHandler
6
- from Orange.widgets.utils import vartype
7
-
8
- Continuous = vartype(ContinuousVariable("x"))
9
- Discrete = vartype(DiscreteVariable("x"))
10
-
11
-
12
- class TestClassValuesContextHandler(TestCase):
13
- def setUp(self):
14
- self.domain = Domain(
15
- attributes=[ContinuousVariable('c1'),
16
- DiscreteVariable('d1', values='abc'),
17
- DiscreteVariable('d2', values='def')],
18
- class_vars=[DiscreteVariable('d3', values='ghi')],
19
- metas=[ContinuousVariable('c2'),
20
- DiscreteVariable('d4', values='jkl')]
21
- )
22
- self.args = (self.domain,
23
- {'c1': Continuous, 'd1': Discrete,
24
- 'd2': Discrete, 'd3': Discrete},
25
- {'c2': Continuous, 'd4': Discrete, })
26
- self.handler = ClassValuesContextHandler()
27
- self.handler.read_defaults = lambda: None
28
-
29
- def test_open_context(self):
30
- self.handler.bind(SimpleWidget)
31
- context = Mock(
32
- classes=['g', 'h', 'i'], values=dict(
33
- text='u',
34
- with_metas=[('d1', Discrete), ('d2', Discrete)]
35
- ))
36
- self.handler.global_contexts = \
37
- [Mock(classes=[], values={}), context, Mock(classes=[], values={})]
38
-
39
- widget = SimpleWidget()
40
- self.handler.initialize(widget)
41
- self.handler.open_context(widget, self.args[0].class_var)
42
- self.assertEqual(widget.text, 'u')
43
- self.assertEqual(widget.with_metas, [('d1', Discrete),
44
- ('d2', Discrete)])
45
-
46
- def test_open_context_with_no_match(self):
47
- self.handler.bind(SimpleWidget)
48
- context = Mock(
49
- classes=['g', 'h', 'i'], values=dict(
50
- text='u',
51
- with_metas=[('d1', Discrete), ('d2', Discrete)]
52
- ))
53
- self.handler.global_contexts = \
54
- [Mock(classes=[], values={}), context, Mock(classes=(), values={})]
55
- widget = SimpleWidget()
56
- self.handler.initialize(widget)
57
- widget.text = 'u'
58
-
59
- self.handler.open_context(widget, self.args[0][1])
60
-
61
- context = widget.current_context
62
- self.assertEqual(context.classes, ('a', 'b', 'c'))
63
- self.assertEqual(widget.text, 'u')
64
- self.assertEqual(widget.with_metas, [])
65
-
66
-
67
- class SimpleWidget:
68
- text = ContextSetting("")
69
- with_metas = ContextSetting([])
70
- required = ContextSetting("", required=ContextSetting.REQUIRED)
71
-
72
- def retrieveSpecificSettings(self):
73
- pass
74
- def storeSpecificSettings(self):
75
- pass
@@ -1,76 +0,0 @@
1
- import unittest
2
- from unittest.mock import patch
3
-
4
- import keyring
5
- import keyring.errors
6
- import keyring.backend
7
-
8
- from Orange.widgets.credentials import CredentialManager
9
-
10
-
11
- # minimal in-memory keyring implementation so the test is not dependent on
12
- # the system config/services.
13
- class Keyring(keyring.backend.KeyringBackend):
14
- priority = 0
15
-
16
- def __init__(self):
17
- self.__store = {}
18
-
19
- def set_password(self, service, username, password=None):
20
- self.__store[(service, username)] = password
21
-
22
- def get_password(self, service, username):
23
- return self.__store.get((service, username), None)
24
-
25
- def delete_password(self, service, username):
26
- try:
27
- del self.__store[service, username]
28
- except KeyError:
29
- raise keyring.errors.PasswordDeleteError()
30
-
31
-
32
- class TestCredentialManager(unittest.TestCase):
33
- def setUp(self):
34
- self._ring = keyring.get_keyring()
35
- keyring.set_keyring(Keyring())
36
- self.cm = CredentialManager('Orange')
37
-
38
- def tearDown(self):
39
- keyring.set_keyring(self._ring)
40
-
41
- def test_credential_manager(self):
42
- cm = CredentialManager('Orange')
43
- cm.key = 'Foo'
44
- self.assertEqual(cm.key, 'Foo')
45
- del cm.key
46
- self.assertEqual(cm.key, None)
47
-
48
- def test_set_password(self):
49
- """
50
- Handle error when setting password fails.
51
- GH-2354
52
- """
53
- with patch("keyring.set_password", side_effect=Exception), \
54
- patch("Orange.widgets.credentials.log.exception") as log:
55
- self.cm.key = ""
56
- log.assert_called()
57
-
58
- def test_delete_password(self):
59
- """
60
- Handling error when deleting password fails
61
- GH-2354
62
- """
63
- with patch("keyring.delete_password", side_effect=Exception), \
64
- patch("Orange.widgets.credentials.log.exception") as log:
65
- del self.cm.key
66
- log.assert_called()
67
-
68
- def test_get_password(self):
69
- """
70
- Handling errors when getting password fails.
71
- GH-2354
72
- """
73
- with patch("keyring.get_password", side_effect=Exception), \
74
- patch("Orange.widgets.credentials.log.exception") as log:
75
- self.assertEqual(self.cm.key, None)
76
- log.assert_called()
@@ -1,401 +0,0 @@
1
- import warnings
2
- from unittest import TestCase
3
- from unittest.mock import Mock
4
-
5
- from Orange.data import Domain, DiscreteVariable
6
- from Orange.data import ContinuousVariable
7
- from Orange.util import OrangeDeprecationWarning
8
- from Orange.widgets.settings import DomainContextHandler, ContextSetting
9
- from Orange.widgets.utils import vartype
10
-
11
- Continuous = 100 + vartype(ContinuousVariable("x"))
12
- Discrete = 100 + vartype(DiscreteVariable("x"))
13
-
14
-
15
- class TestDomainContextHandler(TestCase):
16
- def setUp(self):
17
- self.domain = Domain(
18
- attributes=[ContinuousVariable('c1'),
19
- DiscreteVariable('d1', values='abc'),
20
- DiscreteVariable('d2', values='def')],
21
- class_vars=[DiscreteVariable('d3', values='ghi')],
22
- metas=[ContinuousVariable('c2'),
23
- DiscreteVariable('d4', values='jkl')]
24
- )
25
- self.args = (self.domain,
26
- {'c1': Continuous - 100, 'd1': Discrete - 100,
27
- 'd2': Discrete - 100, 'd3': Discrete - 100},
28
- {'c2': Continuous - 100, 'd4': Discrete - 100, })
29
- self.handler = DomainContextHandler()
30
- self.handler.read_defaults = lambda: None
31
-
32
- def test_encode_domain_with_match_none(self):
33
- handler = DomainContextHandler(
34
- match_values=DomainContextHandler.MATCH_VALUES_NONE)
35
-
36
- encoded_attributes, encoded_metas = handler.encode_domain(self.domain)
37
-
38
- self.assertEqual(encoded_attributes,
39
- {'c1': Continuous - 100, 'd1': Discrete - 100,
40
- 'd2': Discrete - 100, 'd3': Discrete - 100})
41
- self.assertEqual(encoded_metas,
42
- {'c2': Continuous - 100, 'd4': Discrete - 100, })
43
-
44
- def test_encode_domain_with_match_class(self):
45
- handler = DomainContextHandler(
46
- match_values=DomainContextHandler.MATCH_VALUES_CLASS)
47
-
48
- encoded_attributes, encoded_metas = handler.encode_domain(self.domain)
49
-
50
- self.assertEqual(encoded_attributes,
51
- {'c1': Continuous - 100, 'd1': Discrete - 100,
52
- 'd2': Discrete - 100,
53
- 'd3': tuple('ghi')})
54
- self.assertEqual(encoded_metas,
55
- {'c2': Continuous - 100, 'd4': Discrete - 100})
56
-
57
- def test_encode_domain_with_match_all(self):
58
- handler = DomainContextHandler(
59
- match_values=DomainContextHandler.MATCH_VALUES_ALL)
60
-
61
- encoded_attributes, encoded_metas = handler.encode_domain(self.domain)
62
-
63
- self.assertEqual(encoded_attributes,
64
- {'c1': Continuous - 100, 'd1': tuple('abc'),
65
- 'd2': tuple('def'), 'd3': tuple('ghi')})
66
- self.assertEqual(encoded_metas,
67
- {'c2': Continuous - 100, 'd4': tuple('jkl')})
68
-
69
- def test_match_returns_1_if_everything_matches(self):
70
- self.handler.bind(SimpleWidget)
71
-
72
- # Attributes in values
73
- context = Mock(values=dict(
74
- with_metas=('d1', Discrete),
75
- required=('d1', Discrete)))
76
- self.assertEqual(1., self.handler.match(context, *self.args))
77
-
78
- # Metas in values
79
- context = Mock(values=dict(
80
- with_metas=('d4', Discrete),
81
- required=('d1', Discrete)))
82
- self.assertEqual(1., self.handler.match(context, *self.args))
83
-
84
- # Attributes in lists
85
- context = Mock(values=dict(
86
- with_metas=[("d1", Discrete)]
87
- ))
88
- self.assertEqual(1., self.handler.match(context, *self.args))
89
-
90
- # Metas in lists
91
- context = Mock(values=dict(
92
- with_metas=[("d4", Discrete)]
93
- ))
94
- self.assertEqual(1., self.handler.match(context, *self.args))
95
-
96
- def test_match_when_nothing_to_match(self):
97
- self.handler.bind(SimpleWidget)
98
-
99
- context = Mock(values={})
100
- self.assertEqual(0.1, self.handler.match(context, *self.args))
101
-
102
- def test_match_returns_zero_on_incompatible_context(self):
103
- self.handler.bind(SimpleWidget)
104
-
105
- # required
106
- context = Mock(values=dict(required=('u', Discrete),
107
- with_metas=('d1', Discrete)))
108
- self.assertEqual(0, self.handler.match(context, *self.args))
109
-
110
- def test_clone_context(self):
111
- self.handler.bind(SimpleWidget)
112
- context = self.create_context(self.domain, dict(
113
- text=('u', -2),
114
- with_metas=[('d1', Discrete), ('d1', Continuous),
115
- ('c1', Continuous), ('c1', Discrete)],
116
- required=('u', Continuous)
117
- ))
118
-
119
- new_values = self.handler.clone_context(context, *self.args).values
120
-
121
- self.assertEqual(new_values['text'], ('u', -2))
122
- self.assertEqual([('d1', Discrete), ('c1', Continuous)],
123
- new_values['with_metas'])
124
- self.assertNotIn('required', new_values)
125
-
126
- def test_open_context(self):
127
- self.handler.bind(SimpleWidget)
128
- context = self.create_context(self.domain, dict(
129
- text=('u', -2),
130
- with_metas=[('d1', Discrete), ('d2', Discrete)]
131
- ))
132
- self.handler.global_contexts = \
133
- [context, Mock(values={})]
134
-
135
- widget = SimpleWidget()
136
- self.handler.initialize(widget)
137
- old_metas_list = widget.with_metas
138
- self.handler.open_context(widget, self.args[0])
139
-
140
- context = widget.current_context
141
- self.assertEqual(context.attributes, self.args[1])
142
- self.assertEqual(context.metas, self.args[2])
143
- self.assertIs(old_metas_list, widget.with_metas)
144
-
145
- self.assertEqual(widget.text, 'u')
146
- self.assertEqual(widget.with_metas, [('d1', Discrete),
147
- ('d2', Discrete)])
148
-
149
- def test_open_context_with_imperfect_match(self):
150
- self.handler.bind(SimpleWidget)
151
- context = self.create_context(None, dict(
152
- text=('u', -2),
153
- with_metas=[('d1', Discrete), ('d1', Continuous),
154
- ('c1', Continuous), ('c1', Discrete)]
155
- ))
156
- self.handler.global_contexts = \
157
- [context, Mock(values={})]
158
-
159
- widget = SimpleWidget()
160
- self.handler.initialize(widget)
161
- self.handler.open_context(widget, self.args[0])
162
-
163
- context = widget.current_context
164
- self.assertEqual(context.attributes, self.args[1])
165
- self.assertEqual(context.metas, self.args[2])
166
-
167
- self.assertEqual(widget.text, 'u')
168
- self.assertEqual(widget.with_metas, [('d1', Discrete),
169
- ('c1', Continuous)])
170
-
171
- def test_open_context_not_first_match(self):
172
- self.handler.bind(SimpleWidget)
173
- context = self.create_context(None, dict(
174
- text=('u', -2),
175
- with_metas=[('d1', Discrete), ('d1', Continuous),
176
- ('c1', Continuous), ('c1', Discrete)]
177
- ))
178
- self.handler.global_contexts = \
179
- [Mock(values={}), context, Mock(values={})]
180
- self.handler.first_match = False
181
-
182
- widget = SimpleWidget()
183
- self.handler.initialize(widget)
184
- self.handler.open_context(widget, self.args[0])
185
-
186
- context = widget.current_context
187
- self.assertEqual(context.attributes, self.args[1])
188
- self.assertEqual(context.metas, self.args[2])
189
-
190
- self.assertEqual(widget.text, 'u')
191
- self.assertEqual(widget.with_metas, [('d1', Discrete),
192
- ('c1', Continuous)])
193
-
194
- def test_open_context_with_no_match(self):
195
- self.handler.bind(SimpleWidget)
196
- widget = SimpleWidget()
197
- self.handler.initialize(widget)
198
- widget.text = 'u'
199
-
200
- self.handler.open_context(widget, self.args[0])
201
-
202
- self.assertEqual(widget.text, 'u')
203
- self.assertEqual(widget.with_metas, [])
204
- context = widget.current_context
205
- self.assertEqual(context.attributes, self.args[1])
206
- self.assertEqual(context.metas, self.args[2])
207
- self.assertEqual(context.values['text'], ('u', -2))
208
-
209
- def test_filter_value(self):
210
- setting = ContextSetting([])
211
- setting.name = "value"
212
-
213
- def test_filter(before_value, after_value):
214
- data = dict(value=before_value)
215
- self.handler.filter_value(setting, data, *self.args)
216
- self.assertEqual(data.get("value", None), after_value)
217
-
218
- # filter list values
219
- test_filter([], [])
220
- # When list contains attributes asa tuple of (name, type),
221
- # Attributes not present in domain should be filtered out
222
- test_filter([("d1", Discrete), ("d1", Continuous),
223
- ("c1", Continuous), ("c1", Discrete)],
224
- [("d1", Discrete), ("c1", Continuous)])
225
- # All other values in list should remain
226
- test_filter([0, [1, 2, 3], "abcd", 5.4], [0, [1, 2, 3], "abcd", 5.4])
227
-
228
- def test_filter_value_dict(self):
229
- setting = ContextSetting({})
230
- setting.name = "value"
231
-
232
- def test_filter(before_value, after_value):
233
- data = dict(value=before_value)
234
- self.handler.filter_value(setting, data, *self.args)
235
- self.assertEqual(data.get("value", None), after_value)
236
-
237
- # filter list values
238
- test_filter({}, {})
239
- # When list contains attributes asa tuple of (name, type),
240
- # Attributes not present in domain should be filtered out
241
- test_filter({("d1", Discrete): 1, ("d1", Continuous): 2,
242
- ("c1", Continuous): 3, ("c1", Discrete): 4},
243
- {("d1", Discrete): 1, ("c1", Continuous): 3})
244
- # All other values in list should remain
245
- test_filter([0, [1, 2, 3], "abcd", 5.4], [0, [1, 2, 3], "abcd", 5.4])
246
-
247
- def test_encode_setting(self):
248
- setting = ContextSetting(None)
249
-
250
- var = self.domain[0]
251
- val = self.handler.encode_setting(None, setting, var)
252
- self.assertEqual(val, (var.name, 100 + vartype(var)))
253
-
254
- # Should not crash on anonymous variables
255
- with self.assertWarns(OrangeDeprecationWarning):
256
- var = ContinuousVariable()
257
- val = self.handler.encode_setting(None, setting, var)
258
- self.assertEqual(val, (var.name, 100 + vartype(var)))
259
-
260
- def test_encode_list_settings(self):
261
- setting = ContextSetting(None)
262
-
263
- var1, var2 = self.domain[:2]
264
- val = self.handler.encode_setting(None, setting, [None, var1, var2])
265
- self.assertEqual(
266
- val,
267
- ([None,
268
- (var1.name, 100 + vartype(var1)),
269
- (var2.name, 100 + vartype(var2))], -3))
270
-
271
- a_list = [1, 2, 3]
272
- val = self.handler.encode_setting(None, setting, a_list)
273
- self.assertEqual(val, [1, 2, 3])
274
- self.assertIsNot(val, a_list)
275
-
276
- a_list = []
277
- val = self.handler.encode_setting(None, setting, a_list)
278
- self.assertEqual(val, [])
279
- self.assertIsNot(val, a_list)
280
-
281
- a_list = [None, None]
282
- val = self.handler.encode_setting(None, setting, a_list)
283
- self.assertEqual(val, [None, None])
284
- self.assertIsNot(val, a_list)
285
-
286
- def test_encode_dict_settings(self):
287
- setting = ContextSetting(None)
288
-
289
- var1, var2 = self.domain[:2]
290
- val = self.handler.encode_setting(None, setting, {var1: 1, var2: 2})
291
- self.assertEqual(
292
- val,
293
- ({(var1.name, 100 + vartype(var1)): 1,
294
- (var2.name, 100 + vartype(var2)): 2}, -4))
295
-
296
- a_dict = {1: 2, 2: 3, 3: 4}
297
- val = self.handler.encode_setting(None, setting, a_dict)
298
- self.assertEqual(val, ({1: 2, 2: 3, 3: 4}, -2))
299
- self.assertIsNot(val, a_dict)
300
-
301
- a_dict = {}
302
- val = self.handler.encode_setting(None, setting, a_dict)
303
- self.assertEqual(val, ({}, -4))
304
- self.assertIsNot(val, a_dict)
305
-
306
- def test_decode_setting(self):
307
- setting = ContextSetting(None)
308
-
309
- var = self.domain[0]
310
- val = self.handler.decode_setting(setting, (var.name, 100 + vartype(var)),
311
- self.domain)
312
- self.assertIs(val, var)
313
-
314
- all_metas_domain = Domain([], metas=[var])
315
- val = self.handler.decode_setting(setting, (var.name, 100 + vartype(var)),
316
- all_metas_domain)
317
- self.assertIs(val, var)
318
-
319
- self.assertRaises(ValueError,
320
- self.handler.decode_setting,
321
- setting, (var.name, 100 + vartype(var)))
322
- self.handler.decode_setting(setting, None, None)
323
-
324
- def test_decode_list_setting(self):
325
- setting = ContextSetting(None)
326
-
327
- var1, var2 = self.domain[:2]
328
- val = self.handler.decode_setting(
329
- setting,
330
- ([None,
331
- (var1.name, 100 + vartype(var1)),
332
- (var2.name, 100 + vartype(var2))], -3),
333
- self.domain)
334
- self.assertEqual(val, [None, var1, var2])
335
-
336
- val = self.handler.decode_setting(setting, [1, 2, 3], self.domain)
337
- self.assertEqual(val, [1, 2, 3])
338
-
339
- self.assertRaises(ValueError,
340
- self.handler.decode_setting,
341
- setting,
342
- ([None,
343
- (var1.name, 100 + vartype(var1)),
344
- (var2.name, 100 + vartype(var2))], -3)
345
- )
346
- val = self.handler.decode_setting(setting, ([None, None], -3), None)
347
- self.assertEqual(val, [None, None])
348
-
349
-
350
- def test_decode_dict_setting(self):
351
- setting = ContextSetting(None)
352
-
353
- var1, var2 = self.domain[:2]
354
- val = self.handler.decode_setting(
355
- setting,
356
- ({(var1.name, 100 + vartype(var1)): 1,
357
- (var2.name, 100 + vartype(var2)): 2}, -4),
358
- self.domain)
359
- self.assertEqual(val, {var1: 1, var2: 2})
360
-
361
- val = self.handler.decode_setting(
362
- setting, ({1: 2, 2: 3, 3: 4}, -2), self.domain)
363
- self.assertEqual(val, {1: 2, 2: 3, 3: 4})
364
-
365
- self.assertRaises(ValueError,
366
- self.handler.decode_setting,
367
- setting,
368
- ({(var1.name, 100 + vartype(var1)): 1,
369
- (var2.name, 100 + vartype(var2)): 2}, -4))
370
-
371
- val = self.handler.decode_setting(setting, ({1: 2, 2: 3, 3: 4}, -2))
372
- self.assertEqual(val, {1: 2, 2: 3, 3: 4})
373
-
374
-
375
- def test_backward_compatible_params(self):
376
- with warnings.catch_warnings(record=True) as w:
377
- warnings.simplefilter("always")
378
- DomainContextHandler(metas_in_res=True)
379
- self.assertIn(OrangeDeprecationWarning,
380
- [x.category for x in w])
381
-
382
- def create_context(self, domain, values):
383
- if domain is None:
384
- domain = Domain([])
385
-
386
- context = self.handler.new_context(domain,
387
- *self.handler.encode_domain(domain))
388
- context.values = values
389
- return context
390
-
391
-
392
- class SimpleWidget:
393
- text = ContextSetting("")
394
- with_metas = ContextSetting([], required=ContextSetting.OPTIONAL)
395
- required = ContextSetting("", required=ContextSetting.REQUIRED)
396
-
397
- def retrieveSpecificSettings(self):
398
- pass
399
-
400
- def storeSpecificSettings(self):
401
- pass