aait 2.2.2.2__tar.gz → 2.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aait-2.2.3/PKG-INFO +9 -0
- aait-2.2.3/aait.egg-info/PKG-INFO +9 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/SOURCES.txt +3 -3
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/process_documents.py +99 -70
- aait-2.2.3/orangecontrib/AAIT/widgets/OWAccumulator.py +147 -0
- aait-2.2.3/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +80 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +1 -1
- aait-2.2.3/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/setup.py +1 -1
- aait-2.2.2.2/PKG-INFO +0 -28
- aait-2.2.2.2/aait.egg-info/PKG-INFO +0 -28
- aait-2.2.2.2/orangecontrib/AAIT/widgets/OWKeywords.py +0 -153
- aait-2.2.2.2/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/License.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/dependency_links.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/entry_points.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/namespace_packages.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/requires.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/aait.egg-info/top_level.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/answers.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/chunking.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/finetuning.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/quickpy.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/test.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/test_functions.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/llm/translations.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/import_uic.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/orangecontrib/__init__.py +0 -0
- {aait-2.2.2.2 → aait-2.2.3}/setup.cfg +0 -0
aait-2.2.3/PKG-INFO
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: aait
|
|
3
|
+
Version: 2.2.3
|
|
4
|
+
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
+
Home-page:
|
|
6
|
+
Author: Orange community
|
|
7
|
+
Author-email:
|
|
8
|
+
Keywords: orange3 add-on
|
|
9
|
+
License-File: License.txt
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: aait
|
|
3
|
+
Version: 2.2.3
|
|
4
|
+
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
+
Home-page:
|
|
6
|
+
Author: Orange community
|
|
7
|
+
Author-email:
|
|
8
|
+
Keywords: orange3 add-on
|
|
9
|
+
License-File: License.txt
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
License.txt
|
|
2
|
-
setup.cfg
|
|
3
2
|
setup.py
|
|
4
3
|
aait.egg-info/PKG-INFO
|
|
5
4
|
aait.egg-info/SOURCES.txt
|
|
@@ -82,6 +81,7 @@ orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py
|
|
|
82
81
|
orangecontrib/AAIT/utils/tools/first_time_check.py
|
|
83
82
|
orangecontrib/AAIT/utils/tools/owcorpus_ok.txt
|
|
84
83
|
orangecontrib/AAIT/widgets/OWAAITResourcesManager.py
|
|
84
|
+
orangecontrib/AAIT/widgets/OWAccumulator.py
|
|
85
85
|
orangecontrib/AAIT/widgets/OWAddColumns.py
|
|
86
86
|
orangecontrib/AAIT/widgets/OWApplyRules.py
|
|
87
87
|
orangecontrib/AAIT/widgets/OWCN2rule_view.py
|
|
@@ -105,7 +105,6 @@ orangecontrib/AAIT/widgets/OWGenerateQuestions.py
|
|
|
105
105
|
orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
|
|
106
106
|
orangecontrib/AAIT/widgets/OWGenerateWord.py
|
|
107
107
|
orangecontrib/AAIT/widgets/OWInputSelector.py
|
|
108
|
-
orangecontrib/AAIT/widgets/OWKeywords.py
|
|
109
108
|
orangecontrib/AAIT/widgets/OWKeywordsDetection.py
|
|
110
109
|
orangecontrib/AAIT/widgets/OWLMStudio.py
|
|
111
110
|
orangecontrib/AAIT/widgets/OWLanguageDetection.py
|
|
@@ -146,6 +145,7 @@ orangecontrib/AAIT/widgets/__init__.py
|
|
|
146
145
|
orangecontrib/AAIT/widgets/designer/owMarkdown.ui
|
|
147
146
|
orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui
|
|
148
147
|
orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui
|
|
148
|
+
orangecontrib/AAIT/widgets/designer/owaccumulator.ui
|
|
149
149
|
orangecontrib/AAIT/widgets/designer/owaddcolumns.ui
|
|
150
150
|
orangecontrib/AAIT/widgets/designer/owapplyrules.ui
|
|
151
151
|
orangecontrib/AAIT/widgets/designer/owchunking.ui
|
|
@@ -227,6 +227,7 @@ orangecontrib/AAIT/widgets/icons/optimisation.png
|
|
|
227
227
|
orangecontrib/AAIT/widgets/icons/optimizer.png
|
|
228
228
|
orangecontrib/AAIT/widgets/icons/output.png
|
|
229
229
|
orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg
|
|
230
|
+
orangecontrib/AAIT/widgets/icons/owaccumulator.png
|
|
230
231
|
orangecontrib/AAIT/widgets/icons/owchunking.png
|
|
231
232
|
orangecontrib/AAIT/widgets/icons/owconversellm.svg
|
|
232
233
|
orangecontrib/AAIT/widgets/icons/owedittable.svg
|
|
@@ -242,7 +243,6 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
|
|
|
242
243
|
orangecontrib/AAIT/widgets/icons/owfusion_nm.png
|
|
243
244
|
orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
|
|
244
245
|
orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
|
|
245
|
-
orangecontrib/AAIT/widgets/icons/owkeywords.png
|
|
246
246
|
orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png
|
|
247
247
|
orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
|
|
248
248
|
orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import json
|
|
3
3
|
import ntpath
|
|
4
|
+
from pathlib import Path
|
|
4
5
|
|
|
5
6
|
from Orange.data import Table, Domain, StringVariable
|
|
6
7
|
|
|
@@ -8,31 +9,37 @@ import fitz
|
|
|
8
9
|
import docx
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
|
|
12
12
|
def process_documents(dirpath):
|
|
13
|
-
if dirpath is None or not
|
|
13
|
+
if dirpath is None or not Path(dirpath).exists():
|
|
14
14
|
return None, None
|
|
15
15
|
|
|
16
|
+
# Normalize dirpath
|
|
17
|
+
dirpath = Path(dirpath).resolve()
|
|
18
|
+
|
|
16
19
|
# get path from user selection
|
|
17
20
|
embeddings = check_for_embeddings(dirpath)
|
|
18
|
-
dirpath = dirpath.replace("\\","/")
|
|
19
21
|
|
|
20
22
|
# Set selected path in the saved embeddings
|
|
21
23
|
if embeddings is not None:
|
|
22
|
-
common_path = find_common_root(embeddings).
|
|
24
|
+
common_path = Path(find_common_root(embeddings)).resolve()
|
|
23
25
|
for row in embeddings:
|
|
24
|
-
|
|
26
|
+
row_path = Path(str(row["path"].value)).resolve()
|
|
27
|
+
# Replace common root with the current dirpath
|
|
28
|
+
try:
|
|
29
|
+
row["path"] = str(dirpath / row_path.relative_to(common_path))
|
|
30
|
+
except ValueError:
|
|
31
|
+
# If relative_to fails (paths not matching), just normalize
|
|
32
|
+
row["path"] = str(row_path)
|
|
25
33
|
|
|
26
34
|
# Verify which files are already processed
|
|
27
35
|
files_to_process = get_files_to_process(dirpath, embeddings)
|
|
28
36
|
|
|
29
37
|
rows = []
|
|
30
38
|
for file in files_to_process:
|
|
31
|
-
|
|
32
|
-
content = extract_text(file)
|
|
33
|
-
filename =
|
|
34
|
-
|
|
35
|
-
row = [file, filename, content]
|
|
39
|
+
file = Path(file).resolve()
|
|
40
|
+
content = extract_text(str(file)) # extractor may expect string
|
|
41
|
+
filename = file.name
|
|
42
|
+
row = [str(file), filename, content] # store strings in Orange table
|
|
36
43
|
rows.append(row)
|
|
37
44
|
|
|
38
45
|
# Build a table with the constructed rows
|
|
@@ -44,93 +51,115 @@ def process_documents(dirpath):
|
|
|
44
51
|
return out_data, embeddings
|
|
45
52
|
|
|
46
53
|
|
|
54
|
+
def check_for_embeddings(folder_path):
|
|
55
|
+
"""
|
|
56
|
+
Check for an embeddings.pkl file in a given folder. Return its content if it exists.
|
|
57
|
+
|
|
58
|
+
Parameters:
|
|
59
|
+
folder_path (str | Path): The path to the folder where embeddings.pkl may exist.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Table or None: The content of embeddings.pkl, or None if not found.
|
|
63
|
+
"""
|
|
64
|
+
folder_path = Path(folder_path).resolve()
|
|
65
|
+
|
|
66
|
+
filepaths = [
|
|
67
|
+
folder_path / "embeddings_question.pkl",
|
|
68
|
+
folder_path / "embeddings.pkl"
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
for filepath in filepaths:
|
|
72
|
+
if filepath.exists():
|
|
73
|
+
return Table.from_file(str(filepath)) # Table.from_file expects a str
|
|
74
|
+
return None
|
|
75
|
+
|
|
76
|
+
|
|
47
77
|
def find_common_root(data_table, column_name="path"):
|
|
48
78
|
"""Finds the common root path from a column of file paths in an Orange Data Table."""
|
|
49
|
-
paths = [str(row[column_name])
|
|
79
|
+
paths = [Path(str(row[column_name].value)).resolve()
|
|
80
|
+
for row in data_table if row[column_name] is not None]
|
|
50
81
|
if not paths:
|
|
51
82
|
return ""
|
|
52
|
-
return os.path.commonpath(paths)
|
|
83
|
+
return str(Path(os.path.commonpath(paths)).resolve())
|
|
53
84
|
|
|
54
85
|
|
|
55
86
|
def get_files_to_process(folder_path, table=None):
|
|
56
87
|
"""
|
|
57
|
-
Finds all PDF files in a folder (including subfolders) that are not already in the table
|
|
58
|
-
|
|
88
|
+
Finds all PDF/DOCX files in a folder (including subfolders) that are not already in the table
|
|
89
|
+
or that have changed since last check (based on file size).
|
|
59
90
|
|
|
60
91
|
:param folder_path: Path to the folder to scan for documents.
|
|
61
|
-
:param table: Orange Data Table with
|
|
62
|
-
:return: List of
|
|
92
|
+
:param table: Orange Data Table with column "path".
|
|
93
|
+
:return: List of new/changed file paths.
|
|
63
94
|
"""
|
|
64
|
-
|
|
65
|
-
# Supported file extensions
|
|
66
|
-
supported_extensions = [".pdf", ".docx"]
|
|
95
|
+
supported_extensions = {".pdf", ".docx"}
|
|
67
96
|
|
|
68
|
-
|
|
69
|
-
filepath_sizes =
|
|
70
|
-
|
|
97
|
+
folder_path = Path(folder_path).resolve()
|
|
98
|
+
filepath_sizes = folder_path / "sizes.json"
|
|
99
|
+
|
|
100
|
+
print(filepath_sizes)
|
|
101
|
+
print(filepath_sizes.exists())
|
|
102
|
+
|
|
103
|
+
# Load previous file sizes
|
|
104
|
+
if filepath_sizes.exists():
|
|
71
105
|
with open(filepath_sizes, "r") as json_file:
|
|
72
|
-
sizes = json.load(json_file)
|
|
106
|
+
sizes = {Path(k): v for k, v in json.load(json_file).items()}
|
|
73
107
|
else:
|
|
74
|
-
sizes =
|
|
108
|
+
sizes = {}
|
|
75
109
|
|
|
76
|
-
|
|
110
|
+
print(sizes)
|
|
111
|
+
|
|
112
|
+
# Extract the existing paths from the Orange Data Table
|
|
77
113
|
if table:
|
|
78
|
-
|
|
114
|
+
# Orange stores metas as strings → turn them into Paths
|
|
115
|
+
existing_paths = {Path(str(p)).resolve() for p in table[:, "path"].metas.flatten()}
|
|
79
116
|
else:
|
|
80
117
|
existing_paths = set()
|
|
81
118
|
|
|
82
|
-
|
|
83
|
-
# Walk through the folder and its subfolders
|
|
84
119
|
new_files = []
|
|
85
|
-
for root, _, files in os.walk(folder_path):
|
|
86
|
-
for file in files:
|
|
87
|
-
# Check if the file has a supported extension
|
|
88
|
-
if os.path.splitext(file)[1].lower() in supported_extensions:
|
|
89
|
-
# Add the file if it is not already in the table
|
|
90
|
-
filepath = os.path.join(root, file).replace("\\","/")
|
|
91
|
-
if filepath not in existing_paths:
|
|
92
|
-
new_files.append(filepath)
|
|
93
|
-
sizes[filepath] = os.path.getsize(filepath)
|
|
94
|
-
# If the file is in the table, verify if the file has been modified (comparing the size)
|
|
95
|
-
else:
|
|
96
|
-
new_size = os.path.getsize(filepath)
|
|
97
|
-
if filepath not in sizes.keys():
|
|
98
|
-
sizes[filepath] = new_size
|
|
99
|
-
else:
|
|
100
|
-
old_size = sizes[filepath]
|
|
101
|
-
if old_size != new_size:
|
|
102
|
-
new_files.append(filepath)
|
|
103
|
-
table = remove_from_table(filepath, table)
|
|
104
|
-
sizes[filepath] = new_size
|
|
105
|
-
with open(filepath_sizes, "w") as json_file:
|
|
106
|
-
json.dump(sizes, json_file, indent=4)
|
|
107
|
-
return new_files
|
|
108
120
|
|
|
121
|
+
# Walk through the folder and subfolders
|
|
122
|
+
for file in folder_path.rglob("*"):
|
|
123
|
+
if file.suffix.lower() in supported_extensions:
|
|
124
|
+
file = file.resolve()
|
|
125
|
+
size = file.stat().st_size
|
|
109
126
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
127
|
+
if file not in existing_paths:
|
|
128
|
+
# New file
|
|
129
|
+
new_files.append(str(file))
|
|
130
|
+
sizes[Path(ntpath.basename(file))] = size
|
|
131
|
+
else:
|
|
132
|
+
# File already in table: check if size changed
|
|
133
|
+
print("File: ", Path(ntpath.basename(file)))
|
|
134
|
+
old_size = sizes.get(Path(ntpath.basename(file)))
|
|
135
|
+
print(old_size)
|
|
136
|
+
if old_size is None or old_size != size:
|
|
137
|
+
new_files.append(str(file))
|
|
138
|
+
table = remove_from_table(file, table)
|
|
139
|
+
sizes[Path(ntpath.basename(file))] = size
|
|
114
140
|
|
|
115
141
|
|
|
116
|
-
|
|
117
|
-
""
|
|
118
|
-
|
|
142
|
+
# Save updated sizes.json (keys must be strings for JSON)
|
|
143
|
+
with open(filepath_sizes, "w") as json_file:
|
|
144
|
+
json.dump({str(k): v for k, v in sizes.items()}, json_file, indent=4)
|
|
119
145
|
|
|
120
|
-
|
|
121
|
-
folder_path (str): The path to the folder where embeddings.pkl may exist.
|
|
146
|
+
return new_files
|
|
122
147
|
|
|
123
|
-
|
|
124
|
-
|
|
148
|
+
|
|
149
|
+
def remove_from_table(filepath, table):
|
|
125
150
|
"""
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
151
|
+
Remove rows from the Orange table where 'path' matches the given filepath.
|
|
152
|
+
"""
|
|
153
|
+
filepath = Path(filepath).resolve()
|
|
154
|
+
|
|
155
|
+
filtered_table = Table.from_list(
|
|
156
|
+
domain=table.domain,
|
|
157
|
+
rows=[
|
|
158
|
+
row for row in table
|
|
159
|
+
if Path(str(row["path"].value)).resolve() != filepath
|
|
160
|
+
]
|
|
161
|
+
)
|
|
162
|
+
return filtered_table
|
|
134
163
|
|
|
135
164
|
|
|
136
165
|
def extract_text(filepath):
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
from orangewidget.widget import OWBaseWidget
|
|
2
|
+
import sys
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from AnyQt.QtWidgets import QApplication
|
|
6
|
+
from Orange.widgets.utils.signals import Input, Output
|
|
7
|
+
from Orange.data import Domain, Table
|
|
8
|
+
|
|
9
|
+
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
10
|
+
from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
|
|
11
|
+
from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
|
|
12
|
+
else:
|
|
13
|
+
from orangecontrib.AAIT.utils.import_uic import uic
|
|
14
|
+
from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
|
|
15
|
+
|
|
16
|
+
@apply_modification_from_python_file(filepath_original_widget=__file__)
|
|
17
|
+
class OWAccumulator(OWBaseWidget):
|
|
18
|
+
name = "Data Accumulator (Flexible Columns)"
|
|
19
|
+
description = "Allows for data accumulation by concatenation, automatically merging non-matching columns."
|
|
20
|
+
priority = 10
|
|
21
|
+
category = "AAIT - TOOLBOX"
|
|
22
|
+
icon = "icons/owaccumulator.png"
|
|
23
|
+
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
24
|
+
icon = "icons_dev/owaccumulator.png"
|
|
25
|
+
|
|
26
|
+
# Le chemin du fichier .ui
|
|
27
|
+
gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owaccumulator.ui")
|
|
28
|
+
priority = 1094
|
|
29
|
+
|
|
30
|
+
want_main_area = True
|
|
31
|
+
# want_control_area est mis à False pour utiliser l'UI chargée dans mainArea
|
|
32
|
+
want_control_area = False
|
|
33
|
+
|
|
34
|
+
class Inputs:
|
|
35
|
+
data = Input("Input Data", Table, auto_summary=False)
|
|
36
|
+
|
|
37
|
+
class Outputs:
|
|
38
|
+
sample = Output("Output", Table, auto_summary=False)
|
|
39
|
+
preview = Output("Preview", Table, auto_summary=False)
|
|
40
|
+
|
|
41
|
+
def __init__(self):
|
|
42
|
+
super().__init__()
|
|
43
|
+
|
|
44
|
+
# --- NOUVEAU : Chargement de l'UI et connexion du bouton ---
|
|
45
|
+
# Charge le contenu du .ui dans l'instance du widget (self)
|
|
46
|
+
uic.loadUi(self.gui, self)
|
|
47
|
+
|
|
48
|
+
# Connexion du bouton 'pushButton_send' défini dans le .ui
|
|
49
|
+
self.pushButton_send.clicked.connect(self.push)
|
|
50
|
+
|
|
51
|
+
# --- Variables d'état ---
|
|
52
|
+
self.data = None
|
|
53
|
+
self.out_data = None
|
|
54
|
+
|
|
55
|
+
# --- Appel à post_initialized pour l'alignement ---
|
|
56
|
+
self.post_initialized()
|
|
57
|
+
|
|
58
|
+
def push(self):
|
|
59
|
+
"""Sends the accumulated data and resets the accumulator."""
|
|
60
|
+
if self.data is not None:
|
|
61
|
+
self.out_data = self.data.copy()
|
|
62
|
+
|
|
63
|
+
# Send the final output
|
|
64
|
+
self.Outputs.sample.send(self.out_data)
|
|
65
|
+
|
|
66
|
+
# Purge the accumulator
|
|
67
|
+
self.data = None
|
|
68
|
+
self.Outputs.preview.send(None) # Clear preview after purge
|
|
69
|
+
self.information("Data sent and accumulator purged.")
|
|
70
|
+
else:
|
|
71
|
+
self.Outputs.sample.send(None)
|
|
72
|
+
self.warning("Accumulator is empty, nothing to send.")
|
|
73
|
+
|
|
74
|
+
@Inputs.data
|
|
75
|
+
def set_data(self, dataset):
|
|
76
|
+
"""Accumulates incoming data, merging columns if necessary, with robust variable handling."""
|
|
77
|
+
self.error("") # Clear previous errors
|
|
78
|
+
if dataset is None:
|
|
79
|
+
# If input is cleared, clear the preview output
|
|
80
|
+
if self.data is not None:
|
|
81
|
+
self.data = None
|
|
82
|
+
self.Outputs.preview.send(None)
|
|
83
|
+
return
|
|
84
|
+
|
|
85
|
+
# --- LOGIQUE DE FUSION DES COLONNES (CONSERVÉE) ---
|
|
86
|
+
|
|
87
|
+
if self.data is None:
|
|
88
|
+
# First data block: initialize the accumulator
|
|
89
|
+
self.data = dataset.copy()
|
|
90
|
+
|
|
91
|
+
else:
|
|
92
|
+
try:
|
|
93
|
+
# 1. Collecter TOUTES les variables (attributs réguliers + méta) des deux tables
|
|
94
|
+
current_all_vars = self.data.domain.variables + self.data.domain.metas
|
|
95
|
+
new_all_vars = dataset.domain.variables + dataset.domain.metas
|
|
96
|
+
|
|
97
|
+
# Utiliser un dictionnaire pour ne conserver qu'une seule variable par nom
|
|
98
|
+
unique_vars = {}
|
|
99
|
+
for var in current_all_vars + new_all_vars:
|
|
100
|
+
if var.name not in unique_vars:
|
|
101
|
+
unique_vars[var.name] = var
|
|
102
|
+
|
|
103
|
+
# 2. Identifier les noms d'attributs réguliers et de méta-attributs uniques
|
|
104
|
+
current_regular_names = set(v.name for v in self.data.domain.variables)
|
|
105
|
+
new_regular_names = set(v.name for v in dataset.domain.variables)
|
|
106
|
+
current_metas_names = set(v.name for v in self.data.domain.metas)
|
|
107
|
+
new_metas_names = set(v.name for v in dataset.domain.metas)
|
|
108
|
+
|
|
109
|
+
all_vars_names = current_regular_names | new_regular_names
|
|
110
|
+
all_metas_names = current_metas_names | new_metas_names
|
|
111
|
+
|
|
112
|
+
# 3. Filtrer les variables uniques pour créer le nouveau domaine
|
|
113
|
+
all_vars = sorted([unique_vars[name] for name in all_vars_names if name not in all_metas_names],
|
|
114
|
+
key=lambda x: x.name)
|
|
115
|
+
all_metas = sorted([unique_vars[name] for name in all_metas_names], key=lambda x: x.name)
|
|
116
|
+
|
|
117
|
+
# 4. Créer le nouveau domaine
|
|
118
|
+
new_domain = Domain(all_vars, metas=all_metas)
|
|
119
|
+
|
|
120
|
+
# 5. Transform (expand) both tables to the new, common domain
|
|
121
|
+
data_expanded = self.data.transform(new_domain)
|
|
122
|
+
dataset_expanded = dataset.transform(new_domain)
|
|
123
|
+
|
|
124
|
+
# 6. Concatenate the rows of the two uniformly expanded tables
|
|
125
|
+
self.data = data_expanded.__class__.concatenate((data_expanded, dataset_expanded))
|
|
126
|
+
|
|
127
|
+
except Exception as e:
|
|
128
|
+
self.error(f"Data tables could not be aggregated/concatenated. Error: {e}")
|
|
129
|
+
return
|
|
130
|
+
# Send the current accumulated data for preview
|
|
131
|
+
self.Outputs.preview.send(self.data)
|
|
132
|
+
|
|
133
|
+
def post_initialized(self):
|
|
134
|
+
"""
|
|
135
|
+
Method for post-initialization tasks, aligned with OWChunker structure.
|
|
136
|
+
"""
|
|
137
|
+
pass
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
if __name__ == "__main__":
|
|
141
|
+
app = QApplication(sys.argv)
|
|
142
|
+
my_widget = OWAccumulator()
|
|
143
|
+
my_widget.show()
|
|
144
|
+
if hasattr(app, "exec"):
|
|
145
|
+
app.exec()
|
|
146
|
+
else:
|
|
147
|
+
app.exec_()
|
|
@@ -0,0 +1,80 @@
|
|
|
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>470</width>
|
|
10
|
+
<height>293</height>
|
|
11
|
+
</rect>
|
|
12
|
+
</property>
|
|
13
|
+
<property name="windowTitle">
|
|
14
|
+
<string>Form</string>
|
|
15
|
+
</property>
|
|
16
|
+
<widget class="QGroupBox" name="groupBox">
|
|
17
|
+
<property name="geometry">
|
|
18
|
+
<rect>
|
|
19
|
+
<x>19</x>
|
|
20
|
+
<y>30</y>
|
|
21
|
+
<width>431</width>
|
|
22
|
+
<height>191</height>
|
|
23
|
+
</rect>
|
|
24
|
+
</property>
|
|
25
|
+
<property name="title">
|
|
26
|
+
<string>Parameters</string>
|
|
27
|
+
</property>
|
|
28
|
+
<widget class="QLabel" name="label_2">
|
|
29
|
+
<property name="geometry">
|
|
30
|
+
<rect>
|
|
31
|
+
<x>70</x>
|
|
32
|
+
<y>150</y>
|
|
33
|
+
<width>151</width>
|
|
34
|
+
<height>21</height>
|
|
35
|
+
</rect>
|
|
36
|
+
</property>
|
|
37
|
+
<property name="text">
|
|
38
|
+
<string>Send data</string>
|
|
39
|
+
</property>
|
|
40
|
+
</widget>
|
|
41
|
+
<widget class="QLabel" name="Description">
|
|
42
|
+
<property name="geometry">
|
|
43
|
+
<rect>
|
|
44
|
+
<x>20</x>
|
|
45
|
+
<y>10</y>
|
|
46
|
+
<width>401</width>
|
|
47
|
+
<height>61</height>
|
|
48
|
+
</rect>
|
|
49
|
+
</property>
|
|
50
|
+
<property name="text">
|
|
51
|
+
<string>This widget accumulate data in order to propagate it to a final table.</string>
|
|
52
|
+
</property>
|
|
53
|
+
<property name="textFormat">
|
|
54
|
+
<enum>Qt::AutoText</enum>
|
|
55
|
+
</property>
|
|
56
|
+
<property name="alignment">
|
|
57
|
+
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
|
58
|
+
</property>
|
|
59
|
+
<property name="wordWrap">
|
|
60
|
+
<bool>true</bool>
|
|
61
|
+
</property>
|
|
62
|
+
</widget>
|
|
63
|
+
<widget class="QPushButton" name="pushButton_send">
|
|
64
|
+
<property name="geometry">
|
|
65
|
+
<rect>
|
|
66
|
+
<x>130</x>
|
|
67
|
+
<y>150</y>
|
|
68
|
+
<width>291</width>
|
|
69
|
+
<height>31</height>
|
|
70
|
+
</rect>
|
|
71
|
+
</property>
|
|
72
|
+
<property name="text">
|
|
73
|
+
<string>Send Accumulated Data</string>
|
|
74
|
+
</property>
|
|
75
|
+
</widget>
|
|
76
|
+
</widget>
|
|
77
|
+
</widget>
|
|
78
|
+
<resources/>
|
|
79
|
+
<connections/>
|
|
80
|
+
</ui>
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
</rect>
|
|
36
36
|
</property>
|
|
37
37
|
<property name="text">
|
|
38
|
-
<string>The input Data must contain a column "
|
|
38
|
+
<string>The input Data must contain a column "content". The input Keywords must contain a column "keywords". This widget will count the number of keywords that occur in the content with a fuzzy matching (percentage based on small variations).</string>
|
|
39
39
|
</property>
|
|
40
40
|
<property name="textFormat">
|
|
41
41
|
<enum>Qt::AutoText</enum>
|
|
Binary file
|
|
@@ -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.2.
|
|
7
|
+
VERSION = "2.2.3" # 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"
|
aait-2.2.2.2/PKG-INFO
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: aait
|
|
3
|
-
Version: 2.2.2.2
|
|
4
|
-
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
-
Home-page:
|
|
6
|
-
Author: Orange community
|
|
7
|
-
Author-email:
|
|
8
|
-
Keywords: orange3 add-on
|
|
9
|
-
License-File: License.txt
|
|
10
|
-
Requires-Dist: torch
|
|
11
|
-
Requires-Dist: sentence-transformers==5.0.0
|
|
12
|
-
Requires-Dist: gpt4all[all]==2.8.2
|
|
13
|
-
Requires-Dist: sacremoses==0.1.1
|
|
14
|
-
Requires-Dist: transformers==4.51.3
|
|
15
|
-
Requires-Dist: sentencepiece==0.2.0
|
|
16
|
-
Requires-Dist: optuna
|
|
17
|
-
Requires-Dist: spacy==3.7.6
|
|
18
|
-
Requires-Dist: markdown
|
|
19
|
-
Requires-Dist: python-multipart
|
|
20
|
-
Requires-Dist: PyMuPDF==1.24.14
|
|
21
|
-
Requires-Dist: chonkie==0.4.1
|
|
22
|
-
Requires-Dist: GPUtil==1.4.0
|
|
23
|
-
Requires-Dist: unidecode==1.3.8
|
|
24
|
-
Requires-Dist: python-docx==1.1.2
|
|
25
|
-
Requires-Dist: psutil
|
|
26
|
-
Requires-Dist: thefuzz==0.22.1
|
|
27
|
-
Requires-Dist: beautifulsoup4==4.12.3
|
|
28
|
-
Requires-Dist: CATEGORIT
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: aait
|
|
3
|
-
Version: 2.2.2.2
|
|
4
|
-
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
-
Home-page:
|
|
6
|
-
Author: Orange community
|
|
7
|
-
Author-email:
|
|
8
|
-
Keywords: orange3 add-on
|
|
9
|
-
License-File: License.txt
|
|
10
|
-
Requires-Dist: torch
|
|
11
|
-
Requires-Dist: sentence-transformers==5.0.0
|
|
12
|
-
Requires-Dist: gpt4all[all]==2.8.2
|
|
13
|
-
Requires-Dist: sacremoses==0.1.1
|
|
14
|
-
Requires-Dist: transformers==4.51.3
|
|
15
|
-
Requires-Dist: sentencepiece==0.2.0
|
|
16
|
-
Requires-Dist: optuna
|
|
17
|
-
Requires-Dist: spacy==3.7.6
|
|
18
|
-
Requires-Dist: markdown
|
|
19
|
-
Requires-Dist: python-multipart
|
|
20
|
-
Requires-Dist: PyMuPDF==1.24.14
|
|
21
|
-
Requires-Dist: chonkie==0.4.1
|
|
22
|
-
Requires-Dist: GPUtil==1.4.0
|
|
23
|
-
Requires-Dist: unidecode==1.3.8
|
|
24
|
-
Requires-Dist: python-docx==1.1.2
|
|
25
|
-
Requires-Dist: psutil
|
|
26
|
-
Requires-Dist: thefuzz==0.22.1
|
|
27
|
-
Requires-Dist: beautifulsoup4==4.12.3
|
|
28
|
-
Requires-Dist: CATEGORIT
|