From cd2930fbef92882ecbd680c82bc2dea74785169b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Jun 2025 01:01:46 +0000 Subject: [PATCH 01/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 8f4f5289..c655afd4 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -9,14 +9,13 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-core==1.5.0a1 [requires: ovos-workshop>=3.3.4,<4.0.0] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-PHAL-plugin-wifi-setup==1.1.8 [requires: ovos-workshop>=0.0.15,<4.0.0] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] │ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ │ └── ovos-core==1.5.0a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] +│ │ └── ovos-core==1.5.1a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] @@ -27,6 +26,7 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-alerts==0.1.25a2 [requires: ovos-workshop>=2.2.0,<4.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] │ ├── ovos-skill-dictation==0.2.16a1 [requires: ovos-workshop>=0.0.15,<4.0.0] +│ ├── ovos-core==1.5.1a1 [requires: ovos-workshop>=3.3.4,<4.0.0] │ ├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] │ ├── ovos-skill-fallback-unknown==0.1.7a1 [requires: ovos-workshop>=0.0.15,<5.0.0] │ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] @@ -39,7 +39,7 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ │ └── ovos-core==1.5.0a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] +│ │ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] @@ -52,7 +52,7 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ └── ovos-common-query-pipeline-plugin==1.1.8a1 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] @@ -60,12 +60,11 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-date-time==1.1.3 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-classifiers==0.0.0a59 [requires: ovos-utterance-normalizer] │ └── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-classifiers] -│ └── ovos-core==1.5.0a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] ├── ovos-ww-plugin-precise-lite==0.1.3 [requires: ovos-plugin-manager>=0.0.4,<1.0.0] ├── ovos-ww-plugin-vosk==0.1.4 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-core==1.5.0a1 [requires: ovos-plugin-manager>=0.9.0,<1.0.0] ├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-persona>=0.4.4,<1.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] ├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-PHAL-plugin-wifi-setup==1.1.8 [requires: ovos-plugin-manager>=0.0.23,<1.0.0] ├── ovos-tts-plugin-server==0.0.2 [requires: ovos-plugin-manager>=0.0.5,<1.0.0] @@ -83,7 +82,7 @@ ovos-plugin-manager==0.9.0 ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-stt-plugin-vosk==0.2.3 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] ├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-ollama-intent-pipeline-plugin==0.0.3 [requires: ovos-plugin-manager>=0.5.0,<1.0.0] ├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] @@ -94,9 +93,10 @@ ovos-plugin-manager==0.9.0 ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] ├── ovos-openai-plugin==2.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-persona>=0.4.4,<1.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] ├── ovos-dinkum-listener==0.4.0 [requires: ovos-plugin-manager>=0.3.1,<1.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-core==1.5.1a1 [requires: ovos-plugin-manager>=0.9.0,<1.0.0] ├── ovos-utterance-corrections-plugin==0.1.0 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] ├── ovos-audio==1.0.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] @@ -110,18 +110,18 @@ ovos-plugin-manager==0.9.0 ├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.4 [requires: ovos-plugin-manager>=0.0.23,<1.0.0] ├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-classifiers==0.0.0a59 [requires: ovos-plugin-manager>=0.0.26a38] │ └── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-classifiers] -│ └── ovos-core==1.5.0a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] ├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] -│ └── ovos-core==1.5.0a1 [requires: ovos-persona>=0.4.4,<1.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] ├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL==0.2.9 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8a1 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.0a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] +│ └── ovos-core==1.5.1a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] ├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] From f3d10926a19f5bee21abe271354e3267e63901c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Jun 2025 21:28:22 +0000 Subject: [PATCH 02/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index c655afd4..96d7532a 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,7 +1,7 @@ ovos-plugin-manager==0.9.0 ├── ovos-PHAL-plugin-system==1.3.2 [requires: ovos-plugin-manager>=0.0.26,<1.0.0] ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-vad-plugin-silero==0.0.2 [requires: ovos-plugin-manager>=0.0.11,<1.0.0] +├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-PHAL-plugin-network-manager==1.3.4 [requires: ovos-plugin-manager>=0.0.22,<1.0.0] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] │ └── ovos-workshop==3.4.0 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] @@ -13,6 +13,7 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-PHAL-plugin-wifi-setup==1.1.8 [requires: ovos-workshop>=0.0.15,<4.0.0] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] │ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ │ └── ovos-core==1.5.1a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] @@ -38,6 +39,7 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-workshop>=0.1.7,<8.0.0] │ │ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] @@ -76,9 +78,12 @@ ovos-plugin-manager==0.9.0 │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] ├── ovos-PHAL-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] ├── ovos-translate-server-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] +│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] │ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] ├── ovos-stt-plugin-server==0.1.1 [requires: ovos-plugin-manager>=0.7.0,<1.0.0] +├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] +├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-stt-plugin-vosk==0.2.3 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] ├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] @@ -112,6 +117,7 @@ ovos-plugin-manager==0.9.0 ├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] │ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] ├── ovos-classifiers==0.0.0a59 [requires: ovos-plugin-manager>=0.0.26a38] │ └── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-classifiers] │ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] @@ -125,5 +131,4 @@ ovos-plugin-manager==0.9.0 ├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] -├── ovos-PHAL-plugin-balena-wifi==1.2.1 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] └── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] From d60cace245be3afb16ed363cbcab5e2209f692d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 11 Jun 2025 01:01:25 +0000 Subject: [PATCH 03/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 81 +++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 50 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 96d7532a..bd5f3479 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,37 +1,34 @@ -ovos-plugin-manager==0.9.0 -├── ovos-PHAL-plugin-system==1.3.2 [requires: ovos-plugin-manager>=0.0.26,<1.0.0] +ovos-plugin-manager==1.0.3 +├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] -├── ovos-PHAL-plugin-network-manager==1.3.4 [requires: ovos-plugin-manager>=0.0.22,<1.0.0] +├── ovos-ww-plugin-vosk==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] -│ └── ovos-workshop==3.4.0 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] +│ └── ovos-workshop==7.0.2 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-word-of-the-day==0.1.4a1 [requires: ovos-workshop] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] +│ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-PHAL-plugin-wifi-setup==1.1.8 [requires: ovos-workshop>=0.0.15,<4.0.0] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] +│ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] │ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ │ └── ovos-core==1.5.1a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] -│ ├── ovos-ollama-intent-pipeline-plugin==0.0.3 [requires: ovos-workshop>=0.1.7,<4.0.0] │ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-workshop>=2.2.0,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-alerts==0.1.25a2 [requires: ovos-workshop>=2.2.0,<4.0.0] +│ ├── ovos-core==2.0.0a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-skill-dictation==0.2.16a1 [requires: ovos-workshop>=0.0.15,<4.0.0] -│ ├── ovos-core==1.5.1a1 [requires: ovos-workshop>=3.3.4,<4.0.0] +│ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] -│ ├── ovos-skill-fallback-unknown==0.1.7a1 [requires: ovos-workshop>=0.0.15,<5.0.0] │ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-parrot==0.1.20 [requires: ovos-workshop>=0.0.15,<4.0.0] │ ├── ovos-skill-date-time==1.1.3 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] @@ -40,56 +37,45 @@ ovos-plugin-manager==0.9.0 │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -│ ├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ │ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] +│ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-application-launcher==0.5.13 [requires: ovos-workshop>=0.0.15,<4.0.0] │ ├── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] -│ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -│ └── ovos-common-query-pipeline-plugin==1.1.8a1 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] +│ └── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ ├── ovos-skill-alerts==0.1.25a2 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-date-time==1.1.3 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ └── ovos-classifiers==0.0.0a59 [requires: ovos-utterance-normalizer] -│ └── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-classifiers] -│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] -├── ovos-ww-plugin-precise-lite==0.1.3 [requires: ovos-plugin-manager>=0.0.4,<1.0.0] -├── ovos-ww-plugin-vosk==0.1.4 [requires: ovos-plugin-manager>=0.0.1] +│ └── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] +│ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] +├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] ├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-PHAL-plugin-wifi-setup==1.1.8 [requires: ovos-plugin-manager>=0.0.23,<1.0.0] -├── ovos-tts-plugin-server==0.0.2 [requires: ovos-plugin-manager>=0.0.5,<1.0.0] -├── ovos-ocp-m3u-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] -│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] +├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-PHAL-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] -├── ovos-translate-server-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] -│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] -│ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] -├── ovos-stt-plugin-server==0.1.1 [requires: ovos-plugin-manager>=0.7.0,<1.0.0] +├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] ├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-stt-plugin-vosk==0.2.3 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] ├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-adapt-parser>=1.0.5,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-ollama-intent-pipeline-plugin==0.0.3 [requires: ovos-plugin-manager>=0.5.0,<1.0.0] ├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] @@ -98,13 +84,12 @@ ovos-plugin-manager==0.9.0 ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] ├── ovos-openai-plugin==2.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] -├── ovos-dinkum-listener==0.4.0 [requires: ovos-plugin-manager>=0.3.1,<1.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-core==1.5.1a1 [requires: ovos-plugin-manager>=0.9.0,<1.0.0] -├── ovos-utterance-corrections-plugin==0.1.0 [requires: ovos-plugin-manager>=0.0.1,<1.0.0] +├── ovos-core==2.0.0a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] +├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-audio==1.0.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] +├── ovos-dinkum-listener==0.4.1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-ocp-news-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-gui==1.3.3 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] ├── ovos-solver-bm25-plugin==0.0.1 [requires: ovos-plugin-manager>=0.8.5] @@ -113,22 +98,18 @@ ovos-plugin-manager==0.9.0 ├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-skill-wordnet==0.2.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] -├── ovos-PHAL-plugin-wallpaper-manager==0.2.4 [requires: ovos-plugin-manager>=0.0.23,<1.0.0] -├── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] +├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-PHAL-plugin-system==1.3.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] -├── ovos-classifiers==0.0.0a59 [requires: ovos-plugin-manager>=0.0.26a38] -│ └── ovos-ocp-pipeline-plugin==1.1.15a1 [requires: ovos-classifiers] -│ └── ovos-core==1.5.1a1 [requires: ovos-ocp-pipeline-plugin>=1.0.10,<2.0.0] ├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] -│ └── ovos-core==1.5.1a1 [requires: ovos-persona>=0.4.4,<1.0.0] ├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL==0.2.9 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] -├── ovos-common-query-pipeline-plugin==1.1.8a1 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -│ └── ovos-core==1.5.1a1 [requires: ovos-common-query-pipeline-plugin>=1.0.5,<2.0.0] ├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] +│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] └── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] From d4073536f116223d4f93a5704c982708a25b4539 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Jun 2025 01:01:07 +0000 Subject: [PATCH 04/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 176 +++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index bd5f3479..d8b1de2d 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,115 +1,115 @@ ovos-plugin-manager==1.0.3 -├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] -├── ovos-ww-plugin-vosk==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] +├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] +├── ovos-PHAL==0.2.9 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] +├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] +│ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] │ └── ovos-workshop==7.0.2 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] -│ ├── ovos-skill-word-of-the-day==0.1.4a1 [requires: ovos-workshop] -│ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] +│ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] +│ ├── ovos-skill-word-of-the-day==0.1.4a1 [requires: ovos-workshop] +│ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] -│ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] -│ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] -│ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] +│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] -│ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] +│ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] -│ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] -│ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] +│ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] +│ ├── ovos-core==2.0.0a1 [requires: ovos-workshop>=7.0.2,<8.0.0] +│ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-workshop>=2.2.0,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-core==2.0.0a1 [requires: ovos-workshop>=7.0.2,<8.0.0] -│ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] -│ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-date-time==1.1.3 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] -│ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] -│ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] -│ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] +│ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] +│ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] -│ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] +│ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +│ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] -│ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-date-time==1.1.3 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] +│ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] +│ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] +│ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] +│ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] -│ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] -│ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] -│ └── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] +│ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] +│ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] +├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] +├── ovos-core==2.0.0a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] +├── ovos-dinkum-listener==0.4.1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] +├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] +├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] +├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] +├── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] +├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] -│ ├── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-date-time==1.1.3 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ └── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] -│ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] -├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +│ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] +├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] +│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] ├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] -├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] -├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] -├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] -├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] -├── ovos-microphone-plugin-sounddevice==0.0.1 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] ├── ovos-openai-plugin==2.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] -├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-core==2.0.0a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] -├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-audio==1.0.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] -├── ovos-dinkum-listener==0.4.1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] +├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-ocp-news-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] +├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] +├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] ├── ovos-gui==1.3.3 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] +├── ovos-PHAL-plugin-system==1.3.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] +├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] +├── ovos-microphone-plugin-sounddevice==0.0.1 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] +├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] +├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-ww-plugin-vosk==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-solver-bm25-plugin==0.0.1 [requires: ovos-plugin-manager>=0.8.5] │ └── ovos-wikipedia-solver==0.1.1 [requires: ovos-solver-bm25-plugin>=0.0.1,<1.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-skill-wordnet==0.2.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] -├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-PHAL-plugin-system==1.3.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] -├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] -├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-PHAL==0.2.9 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] -├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] -├── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] -│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] -├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] -└── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] +├── ovos-audio==1.0.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] +├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] +├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] +├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] +└── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] From af32276b13f298161e35b5b2270fb70873ef1c0a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Jun 2025 01:02:30 +0000 Subject: [PATCH 05/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index d8b1de2d..d9e35931 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -10,7 +10,6 @@ ovos-plugin-manager==1.0.3 │ └── ovos-workshop==7.0.2 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] -│ ├── ovos-skill-word-of-the-day==0.1.4a1 [requires: ovos-workshop] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] @@ -20,7 +19,6 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -│ ├── ovos-core==2.0.0a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-workshop>=2.2.0,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] @@ -31,10 +29,12 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-core==2.0.1a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] │ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +│ ├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] @@ -55,7 +55,6 @@ ovos-plugin-manager==1.0.3 │ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-core==2.0.0a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-dinkum-listener==0.4.1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] @@ -70,6 +69,7 @@ ovos-plugin-manager==1.0.3 ├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-core==2.0.1a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] ├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] @@ -94,7 +94,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] ├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-ww-plugin-vosk==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] @@ -111,5 +110,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] ├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-ww-plugin-vosk==0.1.7 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] └── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] From ce8163a9cc32612340bfba3d5d07c930feb2ac54 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 14 Jun 2025 01:00:01 +0000 Subject: [PATCH 06/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index d9e35931..8136ffc6 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -34,12 +34,12 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-date-time==1.1.3 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] @@ -55,7 +55,6 @@ ovos-plugin-manager==1.0.3 │ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-dinkum-listener==0.4.1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] @@ -64,8 +63,9 @@ ovos-plugin-manager==1.0.3 ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] │ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ ├── ovos-skill-date-time==1.1.3 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +├── ovos-dinkum-listener==0.4.2a1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] From 534a8ff44fdc7ca686e673d4e10a863eea78f471 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Jun 2025 01:07:34 +0000 Subject: [PATCH 07/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 8136ffc6..3a6fbb08 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -15,12 +15,12 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] +│ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-workshop>=2.2.0,<8.0.0] │ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] │ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -│ ├── ovos-skill-weather==1.0.4 [requires: ovos-workshop>=2.2.0,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] @@ -62,7 +62,7 @@ ovos-plugin-manager==1.0.3 ├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] │ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ ├── ovos-skill-weather==1.0.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +│ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-date-time==1.1.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] ├── ovos-dinkum-listener==0.4.2a1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] From ac66600c3a2f2d40deead90366ebebe05d6f844d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 01:04:30 +0000 Subject: [PATCH 08/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 3a6fbb08..cb654529 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -29,7 +29,6 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-core==2.0.1a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] │ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] @@ -50,6 +49,7 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] │ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-core==2.0.2a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] @@ -69,7 +69,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-core==2.0.1a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] ├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] @@ -112,4 +111,5 @@ ovos-plugin-manager==1.0.3 ├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ww-plugin-vosk==0.1.7 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] +├── ovos-core==2.0.2a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] └── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] From 867a54326e0ec14f8faf0f33ee2dbc2a4036b113 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 17 Jun 2025 01:03:02 +0000 Subject: [PATCH 09/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index cb654529..863f3916 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -2,12 +2,11 @@ ovos-plugin-manager==1.0.3 ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] -├── ovos-PHAL==0.2.9 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] ├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] │ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] │ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] -│ └── ovos-workshop==7.0.2 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] +│ └── ovos-workshop==7.0.6 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] @@ -16,7 +15,6 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-workshop>=2.2.0,<8.0.0] -│ ├── ovos-skill-randomness==0.1.2a1 [requires: ovos-workshop] │ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] @@ -45,17 +43,20 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] +│ ├── ovos-core==2.0.4a3 [requires: ovos-workshop>=7.0.5,<8.0.0] │ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] │ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-core==2.0.2a1 [requires: ovos-workshop>=7.0.2,<8.0.0] │ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-randomness==0.1.2 [requires: ovos-workshop] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] +├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] +├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] @@ -83,7 +84,8 @@ ovos-plugin-manager==1.0.3 ├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] ├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] -├── ovos-gui==1.3.3 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] +├── ovos-audio==1.0.2a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] ├── ovos-PHAL-plugin-system==1.3.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] @@ -102,8 +104,7 @@ ovos-plugin-manager==1.0.3 │ └── ovos-wikipedia-solver==0.1.1 [requires: ovos-solver-bm25-plugin>=0.0.1,<1.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] ├── ovos-skill-wordnet==0.2.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-audio==1.0.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] +├── ovos-core==2.0.4a3 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] @@ -111,5 +112,4 @@ ovos-plugin-manager==1.0.3 ├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ww-plugin-vosk==0.1.7 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-core==2.0.2a1 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] └── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] From 00f027abef981e2f962df3961787bc0683bf906f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 18 Jun 2025 01:01:46 +0000 Subject: [PATCH 10/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 863f3916..1e0994c9 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -19,6 +19,7 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] +│ ├── ovos-core==2.0.4a4 [requires: ovos-workshop>=7.0.6,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] @@ -43,7 +44,6 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] -│ ├── ovos-core==2.0.4a3 [requires: ovos-workshop>=7.0.5,<8.0.0] │ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] @@ -55,6 +55,7 @@ ovos-plugin-manager==1.0.3 ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] +├── ovos-core==2.0.4a4 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] @@ -104,7 +105,6 @@ ovos-plugin-manager==1.0.3 │ └── ovos-wikipedia-solver==0.1.1 [requires: ovos-solver-bm25-plugin>=0.0.1,<1.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] ├── ovos-skill-wordnet==0.2.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-core==2.0.4a3 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] ├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] From 3689a8c88f4b37633ea547eeca75a775e11c12df Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Wed, 18 Jun 2025 02:13:22 +0100 Subject: [PATCH 11/31] Update requirements.txt --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 034e33d0..7eb63cab 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,6 +1,6 @@ ovos-utils>=0.2.1,<1.0.0 ovos_bus_client>=0.0.8,<2.0.0 -ovos-config>=0.0.12,<2.0.0 +ovos-config>=0.0.12,<3.0.0 combo_lock~=0.2 requests~=2.26 quebra_frases From 45f49d65fff8220113eda4f6d50e7e61d3eaf81d Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Wed, 18 Jun 2025 02:14:39 +0100 Subject: [PATCH 12/31] Update release_workflow.yml --- .github/workflows/release_workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_workflow.yml b/.github/workflows/release_workflow.yml index 66781d1e..a37fbb31 100644 --- a/.github/workflows/release_workflow.yml +++ b/.github/workflows/release_workflow.yml @@ -1,13 +1,13 @@ name: Release Alpha and Propose Stable on: + workflow_dispatch: pull_request: types: [closed] branches: [dev] jobs: publish_alpha: - if: github.event.pull_request.merged == true uses: TigreGotico/gh-automations/.github/workflows/publish-alpha.yml@master secrets: inherit with: From ba675acfb5f0f65e695fadea106bc84a102584a3 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Wed, 18 Jun 2025 01:14:57 +0000 Subject: [PATCH 13/31] Increment Version to 1.0.4a1 --- ovos_plugin_manager/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ovos_plugin_manager/version.py b/ovos_plugin_manager/version.py index b320fadc..b625715c 100644 --- a/ovos_plugin_manager/version.py +++ b/ovos_plugin_manager/version.py @@ -1,6 +1,6 @@ # START_VERSION_BLOCK VERSION_MAJOR = 1 VERSION_MINOR = 0 -VERSION_BUILD = 3 -VERSION_ALPHA = 0 +VERSION_BUILD = 4 +VERSION_ALPHA = 1 # END_VERSION_BLOCK From 988b81dfe29d04a489a006ba20a7cef25aa240ed Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Wed, 18 Jun 2025 01:15:22 +0000 Subject: [PATCH 14/31] Update Changelog --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c24f4c5..25e5b2db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,12 @@ # Changelog -## [1.0.3a1](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.3a1) (2025-06-10) +## [1.0.4a1](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.4a1) (2025-06-18) -[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.2...1.0.3a1) +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.3...1.0.4a1) -**Merged pull requests:** +**Closed issues:** -- refactor: simplify pipeline factory, missed in previous PR [\#327](https://github.com/OpenVoiceOS/ovos-plugin-manager/pull/327) ([JarbasAl](https://github.com/JarbasAl)) +- An error occurred \(InvalidSsmlException\) when calling the SynthesizeSpeech operation: Invalid SSML request [\#221](https://github.com/OpenVoiceOS/ovos-plugin-manager/issues/221) From f0cb250455600838fc162c33f010d35e0973566e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 19 Jun 2025 01:02:43 +0000 Subject: [PATCH 15/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 1e0994c9..f088a883 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,10 +1,12 @@ -ovos-plugin-manager==1.0.3 +ovos-plugin-manager==1.0.4a1 ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] +├── ovos-PHAL-plugin-system==1.3.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-dinkum-listener==0.4.2a3 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-translate-server-plugin] -│ └── ovos-skill-wordnet==0.2.5 [requires: ovos-translate-server-plugin] +│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] +│ └── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] │ └── ovos-workshop==7.0.6 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] @@ -21,6 +23,7 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-core==2.0.4a4 [requires: ovos-workshop>=7.0.6,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] │ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] @@ -35,15 +38,14 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-date-time==1.1.4 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-workshop>=3.3.0,<8.0.0] │ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-ddg==0.3.5 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-wordnet==0.2.5 [requires: ovos-workshop>=3.3.0,<8.0.0] │ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] @@ -56,6 +58,7 @@ ovos-plugin-manager==1.0.3 ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] ├── ovos-core==2.0.4a4 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] +├── ovos-skill-ddg==0.3.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] @@ -67,7 +70,6 @@ ovos-plugin-manager==1.0.3 │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-date-time==1.1.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -├── ovos-dinkum-listener==0.4.2a1 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] @@ -80,6 +82,7 @@ ovos-plugin-manager==1.0.3 │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] ├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-ocp-news-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] @@ -87,7 +90,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] ├── ovos-audio==1.0.2a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] -├── ovos-PHAL-plugin-system==1.3.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] @@ -95,7 +97,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] -├── ovos-skill-ddg==0.3.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] @@ -104,7 +105,6 @@ ovos-plugin-manager==1.0.3 ├── ovos-solver-bm25-plugin==0.0.1 [requires: ovos-plugin-manager>=0.8.5] │ └── ovos-wikipedia-solver==0.1.1 [requires: ovos-solver-bm25-plugin>=0.0.1,<1.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-skill-wordnet==0.2.5 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] From 77adce26fe41f08a35dce6e4b622e4f2c3876ce3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Jun 2025 01:01:35 +0000 Subject: [PATCH 16/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index f088a883..0c1ace57 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -55,6 +55,8 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-openai-plugin==2.0.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] ├── ovos-core==2.0.4a4 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] @@ -78,8 +80,6 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] ├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] -├── ovos-openai-plugin==2.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] ├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-ocp-news-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] From de82ee416bbb140c867c22461340143cbd7521c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 22 Jun 2025 01:07:16 +0000 Subject: [PATCH 17/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/downstream_report.txt b/downstream_report.txt index 0c1ace57..63a99f98 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -8,7 +8,7 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] │ └── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] -│ └── ovos-workshop==7.0.6 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] +│ └── ovos-workshop==7.0.7a1 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] From eef42d25f5732de08700232a636bf66f24c0ebb2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 8 Jul 2025 01:03:29 +0000 Subject: [PATCH 18/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 63a99f98..aac61d3f 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -2,6 +2,8 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] +├── ovos-audio==1.0.2a2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] ├── ovos-PHAL-plugin-system==1.3.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-dinkum-listener==0.4.2a3 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] ├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] @@ -88,8 +90,6 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] ├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] -├── ovos-audio==1.0.2a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] ├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] @@ -109,6 +109,7 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] +├── ovos-tts-plugin-piper==0.2.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-ww-plugin-vosk==0.1.7 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] From b1d2183f397f151a6d68aed4045960b48d6c7c9e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 9 Jul 2025 01:04:29 +0000 Subject: [PATCH 19/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index aac61d3f..006e3693 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,6 +1,7 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] +├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] ├── ovos-audio==1.0.2a2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] @@ -10,8 +11,9 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] │ └── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] -│ └── ovos-workshop==7.0.7a1 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] +│ └── ovos-workshop==7.0.9a1 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] +│ ├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] @@ -47,7 +49,6 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] │ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] @@ -98,7 +99,6 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] ├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-ocp-pipeline-plugin==1.1.16 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] ├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] From 7dfcec0382212d234519e8e3c355c3e1a6e820ef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 12 Jul 2025 01:06:40 +0000 Subject: [PATCH 20/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 176 +++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 006e3693..9dcd89e5 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,116 +1,116 @@ ovos-plugin-manager==1.0.4a1 -├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] -├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] -├── ovos-audio==1.0.2a2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] -├── ovos-PHAL-plugin-system==1.3.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-dinkum-listener==0.4.2a3 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] -├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] -│ └── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] │ └── ovos-workshop==7.0.9a1 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] -│ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] -│ ├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] -│ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] -│ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] -│ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] -│ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] +│ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-workshop>=2.2.0,<8.0.0] -│ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] +│ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] +│ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-workshop>=3.3.0,<8.0.0] +│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-m2v-pipeline==0.0.6 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] +│ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -│ ├── ovos-core==2.0.4a4 [requires: ovos-workshop>=7.0.6,<8.0.0] -│ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-workshop>=3.4.0,<8.0.0] +│ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] -│ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] -│ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] -│ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] -│ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] -│ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] -│ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] -│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] │ ├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-workshop>=3.3.0,<8.0.0] -│ ├── ovos-skill-parrot==0.1.25 [requires: ovos-workshop>=7.0.0,<8.0.0] -│ ├── ovos-skill-personal==0.1.19 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] -│ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] +│ ├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] │ ├── ovos-plugin-common-play==1.2.1 [requires: ovos-workshop>=2.4.2,<8.0.0] -│ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] -│ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -│ ├── ovos-skill-dictation==0.2.19 [requires: ovos-workshop>=7.0.0,<8.0.0] +│ ├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-randomness==0.1.2 [requires: ovos-workshop] -│ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] -│ └── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +│ ├── ovos-skill-speedtest==0.3.6 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-camera==1.0.5a3 [requires: ovos-workshop>=0.0.12] +│ ├── ovos-skill-news==0.4.5 [requires: ovos-workshop>=0.0.16,<8.0.0] +│ ├── ovos-core==2.0.4a4 [requires: ovos-workshop>=7.0.6,<8.0.0] +│ ├── ovos-adapt-parser==1.0.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] +│ ├── ovos-skill-local-media==0.2.12 [requires: ovos-workshop>=2.4.0,<8.0.0] +│ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] +│ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] +│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-workshop>=3.4.0,<8.0.0] +│ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] +│ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] +│ ├── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] +│ └── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] +├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-openai-plugin==2.0.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] -├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] -├── ovos-core==2.0.4a4 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] -├── ovos-skill-ddg==0.3.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] -├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] -├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] -├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] -├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] -│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-date-time==1.1.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -├── ovos-PHAL-plugin-alsa==0.1.4 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] -├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] -│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] -├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] -├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-ocp-news-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-gui-plugin-shell-companion==1.0.5 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] -├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] -├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] -├── ovos-microphone-plugin-alsa==0.1.2 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -│ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] -├── ovos-microphone-plugin-sounddevice==0.0.1 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] -│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] -├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-PHAL-plugin-network-manager==1.0.1a2 [requires: ovos-plugin-manager>=0.0.1] -├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-dinkum-listener==0.4.2a3 [requires: ovos-plugin-manager>=1.0.2,<2.0.0] +├── ovos-PHAL-plugin-system==1.3.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] +├── ovos-m2v-pipeline==0.0.6 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] ├── ovos-solver-bm25-plugin==0.0.1 [requires: ovos-plugin-manager>=0.8.5] │ └── ovos-wikipedia-solver==0.1.1 [requires: ovos-solver-bm25-plugin>=0.0.1,<1.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-dialog-normalizer-plugin==0.0.1 [requires: ovos-plugin-manager] -├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-stt-plugin-server==0.1.2 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-wikipedia-solver==0.1.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-skill-wikipedia==0.8.13 [requires: ovos-wikipedia-solver>=0.0.1,<1.0.0] -├── ovos-tts-plugin-piper==0.2.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] -├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-ocp-youtube-plugin==0.0.5 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-vad-plugin-noise==0.1.2 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] ├── ovos-ww-plugin-vosk==0.1.7 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-plugin-common-play==1.2.1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-solver-failure-plugin==0.0.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-persona==0.6.23 [requires: ovos-solver-failure-plugin] +├── ovos-PHAL==0.2.10 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] +├── ovos-phal-plugin-ipgeo==0.1.6 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-ww-plugin-precise-lite==0.1.6 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-core==2.0.4a4 [requires: ovos-plugin-manager>=1.0.3,<2.0.0] +├── ovos-adapt-parser==1.0.8 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] +├── ovos-phal-plugin-connectivity-events==0.1.2 [requires: ovos-plugin-manager>=0.0.21,<2.0.0] +├── ovos-ocp-pipeline-plugin==1.1.17a1 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-tts-plugin-piper==0.2.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-persona==0.6.23 [requires: ovos-plugin-manager>=0.8.3,<2.0.0] +├── ovos-PHAL-plugin-mk1==0.1.3 [requires: ovos-plugin-manager>=0.0.24] +├── ovos-audio==1.0.2a2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-laugh==0.2.3 [requires: ovos-audio] +├── ovos-media-plugin-chromecast==0.1.2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-wolfram-alpha-solver==0.0.3 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +│ └── ovos-skill-wolfie==0.5.8 [requires: ovos-wolfram-alpha-solver>=0.0.2,<1.0.0] +├── ovos-skill-laugh==0.2.3 [requires: ovos-plugin-manager] +├── ovos-stt-plugin-chromium==0.1.2 [requires: ovos-plugin-manager>=0.0.1a7] ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] -└── ovos-audio-plugin-simple==0.1.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +│ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] +│ └── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] +├── ovos-microphone-plugin-sounddevice==0.0.1 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] +├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] +├── ovos-skill-ddg==0.3.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] +├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] +├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] +├── ovos-PHAL-plugin-hotkeys==0.1.1 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-ocp-m3u-plugin==0.0.2a2 [requires: ovos-plugin-manager] +│ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] +├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] +├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] +└── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] From 801931bc9a1b59cb119725f32e8716807a65c6dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 13 Jul 2025 01:10:44 +0000 Subject: [PATCH 21/31] Update downstream dependencies for ovos-plugin-manager --- downstream_report.txt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/downstream_report.txt b/downstream_report.txt index 9dcd89e5..b8b2c798 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -2,13 +2,12 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-solver-yes-no-plugin==0.2.9a3 [requires: ovos-plugin-manager] │ └── ovos-workshop==7.0.9a1 [requires: ovos-solver-yes-no-plugin>=0.0.1,<1.0.0] │ ├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] +│ ├── ovos-skill-date-time==1.1.5a1 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-workshop>=2.2.0,<8.0.0] -│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] │ ├── ovos-padatious==1.4.2 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] │ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-workshop>=3.3.0,<8.0.0] -│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] @@ -21,6 +20,7 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] │ ├── ovos-skill-naptime==0.3.15 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] +│ ├── ovos-skill-alerts==0.1.28a1 [requires: ovos-workshop>=7.0.0,<8.0.0] │ ├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] │ ├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] │ ├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] @@ -41,11 +41,11 @@ ovos-plugin-manager==1.0.4a1 │ ├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] │ ├── ovos-skill-volume==0.1.16 [requires: ovos-workshop>=0.0.15,<8.0.0] │ ├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] -│ ├── ovos-skill-ddg==0.3.6a1 [requires: ovos-workshop>=3.4.0,<8.0.0] │ ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-workshop>=0.1.7,<8.0.0] │ ├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] │ ├── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] -│ └── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +│ ├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] +│ └── ovos-skill-ddg==0.3.6a2 [requires: ovos-workshop>=3.4.0,<8.0.0] ├── ovos-ocp-rss-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-rss-plugin>=0.0.2,<1.0.0] ├── ovos-PHAL-plugin-balena-wifi==1.2.2 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] @@ -55,9 +55,9 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-openai-plugin==2.0.4a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] │ └── ovos-persona==0.6.23 [requires: ovos-openai-plugin>=2.0.0,<3.0.0] ├── ovos-utterance-normalizer==0.2.2 [requires: ovos-plugin-manager>=0.0.25,<2.0.0] +│ ├── ovos-skill-date-time==1.1.5a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ ├── ovos-skill-weather==1.0.5a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ ├── ovos-skill-date-time==1.1.4 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] -│ ├── ovos-skill-alerts==0.1.27 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] +│ ├── ovos-skill-alerts==0.1.28a1 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] │ └── ovos-skill-volume==0.1.16 [requires: ovos-utterance-normalizer>=0.0.1,<1.0.0] ├── ovos-tts-plugin-server==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-padatious==1.4.2 [requires: ovos-plugin-manager>=0.5.0,<2.0.0] @@ -101,10 +101,9 @@ ovos-plugin-manager==1.0.4a1 ├── ovos-PHAL-plugin-wallpaper-manager==0.2.5 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-translate-server-plugin==0.0.4 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] │ ├── ovos-skill-wordnet==0.2.6a1 [requires: ovos-translate-server-plugin] -│ └── ovos-skill-ddg==0.3.6a1 [requires: ovos-translate-server-plugin] +│ └── ovos-skill-ddg==0.3.6a2 [requires: ovos-translate-server-plugin] ├── ovos-microphone-plugin-sounddevice==0.0.1 [requires: ovos-plugin-manager>=0.0.23,<2.0.0] ├── ovos-gui==1.3.4a1 [requires: ovos-plugin-manager>=0.5.5,<2.0.0] -├── ovos-skill-ddg==0.3.6a1 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] ├── ovos-common-query-pipeline-plugin==1.1.8 [requires: ovos-plugin-manager>=1.0.0,<2.0.0] ├── ovos-audio-plugin-mpv==0.2.1 [requires: ovos-plugin-manager>=0.0.26a29] ├── ovos-vad-plugin-silero==0.0.5 [requires: ovos-plugin-manager>=0.0.11,<2.0.0] @@ -113,4 +112,5 @@ ovos-plugin-manager==1.0.4a1 │ └── ovos-ocp-news-plugin==0.1.1 [requires: ovos-ocp-m3u-plugin>=0.0.1,<1.0.0] ├── ovos-utterance-corrections-plugin==0.1.1 [requires: ovos-plugin-manager>=0.0.1,<2.0.0] ├── ovos-media-plugin-spotify==0.2.6 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] -└── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] +├── ovos-PHAL-plugin-wifi-setup==1.1.1a1 [requires: ovos-plugin-manager>=0.0.1] +└── ovos-skill-ddg==0.3.6a2 [requires: ovos-plugin-manager>=0.0.26,<2.0.0] From b64526037321e4a071d6c547a9d22ca25216c725 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 17:00:34 +0100 Subject: [PATCH 22/31] Update langcodes requirement from ~=3.3.0 to ~=3.5.0 in /requirements (#332) Updates the requirements on [langcodes](https://github.com/georgkrause/langcodes) to permit the latest version. - [Release notes](https://github.com/georgkrause/langcodes/releases) - [Commits](https://github.com/georgkrause/langcodes/compare/v3.3.0...v3.5.0) --- updated-dependencies: - dependency-name: langcodes dependency-version: 3.5.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 7eb63cab..b7b5544b 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -4,7 +4,7 @@ ovos-config>=0.0.12,<3.0.0 combo_lock~=0.2 requests~=2.26 quebra_frases -langcodes~=3.3.0 +langcodes~=3.5.0 # see https://github.com/pypa/setuptools/issues/1471 importlib_metadata From 7fd7899e1864932c0387e921d0d235ee8b9cab1d Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:00:47 +0000 Subject: [PATCH 23/31] Increment Version to 1.0.4a2 --- ovos_plugin_manager/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ovos_plugin_manager/version.py b/ovos_plugin_manager/version.py index b625715c..87b8ecf3 100644 --- a/ovos_plugin_manager/version.py +++ b/ovos_plugin_manager/version.py @@ -2,5 +2,5 @@ VERSION_MAJOR = 1 VERSION_MINOR = 0 VERSION_BUILD = 4 -VERSION_ALPHA = 1 +VERSION_ALPHA = 2 # END_VERSION_BLOCK From 01dfcd740b798876833e33024b017ec10d32b1b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 17:01:03 +0100 Subject: [PATCH 24/31] Update combo-lock requirement from ~=0.2 to ~=0.3 in /requirements (#331) Updates the requirements on [combo-lock](https://github.com/forslund/combo-lock) to permit the latest version. - [Release notes](https://github.com/forslund/combo-lock/releases) - [Commits](https://github.com/forslund/combo-lock/compare/v0.2.0...v0.3.0) --- updated-dependencies: - dependency-name: combo-lock dependency-version: 0.3.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index b7b5544b..1b7fc83b 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,7 +1,7 @@ ovos-utils>=0.2.1,<1.0.0 ovos_bus_client>=0.0.8,<2.0.0 ovos-config>=0.0.12,<3.0.0 -combo_lock~=0.2 +combo_lock~=0.3 requests~=2.26 quebra_frases langcodes~=3.5.0 From fefebce378675b8fe14bcb2b8c5073caa0507003 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:01:16 +0000 Subject: [PATCH 25/31] Update Changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25e5b2db..f4fe3963 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [1.0.4a2](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.4a2) (2025-07-22) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a1...1.0.4a2) + +**Merged pull requests:** + +- Update langcodes requirement from ~=3.3.0 to ~=3.5.0 in /requirements [\#332](https://github.com/OpenVoiceOS/ovos-plugin-manager/pull/332) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update combo-lock requirement from ~=0.2 to ~=0.3 in /requirements [\#331](https://github.com/OpenVoiceOS/ovos-plugin-manager/pull/331) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [1.0.4a1](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.4a1) (2025-06-18) [Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.3...1.0.4a1) From 15beb84daca0742850b74005000f69f1ae6cd92e Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Tue, 22 Jul 2025 17:02:08 +0100 Subject: [PATCH 26/31] =?UTF-8?q?feat!:=20add=20collections=20and=20batch?= =?UTF-8?q?=20operations=20support=20to=20embeddings=20plu=E2=80=A6=20(#33?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat!: add collections and batch operations support to embeddings plugins * Merge pull request #334 from OpenVoiceOS/coderabbitai/docstrings/6032afd 📝 Add docstrings to `refactor/embedings` * Update embeddings.py --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- ovos_plugin_manager/embeddings.py | 100 ++- ovos_plugin_manager/templates/embeddings.py | 766 ++++++++++---------- ovos_plugin_manager/utils/__init__.py | 216 ++++-- ovos_plugin_manager/utils/ui.py | 90 ++- 4 files changed, 660 insertions(+), 512 deletions(-) diff --git a/ovos_plugin_manager/embeddings.py b/ovos_plugin_manager/embeddings.py index 123c3b11..a4f04ba9 100644 --- a/ovos_plugin_manager/embeddings.py +++ b/ovos_plugin_manager/embeddings.py @@ -1,21 +1,27 @@ -from ovos_plugin_manager.templates.embeddings import EmbeddingsDB, TextEmbeddingsStore, FaceEmbeddingsStore, VoiceEmbeddingsStore +from ovos_plugin_manager.templates.embeddings import EmbeddingsDB, ImageEmbedder, TextEmbedder, VoiceEmbedder, FaceEmbedder from ovos_plugin_manager.utils import PluginTypes -def find_embeddings_plugins() -> dict: +def find_embeddings_db_plugins() -> dict: """ - Find all installed plugins - @return: dict plugin names to entrypoints + Discover all installed general embeddings database plugins. + + Returns: + dict: A mapping of plugin names to their entrypoints for general embeddings database plugins. """ from ovos_plugin_manager.utils import find_plugins return find_plugins(PluginTypes.EMBEDDINGS) -def load_embeddings_plugin(module_name: str) -> type(EmbeddingsDB): +def load_embeddings_db_plugin(module_name: str) -> type(EmbeddingsDB): """ - Get an uninstantiated class for the requested module_name - @param module_name: Plugin entrypoint name to load - @return: Uninstantiated class + Load and return the uninstantiated class of a general embeddings database plugin by its module name. + + Parameters: + module_name (str): The entrypoint name of the embeddings database plugin to load. + + Returns: + type(EmbeddingsDB): The plugin class corresponding to the specified module name. """ from ovos_plugin_manager.utils import load_plugin return load_plugin(module_name, PluginTypes.EMBEDDINGS) @@ -23,37 +29,73 @@ def load_embeddings_plugin(module_name: str) -> type(EmbeddingsDB): def find_voice_embeddings_plugins() -> dict: """ - Find all installed plugins - @return: dict plugin names to entrypoints + Discover all installed voice embeddings plugins. + + Returns: + dict: A mapping of plugin names to their entrypoints for available voice embeddings plugins. """ from ovos_plugin_manager.utils import find_plugins return find_plugins(PluginTypes.VOICE_EMBEDDINGS) -def load_voice_embeddings_plugin(module_name: str) -> type(VoiceEmbeddingsStore): +def load_voice_embeddings_plugin(module_name: str) -> type(VoiceEmbedder): """ - Get an uninstantiated class for the requested module_name - @param module_name: Plugin entrypoint name to load - @return: Uninstantiated class + Load and return the uninstantiated class of a voice embeddings plugin by its module name. + + Parameters: + module_name (str): The entrypoint name of the voice embeddings plugin to load. + + Returns: + type(VoiceEmbedder): The uninstantiated class of the specified voice embeddings plugin. """ from ovos_plugin_manager.utils import load_plugin return load_plugin(module_name, PluginTypes.VOICE_EMBEDDINGS) +def find_image_embeddings_plugins() -> dict: + """ + Discover all installed image embeddings plugins. + + Returns: + dict: A mapping of plugin names to their entrypoints for image embeddings plugins. + """ + from ovos_plugin_manager.utils import find_plugins + return find_plugins(PluginTypes.IMAGE_EMBEDDINGS) + + +def load_image_embeddings_plugin(module_name: str) -> type(ImageEmbedder): + """ + Load and return the uninstantiated class of an image embeddings plugin specified by its module name. + + Parameters: + module_name (str): The entrypoint name of the image embeddings plugin to load. + + Returns: + type(ImageEmbedder): The uninstantiated class of the requested image embeddings plugin. + """ + from ovos_plugin_manager.utils import load_plugin + return load_plugin(module_name, PluginTypes.IMAGE_EMBEDDINGS) + def find_face_embeddings_plugins() -> dict: """ - Find all installed plugins - @return: dict plugin names to entrypoints + Find all installed face embeddings plugins. + + Returns: + dict: A mapping of plugin names to their entrypoints for face embeddings plugins. """ from ovos_plugin_manager.utils import find_plugins return find_plugins(PluginTypes.FACE_EMBEDDINGS) -def load_face_embeddings_plugin(module_name: str) -> type(FaceEmbeddingsStore): +def load_face_embeddings_plugin(module_name: str) -> type(FaceEmbedder): """ - Get an uninstantiated class for the requested module_name - @param module_name: Plugin entrypoint name to load - @return: Uninstantiated class + Load and return the uninstantiated class of a face embeddings plugin by its module name. + + Parameters: + module_name (str): The entrypoint name of the face embeddings plugin to load. + + Returns: + type(FaceEmbedder): The uninstantiated class of the specified face embeddings plugin. """ from ovos_plugin_manager.utils import load_plugin return load_plugin(module_name, PluginTypes.FACE_EMBEDDINGS) @@ -61,18 +103,24 @@ def load_face_embeddings_plugin(module_name: str) -> type(FaceEmbeddingsStore): def find_text_embeddings_plugins() -> dict: """ - Find all installed plugins - @return: dict plugin names to entrypoints + Discover all installed text embeddings plugins. + + Returns: + dict: A mapping of plugin names to their entrypoints for text embeddings plugins. """ from ovos_plugin_manager.utils import find_plugins return find_plugins(PluginTypes.TEXT_EMBEDDINGS) -def load_text_embeddings_plugin(module_name: str) -> type(TextEmbeddingsStore): +def load_text_embeddings_plugin(module_name: str) -> type(TextEmbedder): """ - Get an uninstantiated class for the requested module_name - @param module_name: Plugin entrypoint name to load - @return: Uninstantiated class + Load and return the uninstantiated class of a text embeddings plugin specified by its module name. + + Parameters: + module_name (str): The entrypoint name of the text embeddings plugin to load. + + Returns: + type(TextEmbedder): The uninstantiated class of the specified text embeddings plugin. """ from ovos_plugin_manager.utils import load_plugin return load_plugin(module_name, PluginTypes.TEXT_EMBEDDINGS) diff --git a/ovos_plugin_manager/templates/embeddings.py b/ovos_plugin_manager/templates/embeddings.py index 943772b9..227534ae 100644 --- a/ovos_plugin_manager/templates/embeddings.py +++ b/ovos_plugin_manager/templates/embeddings.py @@ -1,69 +1,210 @@ import abc -from typing import List, Optional, Tuple, Dict, Union, Iterable +from typing import List, Optional, Tuple, Dict, Union, Iterable, Any # Typing helpers for readability try: import numpy as np - EmbeddingsArray = np.ndarray + + EmbeddingsArray = Array = np.ndarray except ImportError: - EmbeddingsArray = Iterable[Union[int, float]] + EmbeddingsArray = Array = Iterable[Union[int, float]] + +# EmbeddingsTuple is specifically for query results (key, distance, optional metadata) EmbeddingsTuple = Union[Tuple[str, float], Tuple[str, float, Dict]] +# RetrievedEmbeddingResult is for getting embeddings (key, embedding, optional metadata) +RetrievedEmbeddingResult = Union[Tuple[str, Optional[EmbeddingsArray]], Tuple[str, Optional[EmbeddingsArray], Dict[str, Any]]] + class EmbeddingsDB: - """Base class for an embeddings database that supports storage, retrieval, and querying of embeddings.""" + """ + Base class for an embeddings database that supports storage, retrieval, and querying of embeddings. + This extended version includes abstractions for collections (vector stores) and batch handling. + Batch methods provide a default implementation that processes inputs one at a time, + allowing downstream plugins to override for optimized batch processing. + """ + + def __init__(self, config: Dict[str, Any] = None): + """ + Initialize the embedder with an optional configuration dictionary. + """ + self.config = config or {} @abc.abstractmethod - def add_embeddings(self, key: str, embedding: EmbeddingsArray, - metadata: Optional[Dict[str, any]] = None) -> EmbeddingsArray: - """Store 'embedding' under 'key' with associated metadata. - - Args: - key (str): The unique key for the embedding. - embedding (np.ndarray): The embedding vector to store. - metadata (Optional[Dict[str, any]]): Optional metadata associated with the embedding. - + def create_collection(self, name: str, metadata: Optional[Dict[str, Any]] = None) -> Any: + """ + Create a new collection (vector store) with the specified name and optional metadata. + + Parameters: + name (str): The unique identifier for the collection. + metadata (Optional[Dict[str, Any]]): Additional metadata describing the collection. + Returns: - np.ndarray: The stored embedding. + A handle or object representing the newly created collection. """ raise NotImplementedError @abc.abstractmethod - def get_embeddings(self, key: str) -> EmbeddingsArray: - """Retrieve embeddings stored under 'key'. + def get_collection(self, name: str) -> Any: + """ + Retrieve a collection by its name. + + Parameters: + name (str): Name of the collection to retrieve. + + Returns: + A handle or object representing the collection. + + Raises: + ValueError: If the specified collection does not exist. + """ + raise NotImplementedError - Args: - key (str): The unique key for the embedding. + @abc.abstractmethod + def delete_collection(self, name: str) -> None: + """ + Delete a collection identified by its name. + + Parameters: + name (str): Name of the collection to be deleted. + """ + raise NotImplementedError + @abc.abstractmethod + def list_collections(self) -> List[Any]: + """ + Return a list of all available collections in the embeddings database. + Returns: - np.ndarray: The retrieved embedding. + List[Any]: Handles or objects representing each collection. """ raise NotImplementedError @abc.abstractmethod - def delete_embeddings(self, key: str) -> EmbeddingsArray: - """Delete embeddings stored under 'key'. + def add_embeddings(self, key: str, embedding: EmbeddingsArray, + metadata: Optional[Dict[str, Any]] = None, + collection_name: Optional[str] = None) -> EmbeddingsArray: + """ + Stores an embedding vector under a unique key in the specified collection, with optional metadata. + + Parameters: + key (str): Unique identifier for the embedding. + embedding (EmbeddingsArray): The embedding vector to store. + metadata (Optional[Dict[str, Any]]): Optional metadata to associate with the embedding. + collection_name (Optional[str]): Name of the collection to store the embedding in; uses a default collection if not specified. + + Returns: + EmbeddingsArray: The stored embedding vector. + """ + raise NotImplementedError - Args: - key (str): The unique key for the embedding. + def add_embeddings_batch(self, keys: List[str], embeddings: List[EmbeddingsArray], + metadata: Optional[List[Dict[str, Any]]] = None, + collection_name: Optional[str] = None) -> None: + """ + Add or update multiple embeddings in a collection in a single batch operation. + + This default implementation processes each embedding individually; subclasses may override for more efficient bulk handling. + """ + if metadata is None: + metadata = [None] * len(keys) + for i, key in enumerate(keys): + self.add_embeddings(key, embeddings[i], metadata[i], collection_name=collection_name) + @abc.abstractmethod + def get_embeddings(self, key: str, collection_name: Optional[str] = None, + return_metadata: bool = False) -> Union[Optional[EmbeddingsArray], + Tuple[Optional[EmbeddingsArray], Optional[Dict[str, Any]]]]: + """ + Retrieve an embedding by key from a specified collection, optionally including associated metadata. + + Parameters: + key (str): The unique identifier for the embedding. + collection_name (Optional[str]): The collection to search within. If not provided, uses the default collection. + return_metadata (bool): If True, returns a tuple of (embedding, metadata); otherwise, returns only the embedding. + Returns: - np.ndarray: The deleted embedding. + If `return_metadata` is False, returns the embedding array or None if not found. + If `return_metadata` is True, returns a tuple of (embedding array, metadata dictionary), or (None, None) if not found. """ raise NotImplementedError + def get_embeddings_batch(self, keys: List[str], collection_name: Optional[str] = None, + return_metadata: bool = False) -> List[RetrievedEmbeddingResult]: + """ + Retrieve multiple embeddings by key from a specified collection, optionally including metadata. + + Parameters: + keys (List[str]): List of embedding keys to retrieve. + collection_name (Optional[str]): Name of the collection to query. + return_metadata (bool): If True, includes metadata with each embedding. + + Returns: + List[RetrievedEmbeddingResult]: List of (key, embedding) or (key, embedding, metadata) tuples for found embeddings. + """ + results = [] + for key in keys: + # Call the single get_embeddings method with return_metadata + retrieved_data = self.get_embeddings(key, collection_name=collection_name, return_metadata=return_metadata) + if retrieved_data is None: + embedding, metadata = None, {} + elif return_metadata: + embedding, metadata = retrieved_data + else: + embedding = retrieved_data + if return_metadata: + results.append((key, embedding, metadata)) + else: + results.append((key, embedding)) + return results + @abc.abstractmethod - def query(self, embeddings: EmbeddingsArray, top_k: int = 5, - return_metadata: bool = False) -> List[EmbeddingsTuple]: - """Return the top_k embeddings closest to the given 'embeddings'. + def delete_embeddings(self, key: str, collection_name: Optional[str] = None) -> None: + """ + Delete the embedding associated with the specified key from the given collection. + + Parameters: + key (str): Unique identifier of the embedding to delete. + collection_name (Optional[str]): Name of the collection from which to delete the embedding. If not provided, the default collection is used. + """ + raise NotImplementedError - Args: - embeddings (np.ndarray): The embedding vector to query. - top_k (int, optional): The number of top results to return. Defaults to 5. - return_metadata (bool, optional): Whether to include metadata in the results. Defaults to False. + def delete_embeddings_batch(self, keys: List[str], collection_name: Optional[str] = None) -> None: + """ + Delete multiple embeddings from a specified collection in a batch operation. + + This default implementation deletes each embedding individually. Subclasses may override for more efficient batch deletion. + """ + for key in keys: + self.delete_embeddings(key, collection_name=collection_name) + @abc.abstractmethod + def query(self, embeddings: EmbeddingsArray, top_k: int = 5, + return_metadata: bool = False, collection_name: Optional[str] = None) -> List[EmbeddingsTuple]: + """ + Finds and returns the top_k embeddings in the specified collection that are closest to the provided embedding vector. + + Parameters: + embeddings: The embedding vector to use as the query. + top_k: Number of closest results to return. + return_metadata: If True, includes metadata for each result. + collection_name: Name of the collection to search within. + Returns: - List[EmbeddingsTuple]: List of tuples containing the key and distance, and optionally metadata. + A list of tuples, each containing the key, distance, and optionally metadata for the closest embeddings. + """ + raise NotImplementedError + + @abc.abstractmethod + def count_embeddings_in_collection(self, collection_name: Optional[str] = None) -> int: + """ + Return the number of embeddings stored in the specified collection. + + Parameters: + collection_name (Optional[str]): Name of the collection to count embeddings in. + + Returns: + int: Total number of embeddings in the collection. """ raise NotImplementedError @@ -71,70 +212,41 @@ def distance(self, embeddings_a: EmbeddingsArray, embeddings_b: EmbeddingsArray, alpha: float = 0.5, # for alpha_divergence and tversky metrics beta: float = 0.5, # for tversky metric p: float = 3, # for minkowski and weighted_minkowski metrics - euclidean_weights: Optional[EmbeddingsArray] = None, # required for weighted_euclidean and weighted_minkowski metrics - covariance_matrix: Optional[EmbeddingsArray] = None # required for mahalanobis distance with user-defined covariance + euclidean_weights: Optional[EmbeddingsArray] = None, + # required for weighted_euclidean and weighted_minkowski metrics + covariance_matrix: Optional[EmbeddingsArray] = None + # required for mahalanobis distance with user-defined covariance ) -> float: """ - Calculate the distance between two embeddings vectors using the specified distance metric. - - Args: - embeddings_a (np.ndarray): The first embedding vector. - embeddings_b (np.ndarray): The second embedding vector. - metric (str, optional): The distance metric to use. Defaults to "cosine". - Supported metrics include: - - "cosine": Cosine distance, 1 - cosine similarity. Useful for text similarity and high-dimensional data. - - "euclidean": Euclidean distance, L2 norm of the difference. Commonly used in clustering and geometric distance. - - "manhattan": Manhattan distance, L1 norm of the difference. Suitable for grid-based maps and robotics. - - "chebyshev": Chebyshev distance, maximum absolute difference. Used for chessboard distance and pathfinding. - - "minkowski": Minkowski distance, generalization of Euclidean and Manhattan distances. Parameterized by p, flexible use case. - - "weighted_minkowski": Weighted Minkowski distance, a generalization of Minkowski with weights. Parameterized by `p`, uses `euclidean_weights`. - - "hamming": Hamming distance, proportion of differing elements. Ideal for error detection and binary data. - - "jaccard": Jaccard distance, 1 - Jaccard similarity (intersection over union). Used for set similarity and binary attributes. - - "canberra": Canberra distance, weighted version of Manhattan distance. Sensitive to small changes, used in environmental data. - - "braycurtis": Bray-Curtis distance, dissimilarity between non-negative vectors. Common in ecology and species abundance studies. - - "mahalanobis": Mahalanobis distance, considering correlations (requires covariance matrix). Useful for multivariate outlier detection. - - "pearson_correlation": Pearson correlation distance, 1 - Pearson correlation coefficient. Used in time series analysis and signal processing. - - "spearman_rank": Spearman rank correlation distance, 1 - Spearman rank correlation coefficient. Measures rank correlation for non-linear monotonic relationships. - - "wasserstein": Earth Mover's Distance (Wasserstein distance). Compares probability distributions or histograms. - - "cosine_squared": Cosine squared distance, 1 - cosine similarity squared. For squared similarity in high-dimensional data. - - "kl_divergence": Kullback-Leibler divergence, asymmetric measure of difference between distributions. Applied in information theory and probability distributions. - - "bhattacharyya": Bhattacharyya distance, measure of overlap between statistical samples. Useful in classification and image processing. - - "hellinger": Hellinger distance, measure of similarity between two probability distributions. Applied in statistical inference. - - "ruzicka": Ruzicka distance, similarity measure for non-negative vectors. Used in ecology and species abundance. - - "kulczynski": Kulczynski distance, used in ecology to compare similarity. Suitable for ecological studies and species distribution. - - "sorensen": Sørensen distance, another name for Dice distance. Applied in binary data comparison and text similarity. - - "chi_squared": Chi-squared distance, used for comparing categorical data distributions. Suitable for categorical data analysis and distribution comparison. - - "jensen_shannon": Jensen-Shannon divergence, symmetrized and smoothed version of KL divergence. Used in information theory and probability distributions. - - "squared_euclidean": Squared Euclidean distance, square of the Euclidean distance. Useful for clustering algorithms and geometric distance. - - "weighted_euclidean": Weighted Euclidean distance, L2 norm with weights. Applied when features have different scales or importance. - - "log_cosh": Log-Cosh distance, log of the hyperbolic cosine of the difference. Robust to outliers. - - "tanimoto": Tanimoto coefficient, similarity measure for binary vectors. Used for binary data comparison. - - "rao": Rao's Quadratic Entropy, measure of divergence between distributions. Useful for comparing probability distributions. - - "gower": Gower distance, handles mixed types of data. Applied in cases with numerical and categorical data. - - "tversky": Tversky index, generalization of Jaccard and Dice for asymmetrical comparison. Parameterized by alpha and beta. - - "alpha_divergence": Alpha divergence, generalized divergence measure. Parameterized by alpha, used for comparing distributions. - - "kendall_tau": Kendall's Tau distance: 1 - Kendall Tau correlation coefficient. Use case: Rank correlation for ordinal data - - "renyi_divergence": Generalized divergence measure. Use case: Comparing probability distributions - - "total_variation": Measure of divergence between distributions. Use case: Probability distributions, statistical inference - - alpha (float, optional): Parameter for `tversky` and `alpha_divergence` metrics. Default is 0.5. - beta (float, optional): Parameter for `tversky` metric. Default is 0.5. - p (float, optional): Parameter for `minkowski` and `weighted_minkowski` metrics. Default is 3. - euclidean_weights (Optional[np.ndarray], optional): Weights for `weighted_euclidean` and `weighted_minkowski` metrics. Must be provided if using these metrics. Default is None. - covariance_matrix (Optional[np.ndarray], optional): Covariance matrix for `mahalanobis` distance. Must be provided if using this metric. Default is None. - + Compute the distance or divergence between two embedding vectors using a specified metric. + + Supports a wide range of distance and similarity metrics, including cosine, Euclidean, Manhattan, Chebyshev, Minkowski (and weighted variants), Hamming, Jaccard, Canberra, Bray-Curtis, Mahalanobis, Pearson and Spearman correlation, Wasserstein, KL and Jensen-Shannon divergence, Bhattacharyya, Hellinger, Ruzicka, Kulczynski, Sørensen, Chi-squared, log-cosh, Tanimoto, Rao's Quadratic Entropy, Gower, Tversky, alpha and Renyi divergence, Kendall Tau, and total variation. Handles normalization and edge cases for each metric. Raises a ValueError if the metric is unsupported or required parameters are missing. + + Parameters: + embeddings_a: The first embedding vector. + embeddings_b: The second embedding vector. + metric: The distance or similarity metric to use (default: "cosine"). + alpha: Parameter for alpha_divergence, tversky, and renyi_divergence metrics. + beta: Parameter for tversky metric. + p: Parameter for minkowski and weighted_minkowski metrics. + euclidean_weights: Weights for weighted_euclidean and weighted_minkowski metrics. + covariance_matrix: Covariance matrix for mahalanobis distance. + Returns: - float: The calculated distance between the two embedding vectors. - - Raises: - ValueError: If the specified metric is unsupported or requires parameters not provided. + The computed distance or divergence as a float. """ + # Ensure embeddings are numpy arrays for consistent calculations + embeddings_a = np.asarray(embeddings_a) + embeddings_b = np.asarray(embeddings_b) + if metric == "cosine": # Cosine distance: 1 - cosine similarity # Use case: Text similarity, high-dimensional data dot = np.dot(embeddings_a, embeddings_b) norma = np.linalg.norm(embeddings_a) normb = np.linalg.norm(embeddings_b) + if norma == 0 or normb == 0: + return 1.0 # Or raise an error, depending on desired behavior for zero vectors cos = dot / (norma * normb) return 1 - cos elif metric == "euclidean": @@ -158,6 +270,8 @@ def distance(self, embeddings_a: EmbeddingsArray, embeddings_b: EmbeddingsArray, # Use case: Flexible distance metric with weighted dimensions if euclidean_weights is None: raise ValueError("euclidean_weights must be provided for weighted_minkowski metric") + if not isinstance(euclidean_weights, np.ndarray): + euclidean_weights = np.asarray(euclidean_weights) return np.sum(euclidean_weights * np.abs(embeddings_a - embeddings_b) ** p) ** (1 / p) elif metric == "hamming": # Hamming distance: Proportion of differing elements @@ -168,91 +282,132 @@ def distance(self, embeddings_a: EmbeddingsArray, embeddings_b: EmbeddingsArray, # Use case: Set similarity, binary attributes intersection = np.sum(np.minimum(embeddings_a, embeddings_b)) union = np.sum(np.maximum(embeddings_a, embeddings_b)) + if union == 0: + return 0.0 # Both sets are empty, considered perfectly similar return 1 - intersection / union elif metric == "canberra": - # Canberra distance: Weighted version of Manhattan distance - # Use case: Environmental data, sensitive to small changes - return np.sum(np.abs(embeddings_a - embeddings_b) / (np.abs(embeddings_a) + np.abs(embeddings_b))) + # Canberra distance: Weighted version of Manhattan distance. + # Use case: Environmental data, sensitive to small changes. + numerator = np.abs(embeddings_a - embeddings_b) + denominator = np.abs(embeddings_a) + np.abs(embeddings_b) + # Avoid division by zero: if denominator is zero, that term is 0 + safe_division = np.divide(numerator, denominator, out=np.zeros_like(numerator), where=denominator!=0) + return np.sum(safe_division) elif metric == "braycurtis": # Bray-Curtis distance: Dissimilarity between non-negative vectors # Use case: Ecology, species abundance - return np.sum(np.abs(embeddings_a - embeddings_b)) / np.sum(np.abs(embeddings_a + embeddings_b)) + numerator = np.sum(np.abs(embeddings_a - embeddings_b)) + denominator = np.sum(np.abs(embeddings_a + embeddings_b)) + if denominator == 0: + return 0.0 # Or raise error if both vectors are zero + return numerator / denominator elif metric == "mahalanobis": # Mahalanobis distance: Distance considering correlations (requires covariance matrix) # Use case: Multivariate outlier detection if covariance_matrix is None: - covariance_matrix = np.cov(embeddings_a, embeddings_b, rowvar=False) + # If no covariance matrix is provided, calculate from the data + # This assumes embeddings_a and embeddings_b are samples, not single points + # For single points, a pre-computed covariance matrix is needed. + # For simplicity, we'll assume a diagonal covariance if not provided for two points. + if embeddings_a.shape != embeddings_b.shape: + raise ValueError("Embeddings must have the same shape for Mahalanobis distance.") + combined_data = np.vstack([embeddings_a, embeddings_b]) + covariance_matrix = np.cov(combined_data, rowvar=False) + if np.linalg.det(covariance_matrix) == 0: + raise ValueError("Singular covariance matrix. Cannot compute Mahalanobis distance.") + inv_cov_matrix = np.linalg.inv(covariance_matrix) delta = embeddings_a - embeddings_b return np.sqrt(np.dot(np.dot(delta.T, inv_cov_matrix), delta)) elif metric == "pearson_correlation": # Correlation distance: 1 - Pearson correlation coefficient # Use case: Time series analysis, signal processing - mean_a = np.mean(embeddings_a) - mean_b = np.mean(embeddings_b) - centered_a = embeddings_a - mean_a - centered_b = embeddings_b - mean_b - norm_a = np.linalg.norm(centered_a) - norm_b = np.linalg.norm(centered_b) - correlation = np.dot(centered_a, centered_b) / (norm_a * norm_b) - return 1 - correlation + if np.std(embeddings_a) == 0 or np.std(embeddings_b) == 0: + return 1.0 # Cannot compute correlation if one array is constant + return 1 - np.corrcoef(embeddings_a, embeddings_b)[0, 1] elif metric == "spearman_rank": # Spearman rank correlation distance: 1 - Spearman rank correlation coefficient. # Use case: Measures the rank correlation between two vectors. Useful for non-linear monotonic relationships. - rank_a = np.argsort(np.argsort(embeddings_a)) - rank_b = np.argsort(np.argsort(embeddings_b)) - return 1 - np.corrcoef(rank_a, rank_b)[0, 1] + from scipy.stats import spearmanr + correlation, _ = spearmanr(embeddings_a, embeddings_b) + return 1 - correlation elif metric == "wasserstein": # Earth Mover's Distance (Wasserstein distance) # Use case: Comparing probability distributions or histograms - arr1_sorted = np.sort(embeddings_a) - arr2_sorted = np.sort(embeddings_b) - cdf1 = np.cumsum(arr1_sorted) / np.sum(arr1_sorted) - cdf2 = np.cumsum(arr2_sorted) / np.sum(arr2_sorted) - return np.sum(np.abs(cdf1 - cdf2)) + from scipy.stats import wasserstein_distance + return wasserstein_distance(embeddings_a, embeddings_b) elif metric == "cosine_squared": - # Cosine squared distance: 1 - cosine similarity squared - # Use case: Squared similarity, high-dimensional data + # Cosine squared distance: 1 - cosine similarity squared. + # Use case: Squared similarity, high-dimensional data. dot = np.dot(embeddings_a, embeddings_b) norma = np.linalg.norm(embeddings_a) normb = np.linalg.norm(embeddings_b) + if norma == 0 or normb == 0: + return 1.0 cos = dot / (norma * normb) return 1 - cos ** 2 elif metric == "kl_divergence": # Kullback-Leibler divergence: Asymmetric measure of difference between distributions # Use case: Information theory, probability distributions - return np.sum(embeddings_a * np.log(embeddings_a / embeddings_b)) + # Add a small epsilon to avoid log(0) + epsilon = 1e-10 + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + return np.sum(p_norm * np.log((p_norm + epsilon) / (q_norm + epsilon))) elif metric == "bhattacharyya": # Bhattacharyya distance: Measure of overlap between statistical samples # Use case: Classification, image processing - bc = np.sum(np.sqrt(embeddings_a * embeddings_b)) + # Ensure non-negative and normalized for probability distributions + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + bc = np.sum(np.sqrt(p_norm * q_norm)) + if bc == 0: + return float('inf') # Distributions are completely disjoint return -np.log(bc) elif metric == "hellinger": # Hellinger distance: Measure of similarity between two probability distributions # Use case: Probability distributions, statistical inference - return np.sqrt(0.5 * np.sum((np.sqrt(embeddings_a) - np.sqrt(embeddings_b)) ** 2)) + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + return np.sqrt(0.5 * np.sum((np.sqrt(p_norm) - np.sqrt(q_norm)) ** 2)) elif metric == "ruzicka": # Ruzicka distance: Similarity measure for non-negative vectors # Use case: Ecology, species abundance - return 1 - np.sum(np.minimum(embeddings_a, embeddings_b)) / np.sum(np.maximum(embeddings_a, embeddings_b)) + numerator = np.sum(np.minimum(embeddings_a, embeddings_b)) + denominator = np.sum(np.maximum(embeddings_a, embeddings_b)) + if denominator == 0: + return 0.0 + return 1 - numerator / denominator elif metric == "kulczynski": # Kulczynski distance: Measure used in ecology to compare similarity # Use case: Ecological studies, species distribution - return np.sum(np.abs(embeddings_a - embeddings_b)) / np.sum(np.minimum(embeddings_a, embeddings_b)) + numerator = np.sum(np.abs(embeddings_a - embeddings_b)) + denominator = np.sum(np.minimum(embeddings_a, embeddings_b)) + if denominator == 0: + return float('inf') # No common elements + return numerator / denominator elif metric == "sorensen": # Sørensen distance: Another name for Dice distance # Use case: Binary data comparison, text similarity - intersection = np.sum(embeddings_a * embeddings_b) - return 1 - (2 * intersection) / (np.sum(embeddings_a) + np.sum(embeddings_b)) + intersection = np.sum(np.minimum(embeddings_a, embeddings_b)) # For non-binary, this is sum of mins + denominator = np.sum(embeddings_a) + np.sum(embeddings_b) + if denominator == 0: + return 0.0 + return 1 - (2 * intersection) / denominator elif metric == "chi_squared": # Chi-squared distance: Used for comparing categorical data distributions # Use case: Categorical data analysis, distribution comparison - return np.sum((embeddings_a - embeddings_b) ** 2 / (embeddings_a + embeddings_b)) + epsilon = 1e-10 + return np.sum((embeddings_a - embeddings_b) ** 2 / (embeddings_a + embeddings_b + epsilon)) elif metric == "jensen_shannon": # Jensen-Shannon divergence: Symmetrized and smoothed version of KL divergence # Use case: Information theory, probability distributions - m = 0.5 * (embeddings_a + embeddings_b) - return 0.5 * (np.sum(embeddings_a * np.log(embeddings_a / m)) + np.sum(embeddings_b * np.log(embeddings_b / m))) + epsilon = 1e-10 + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + m = 0.5 * (p_norm + q_norm) + return 0.5 * (np.sum(p_norm * np.log((p_norm + epsilon) / (m + epsilon))) + + np.sum(q_norm * np.log((q_norm + epsilon) / (m + epsilon)))) elif metric == "squared_euclidean": # Squared Euclidean distance: Square of the Euclidean distance # Use case: Clustering algorithms, geometric distance @@ -262,6 +417,8 @@ def distance(self, embeddings_a: EmbeddingsArray, embeddings_b: EmbeddingsArray, # Use case: Features with different scales or importance if euclidean_weights is None: raise ValueError("euclidean_weights must be provided for weighted_euclidean metric") + if not isinstance(euclidean_weights, np.ndarray): + euclidean_weights = np.asarray(euclidean_weights) return np.sqrt(np.sum(euclidean_weights * (embeddings_a - embeddings_b) ** 2)) elif metric == "log_cosh": # Log-Cosh distance: Log of the hyperbolic cosine of the difference @@ -270,333 +427,158 @@ def distance(self, embeddings_a: EmbeddingsArray, embeddings_b: EmbeddingsArray, elif metric == "tanimoto": # Tanimoto coefficient: Similarity measure for binary vectors # Use case: Binary data comparison - intersection = np.sum(embeddings_a * embeddings_b) - return 1 - intersection / (np.sum(embeddings_a) + np.sum(embeddings_b) - intersection) + intersection = np.sum(np.minimum(embeddings_a, embeddings_b)) + union = np.sum(np.maximum(embeddings_a, embeddings_b)) + if union == 0: + return 0.0 + return 1 - intersection / union elif metric == "rao": # Rao's Quadratic Entropy: Measure of divergence between distributions # Use case: Comparing probability distributions - p = embeddings_a / np.sum(embeddings_a) - q = embeddings_b / np.sum(embeddings_b) - return np.sum((p - q) ** 2 / (p + q)) + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + # This is a simplified version, true Rao's involves a dissimilarity matrix + return np.sum((p_norm - q_norm) ** 2 / (p_norm + q_norm + 1e-10)) elif metric == "gower": - # Gower distance: Handles mixed types of data - # Use case: Mixed data types (numerical and categorical) - numerical_part = np.sum(np.abs(embeddings_a - embeddings_b)) / len(embeddings_a) - categorical_part = np.mean(embeddings_a != embeddings_b) - return numerical_part + categorical_part + # Gower distance: Handles mixed types of data. + # Use case: Mixed data types (numerical and categorical). + # This is a highly simplified example. A full Gower implementation is complex + # and depends on knowing which dimensions are numerical/categorical. + # For purely numerical, it's often scaled Manhattan or Euclidean. + # Here, we'll just use a simple average of scaled absolute differences. + max_diff = np.max(np.abs(embeddings_a - embeddings_b)) + if max_diff == 0: return 0.0 + return np.mean(np.abs(embeddings_a - embeddings_b) / max_diff) elif metric == "tversky": # Tversky index: Generalization of Jaccard and Dice for asymmetrical comparison intersection = np.sum(np.minimum(embeddings_a, embeddings_b)) - return 1 - intersection / (intersection + alpha * np.sum(embeddings_a - embeddings_b) + beta * np.sum(embeddings_b - embeddings_a)) + fp = np.sum(np.maximum(0, embeddings_a - embeddings_b)) # False positives from A + fn = np.sum(np.maximum(0, embeddings_b - embeddings_a)) # False negatives from A + denominator = intersection + alpha * fp + beta * fn + if denominator == 0: + return 1.0 # No common elements, maximum dissimilarity + return 1 - intersection / denominator elif metric == "alpha_divergence": # Alpha divergence: Generalized divergence measure - p = embeddings_a / np.sum(embeddings_a) - q = embeddings_b / np.sum(embeddings_b) - return np.sum((p ** alpha - q ** alpha) / (alpha * (p + q) ** alpha)) + epsilon = 1e-10 + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + if alpha == 1: # KL divergence + return np.sum(p_norm * np.log((p_norm + epsilon) / (q_norm + epsilon))) + elif alpha == 0: # Reverse KL divergence + return np.sum(q_norm * np.log((q_norm + epsilon) / (p_norm + epsilon))) + else: + return (1 / (alpha * (alpha - 1))) * np.sum(alpha * p_norm + (1 - alpha) * q_norm - + p_norm**alpha * q_norm**(1-alpha)) elif metric == "kendall_tau": # Kendall's Tau distance: 1 - Kendall Tau correlation coefficient # Use case: Rank correlation for ordinal data - concordant = np.sum((embeddings_a > embeddings_b) == (embeddings_b > embeddings_a)) - discordant = np.sum((embeddings_a > embeddings_b) != (embeddings_b > embeddings_a)) - return 1 - (concordant - discordant) / (concordant + discordant) + from scipy.stats import kendalltau + correlation, _ = kendalltau(embeddings_a, embeddings_b) + return 1 - correlation elif metric == "renyi_divergence": # Renyi Divergence: Generalized divergence measure # Use case: Comparing probability distributions - p = embeddings_a / np.sum(embeddings_a) - q = embeddings_b / np.sum(embeddings_b) - return 1 / (1 - alpha) * np.log(np.sum((p ** alpha + q ** alpha) / 2)) + epsilon = 1e-10 + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + if alpha == 1: # Limit as alpha -> 1 is KL divergence + return np.sum(p_norm * np.log((p_norm + epsilon) / (q_norm + epsilon))) + else: + return (1 / (alpha - 1)) * np.log(np.sum((p_norm**alpha) / (q_norm**(alpha - 1) + epsilon))) elif metric == "total_variation": # Total Variation distance: Measure of divergence between distributions # Use case: Probability distributions, statistical inference - p = embeddings_a / np.sum(embeddings_a) - q = embeddings_b / np.sum(embeddings_b) - return 0.5 * np.sum(np.abs(p - q)) + p_norm = embeddings_a / np.sum(embeddings_a) + q_norm = embeddings_b / np.sum(embeddings_b) + return 0.5 * np.sum(np.abs(p_norm - q_norm)) else: - raise ValueError("Unsupported metric") - - -class TextEmbeddingsStore: - """A store for text embeddings interfacing with the embeddings database.""" - - def __init__(self, db: EmbeddingsDB): - """Initialize the text embeddings store. - - Args: - db (EmbeddingsDB): The embeddings database instance. - """ - self.db = db - - @abc.abstractmethod - def get_text_embeddings(self, text: str) -> EmbeddingsArray: - """Convert text to its corresponding embeddings. - - Args: - text (str): The input text to be converted. + raise ValueError(f"Unsupported metric: {metric}") - Returns: - np.ndarray: The resulting embeddings. - """ - raise NotImplementedError - def add_document(self, document: str, metadata: Optional[Dict[str, any]] = None) -> None: - """Add a document and its embeddings to the database. +class TextEmbedder: - Args: - document (str): The document to add. - metadata (Optional[Dict[str, any]]): Optional metadata associated with the document. + def __init__(self, config: Dict[str, Any] = None): """ - embeddings = self.get_text_embeddings(document) - self.db.add_embeddings(document, embeddings, metadata) - - def delete_document(self, document: str) -> None: - """Delete a document and its embeddings from the database. - - Args: - document (str): The document to delete. - """ - self.db.delete_embeddings(document) - - def query(self, document: str, top_k: int = 5, - return_metadata: bool = False) -> List[Tuple[str, float]]: - """Query the database for the top_k closest embeddings to the document. - - Args: - document (str): The document to query. - top_k (int, optional): The number of top results to return. Defaults to 5. - return_metadata (bool, optional): Whether to include metadata in the results. Defaults to False. - - Returns: - List[Tuple[str, float]]: List of tuples containing the document and distance. - """ - embeddings = self.get_text_embeddings(document) - return self.db.query(embeddings, top_k, - return_metadata=return_metadata) - - def distance(self, text_a: str, text_b: str, metric: str = "cosine") -> float: - """Calculate the distance between embeddings of two texts. - - Args: - text_a (str): The first text. - text_b (str): The second text. - metric (str, optional): The distance metric to use. Defaults to "cosine". - - Returns: - float: The calculated distance. - """ - emb_a = self.get_text_embeddings(text_a) - emb_b = self.get_text_embeddings(text_b) - return self.db.distance(emb_a, emb_b, metric) - - -class FaceEmbeddingsStore: - """A store for face embeddings interfacing with the embeddings database.""" - - def __init__(self, db: EmbeddingsDB): - """Initialize the face embeddings store. - - Args: - db (EmbeddingsDB): The embeddings database instance. + Initialize the embedder with an optional configuration dictionary. """ - self.db = db + self.config = config or {} @abc.abstractmethod - def get_face_embeddings(self, frame: EmbeddingsArray) -> EmbeddingsArray: - """Convert an image frame to its corresponding face embeddings. - - Args: - frame (np.ndarray): The input image frame containing a face. - - Returns: - np.ndarray: The resulting face embeddings. + def get_embeddings(self, text: str) -> EmbeddingsArray: """ - raise NotImplementedError - - def add_face(self, user_id: str, frame: EmbeddingsArray, metadata: Optional[Dict[str, any]] = None) -> EmbeddingsArray: - """Add a face and its embeddings to the database. - - Args: - user_id (str): The unique user ID. - frame (np.ndarray): The image frame containing the face. - metadata (Optional[Dict[str, any]]): Optional metadata associated with the face. - + Generate an embedding vector representation for the given text input. + + Parameters: + text (str): Input text to be embedded. + Returns: - np.ndarray: The stored face embeddings. + EmbeddingsArray: Embedding vector corresponding to the input text. """ - embeddings = self.get_face_embeddings(frame) - return self.db.add_embeddings(user_id, embeddings, metadata) + raise NotImplementedError - def delete_face(self, user_id: str) -> EmbeddingsArray: - """Delete a face and its embeddings from the database. - Args: - user_id (str): The unique user ID. +class ImageEmbedder: - Returns: - np.ndarray: The deleted face embeddings. + def __init__(self, config: Dict[str, Any] = None): """ - return self.db.delete_embeddings(user_id) - - def predict(self, frame: EmbeddingsArray, top_k: int = 3, thresh: float = 0.15) -> Optional[str]: - """Return the top predicted face closest to the given frame. - - Args: - frame (np.ndarray): The input image frame containing a face. - top_k (int, optional): The number of top results to return. Defaults to 3. - thresh (float, optional): The threshold for prediction. Defaults to 0.15. - - Returns: - Optional[str]: The predicted user ID or None if the best match exceeds the threshold. + Initialize the embedder with an optional configuration dictionary. """ - matches = self.query(frame, top_k) - if not matches: - return None - best_match = min(matches, key=lambda k: k[1]) - if best_match[1] > thresh: - return None - return best_match[0] - - def query(self, frame: EmbeddingsArray, top_k: int = 5, - return_metadata: bool = False) -> List[Tuple[str, float]]: - """Query the database for the top_k closest face embeddings to the frame. + self.config = config or {} - Args: - frame (np.ndarray): The input image frame containing a face. - top_k (int, optional): The number of top results to return. Defaults to 5. - return_metadata (bool, optional): Whether to include metadata in the results. Defaults to False. - - Returns: - List[Tuple[str, float]]: List of tuples containing the user ID and distance. + @abc.abstractmethod + def get_embeddings(self, frame: Array) -> EmbeddingsArray: """ - embeddings = self.get_face_embeddings(frame) - return self.db.query(embeddings, top_k, - return_metadata=return_metadata) - - def distance(self, face_a: EmbeddingsArray, face_b: EmbeddingsArray, metric: str = "cosine") -> float: - """Calculate the distance between embeddings of two faces. - - Args: - face_a (np.ndarray): The first face embedding. - face_b (np.ndarray): The second face embedding. - metric (str, optional): The distance metric to use. Defaults to "cosine". - + Generate an embedding vector from an input image frame. + + Parameters: + frame (Array): The image data to be converted into an embedding vector. + Returns: - float: The calculated distance. + EmbeddingsArray: The embedding representation of the input image. """ - emb_a = self.get_face_embeddings(face_a) - emb_b = self.get_face_embeddings(face_b) - return self.db.distance(emb_a, emb_b, metric) - + raise NotImplementedError -class VoiceEmbeddingsStore: - """A store for voice embeddings interfacing with the embeddings database.""" - def __init__(self, db: EmbeddingsDB): - """Initialize the voice embeddings store. +class FaceEmbedder: - Args: - db (EmbeddingsDB): The embeddings database instance. + def __init__(self, config: Dict[str, Any] = None): """ - self.db = db - - @staticmethod - def audiochunk2array(audio_bytes: bytes) -> EmbeddingsArray: - """Convert audio buffer to a normalized float32 NumPy array. - - Args: - audio_bytes (bytes): The audio data buffer. - - Returns: - np.ndarray: The normalized float32 audio array. + Initialize the embedder with an optional configuration dictionary. """ - audio_as_np_int16 = np.frombuffer(audio_bytes, dtype=np.int16) - audio_as_np_float32 = audio_as_np_int16.astype(np.float32) - # Normalise float32 array so that values are between -1.0 and +1.0 - max_int16 = 2 ** 15 - return audio_as_np_float32 / max_int16 + self.config = config or {} @abc.abstractmethod - def get_voice_embeddings(self, audio_data: EmbeddingsArray) -> EmbeddingsArray: - """Convert audio data to its corresponding voice embeddings. - - Args: - audio_data (np.ndarray): The input audio data. - - Returns: - np.ndarray: The resulting voice embeddings. + def get_embeddings(self, frame: Array) -> EmbeddingsArray: """ - raise NotImplementedError - - def add_voice(self, user_id: str, audio_data: EmbeddingsArray, metadata: Optional[Dict[str, any]] = None) -> EmbeddingsArray: - """Add a voice and its embeddings to the database. - - Args: - user_id (str): The unique user ID. - audio_data (np.ndarray): The input audio data. - metadata (Optional[Dict[str, any]]): Optional metadata associated with the voice. - + Extracts a face embedding vector from the given image frame. + + Parameters: + frame (Array): An image frame containing a face. + Returns: - np.ndarray: The stored voice embeddings. + EmbeddingsArray: The embedding vector representing the face in the input frame. """ - embeddings = self.get_voice_embeddings(audio_data) - return self.db.add_embeddings(user_id, embeddings, metadata) + raise NotImplementedError - def delete_voice(self, user_id: str) -> EmbeddingsArray: - """Delete a voice and its embeddings from the database. - Args: - user_id (str): The unique user ID. +class VoiceEmbedder: - Returns: - np.ndarray: The deleted voice embeddings. + def __init__(self, config: Dict[str, Any] = None): """ - return self.db.delete_embeddings(user_id) - - def predict(self, audio_data: EmbeddingsArray, top_k: int = 3, thresh: float = 0.75) -> Optional[str]: - """Return the top predicted voice closest to the given audio_data. - - Args: - audio_data (np.ndarray): The input audio data. - top_k (int, optional): The number of top results to return. Defaults to 3. - thresh (float, optional): The threshold for prediction. Defaults to 0.75. - - Returns: - Optional[str]: The predicted user ID or None if the best match exceeds the threshold. + Initialize the embedder with an optional configuration dictionary. """ - matches = self.query(audio_data, top_k) - if not matches: - return None - best_match = min(matches, key=lambda k: k[1]) - if best_match[1] > thresh: - return None - return best_match[0] + self.config = config or {} - def query(self, audio_data: EmbeddingsArray, top_k: int = 5, - return_metadata: bool = False) -> List[Tuple[str, float]]: - """Query the database for the top_k closest voice embeddings to the audio_data. - - Args: - audio_data (np.ndarray): The input audio data. - top_k (int, optional): The number of top results to return. Defaults to 5. - return_metadata (bool, optional): Whether to include metadata in the results. Defaults to False. - - Returns: - List[Tuple[str, float]]: List of tuples containing the user ID and distance. + @abc.abstractmethod + def get_embeddings(self, audio_data: Array) -> EmbeddingsArray: """ - embeddings = self.get_voice_embeddings(audio_data) - return self.db.query(embeddings, top_k, - return_metadata=return_metadata) - - def distance(self, voice_a: EmbeddingsArray, voice_b: EmbeddingsArray, metric: str = "cosine") -> float: - """Calculate the distance between embeddings of two voices. - - Args: - voice_a (np.ndarray): The first voice embedding. - voice_b (np.ndarray): The second voice embedding. - metric (str, optional): The distance metric to use. Defaults to "cosine". - + Generate an embedding vector from the provided audio data. + + Parameters: + audio_data (Array): The input audio data to be converted into an embedding vector. + Returns: - float: The calculated distance. + EmbeddingsArray: The embedding representation of the input audio. """ - emb_a = self.get_voice_embeddings(voice_a) - emb_b = self.get_voice_embeddings(voice_b) - return self.db.distance(emb_a, emb_b, metric) + raise NotImplementedError diff --git a/ovos_plugin_manager/utils/__init__.py b/ovos_plugin_manager/utils/__init__.py index 5db7c934..3478e7a7 100644 --- a/ovos_plugin_manager/utils/__init__.py +++ b/ovos_plugin_manager/utils/__init__.py @@ -11,55 +11,83 @@ # limitations under the License. # """Common functions for loading plugins.""" -import time from collections import deque -from enum import Enum -from threading import Event, Lock -from typing import Optional -import warnings + import pkg_resources +import time +import warnings +from enum import Enum from ovos_utils.log import LOG, log_deprecation, deprecated +from threading import Event, Lock +from typing import Optional, Union + +DEPRECATED_ENTRYPOINTS = { + "ovos.plugin.gui": "opm.gui", + "ovos.plugin.phal": "opm.phal", + "ovos.plugin.phal.admin": "opm.phal.admin", + "ovos.plugin.skill": "opm.skill", + "ovos.plugin.microphone": "opm.microphone", + "ovos.plugin.VAD": "opm.vad", + "ovos.plugin.g2p": "opm.g2p", + "ovos.plugin.audio2ipa": "opm.audio2ipa", + 'mycroft.plugin.stt': "opm.stt", + 'mycroft.plugin.tts': "opm.tts", + 'mycroft.plugin.wake_word': "opm.wake_word", + "neon.plugin.lang.translate": "opm.lang.translate", + "neon.plugin.lang.detect": "opm.lang.detect", + "neon.plugin.text": "opm.transformer.text", + "neon.plugin.metadata": "opm.transformer.metadata", + "neon.plugin.audio": "opm.transformer.audio", + "neon.plugin.solver": "opm.solver.question", + "intentbox.coreference": "opm.coreference", + "intentbox.keywords": "opm.keywords", + "intentbox.segmentation": "opm.segmentation", + "intentbox.tokenization": "opm.tokenization", + "intentbox.postag": "opm.postag", + "ovos.ocp.extractor": "opm.ocp.extractor" +} class PluginTypes(str, Enum): TRIPLES = "opm.triples" PIPELINE = "opm.pipeline" EMBEDDINGS = "opm.embeddings" + IMAGE_EMBEDDINGS = "opm.embeddings.image" FACE_EMBEDDINGS = "opm.embeddings.face" VOICE_EMBEDDINGS = "opm.embeddings.voice" TEXT_EMBEDDINGS = "opm.embeddings.text" - GUI = "ovos.plugin.gui" # TODO rename "opm.gui" - PHAL = "ovos.plugin.phal" # TODO rename "opm.phal" - ADMIN = "ovos.plugin.phal.admin" # TODO rename "opm.phal.admin" - SKILL = "ovos.plugin.skill" # TODO rename "opm.skill" - MIC = "ovos.plugin.microphone" # TODO rename "opm.microphone" - VAD = "ovos.plugin.VAD" # TODO rename "opm.vad" - PHONEME = "ovos.plugin.g2p" # TODO rename "opm.g2p" - AUDIO2IPA = "ovos.plugin.audio2ipa" # TODO rename "opm.audio2ipa" + GUI = "opm.gui" + PHAL = "opm.phal" + ADMIN = "opm.phal.admin" + SKILL = "opm.skill" + MIC = "opm.microphone" + VAD = "opm.VAD" + PHONEME = "opm.g2p" + AUDIO2IPA = "opm.audio2ipa" AUDIO = 'mycroft.plugin.audioservice' # DEPRECATED - STT = 'mycroft.plugin.stt' # TODO rename "opm.stt" - TTS = 'mycroft.plugin.tts' # TODO rename "opm.tts" - WAKEWORD = 'mycroft.plugin.wake_word' # TODO rename "opm.wake_word" - TRANSLATE = "neon.plugin.lang.translate" # TODO rename "opm.lang.translate" - LANG_DETECT = "neon.plugin.lang.detect" # TODO rename "opm.lang.detect" - UTTERANCE_TRANSFORMER = "neon.plugin.text" # TODO rename "opm.transformer.text" - METADATA_TRANSFORMER = "neon.plugin.metadata" # TODO rename "opm.transformer.metadata" - AUDIO_TRANSFORMER = "neon.plugin.audio" # TODO rename "opm.transformer.audio" + STT = 'opm.stt' + TTS = 'opm.tts' + WAKEWORD = 'opm.wake_word' + TRANSLATE = "opm.lang.translate" + LANG_DETECT = "opm.lang.detect" + UTTERANCE_TRANSFORMER = "opm.transformer.text" + METADATA_TRANSFORMER = "opm.transformer.metadata" + AUDIO_TRANSFORMER = "opm.transformer.audio" DIALOG_TRANSFORMER = "opm.transformer.dialog" TTS_TRANSFORMER = "opm.transformer.tts" INTENT_TRANSFORMER = "opm.transformer.intent" - QUESTION_SOLVER = "neon.plugin.solver" # TODO rename "opm.solver.question" + QUESTION_SOLVER = "opm.solver.question" CHAT_SOLVER = "opm.solver.chat" TLDR_SOLVER = "opm.solver.summarization" ENTAILMENT_SOLVER = "opm.solver.entailment" MULTIPLE_CHOICE_SOLVER = "opm.solver.multiple_choice" READING_COMPREHENSION_SOLVER = "opm.solver.reading_comprehension" - COREFERENCE_SOLVER = "intentbox.coreference" # TODO rename "opm.coreference" - KEYWORD_EXTRACTION = "intentbox.keywords" # TODO rename "opm.keywords" - UTTERANCE_SEGMENTATION = "intentbox.segmentation" # TODO rename "opm.segmentation" - TOKENIZATION = "intentbox.tokenization" # TODO rename "opm.tokenization" - POSTAG = "intentbox.postag" # TODO rename "opm.postag" - STREAM_EXTRACTOR = "ovos.ocp.extractor" # TODO rename "opm.ocp.extractor" + COREFERENCE_SOLVER = "opm.coreference" + KEYWORD_EXTRACTION = "opm.keywords" + UTTERANCE_SEGMENTATION = "opm.segmentation" + TOKENIZATION = "opm.tokenization" + POSTAG = "opm.postag" + STREAM_EXTRACTOR = "opm.ocp.extractor" AUDIO_PLAYER = "opm.media.audio" VIDEO_PLAYER = "opm.media.video" WEB_PLAYER = "opm.media.web" @@ -70,41 +98,42 @@ class PluginConfigTypes(str, Enum): TRIPLES = "opm.triples.config" PIPELINE = "opm.pipeline.config" EMBEDDINGS = "opm.embeddings.config" + IMAGE_EMBEDDINGS = "opm.embeddings.image.config" FACE_EMBEDDINGS = "opm.embeddings.face.config" VOICE_EMBEDDINGS = "opm.embeddings.voice.config" TEXT_EMBEDDINGS = "opm.embeddings.text.config" - GUI = "ovos.plugin.gui.config" - PHAL = "ovos.plugin.phal.config" - ADMIN = "ovos.plugin.phal.admin.config" - SKILL = "ovos.plugin.skill.config" - VAD = "ovos.plugin.VAD.config" - MIC = "ovos.plugin.microphone.config" - PHONEME = "ovos.plugin.g2p.config" - AUDIO2IPA = "ovos.plugin.audio2ipa.config" - AUDIO = 'mycroft.plugin.audioservice.config' - STT = 'mycroft.plugin.stt.config' - TTS = 'mycroft.plugin.tts.config' - WAKEWORD = 'mycroft.plugin.wake_word.config' - TRANSLATE = "neon.plugin.lang.translate.config" - LANG_DETECT = "neon.plugin.lang.detect.config" - UTTERANCE_TRANSFORMER = "neon.plugin.text.config" - METADATA_TRANSFORMER = "neon.plugin.metadata.config" - AUDIO_TRANSFORMER = "neon.plugin.audio.config" + GUI = "opm.gui.config" + PHAL = "opm.phal.config" + ADMIN = "opm.phal.admin.config" + SKILL = "opm.skill.config" + VAD = "opm.VAD.config" + MIC = "opm.microphone.config" + PHONEME = "opm.g2p.config" + AUDIO2IPA = "opm.audio2ipa.config" + AUDIO = 'mycroft.plugin.audioservice.config' # DEPRECATED + STT = 'opm.stt.config' + TTS = 'opm.tts.config' + WAKEWORD = 'opm.wake_word.config' + TRANSLATE = "opm.lang.translate.config" + LANG_DETECT = "opm.lang.detect.config" + UTTERANCE_TRANSFORMER = "opm.transformer.text.config" + METADATA_TRANSFORMER = "opm.transformer.metadata.config" + AUDIO_TRANSFORMER = "opm.transformer.audio.config" DIALOG_TRANSFORMER = "opm.transformer.dialog.config" TTS_TRANSFORMER = "opm.transformer.tts.config" INTENT_TRANSFORMER = "opm.transformer.intent.config" - QUESTION_SOLVER = "neon.plugin.solver.config" + QUESTION_SOLVER = "opm.solver.config" CHAT_SOLVER = "opm.solver.chat.config" TLDR_SOLVER = "opm.solver.summarization.config" ENTAILMENT_SOLVER = "opm.solver.entailment.config" MULTIPLE_CHOICE_SOLVER = "opm.solver.multiple_choice.config" READING_COMPREHENSION_SOLVER = "opm.solver.reading_comprehension.config" - COREFERENCE_SOLVER = "intentbox.coreference.config" - KEYWORD_EXTRACTION = "intentbox.keywords.config" - UTTERANCE_SEGMENTATION = "intentbox.segmentation.config" - TOKENIZATION = "intentbox.tokenization.config" - POSTAG = "intentbox.postag.config" - STREAM_EXTRACTOR = "ovos.ocp.extractor.config" + COREFERENCE_SOLVER = "opm.coreference.config" + KEYWORD_EXTRACTION = "opm.keywords.config" + UTTERANCE_SEGMENTATION = "opm.segmentation.config" + TOKENIZATION = "opm.tokenization.config" + POSTAG = "opm.postag.config" + STREAM_EXTRACTOR = "opm.ocp.extractor.config" AUDIO_PLAYER = "opm.media.audio.config" VIDEO_PLAYER = "opm.media.video.config" WEB_PLAYER = "opm.media.web.config" @@ -144,31 +173,84 @@ def find_plugins(plug_type: PluginTypes = None) -> dict: find_plugins._errored = [] +# compat with older python versions +try: + from importlib_metadata import entry_points -def _iter_entrypoints(plug_type: Optional[str]): - """ - Return an iterator containing all entrypoints of the requested type - @param plug_type: entrypoint name to load - @return: iterator of all entrypoints - """ - try: - from importlib_metadata import entry_points + + def _iter_plugins(plug_type): + """ + Yields all entry points for the specified plugin group. + + Parameters: + plug_type: The entry point group name to search for. + + Yields: + Entry points belonging to the specified group. + """ for entry_point in entry_points(group=plug_type): yield entry_point - except ImportError: +except ImportError: + def _iter_plugins(plug_type): + """ + Yield all entry points for the specified plugin group using pkg_resources. + + Parameters: + plug_type (str): The entry point group name to search for. + + Yields: + EntryPoint: Each discovered entry point in the specified group. + """ for entry_point in pkg_resources.iter_entry_points(plug_type): yield entry_point -def load_plugin(plug_name: str, plug_type: Optional[PluginTypes] = None): - """Load a specific plugin from a specific plugin type. +def _iter_entrypoints(plug_type: Union[str, PluginTypes]): + """ + Yield all entry points for the specified plugin type, including deprecated identifiers for backward compatibility. + + Parameters: + plug_type (str or PluginTypes): The entry point group name or PluginTypes enum value to search for. + + Yields: + Entry points matching the requested type, including those found under deprecated group names with a warning. + """ + OLD = {v: k for k, v in DEPRECATED_ENTRYPOINTS.items()} + identifier = plug_type.value if isinstance(plug_type, PluginTypes) else plug_type + old_identifier = OLD.get(plug_type) - Arguments: - plug_type: (str) plugin type name. Ex. "mycroft.plugin.tts". - plug_name: (str) specific plugin name (else consider all plugin types) + if identifier in DEPRECATED_ENTRYPOINTS: + LOG.warning( + f"requested old style identifier, please update your code to request '{old_identifier}' instead of '{identifier}'") + identifier, old_identifier = DEPRECATED_ENTRYPOINTS[identifier], identifier + + for entry_point in _iter_plugins(identifier): + yield entry_point + if old_identifier: + for e in _iter_plugins(old_identifier): + if e.name not in _iter_entrypoints._warnings: + _iter_entrypoints._warnings.append(e.name) + LOG.warning( + f"old style entrypoint detected for plugin '{e.name}' - '{old_identifier}' should be renamed to '{identifier}'") + yield e + + +_iter_entrypoints._warnings = [] + + +def load_plugin(plug_name: str, plug_type: Optional[PluginTypes] = None): + """ + Load a plugin by name from the specified plugin type. + + If the plugin is found, returns the loaded plugin object; otherwise, returns None and logs a warning. + + Parameters: + plug_name (str): The name of the plugin to load. + plug_type (Optional[PluginTypes]): The plugin type to search within. If not provided, searches all plugin types. + Returns: - Loaded plugin Object or None if no matching object was found. + The loaded plugin object if found; otherwise, None. """ plugins = find_plugins(plug_type) if plug_name in plugins: diff --git a/ovos_plugin_manager/utils/ui.py b/ovos_plugin_manager/utils/ui.py index 41f1047a..efe0a5c4 100644 --- a/ovos_plugin_manager/utils/ui.py +++ b/ovos_plugin_manager/utils/ui.py @@ -7,9 +7,19 @@ from ovos_plugin_manager import PluginTypes from ovos_plugin_manager.stt import get_stt_lang_configs from ovos_plugin_manager.tts import get_tts_lang_configs +from ovos_plugin_manager.utils import DEPRECATED_ENTRYPOINTS def hash_dict(d): + """ + Compute a hash string for a dictionary by serializing it to a sorted JSON string. + + Parameters: + d (dict): The dictionary to hash. + + Returns: + str: A string representation of the hash value for the input dictionary. + """ return str(hash(json.dumps(d, indent=2, sort_keys=True, ensure_ascii=True))) @@ -32,13 +42,20 @@ class PluginUIHelper: def config2option(cls, cfg: dict, plugin_type: PluginTypes, lang: str = None) -> dict: """ - Get the equivalent UI display model from a plugin config. - This is the inverse of option2config. - @param cfg: Configuration from plugin entrypoint - @param plugin_type: Plugin type (stt/tts) - @param lang: ISO 639-1 or BCP-47 language requested - @return: GUI-compatible plugin spec + Converts a plugin configuration dictionary into a UI-compatible option dictionary for display and selection. + + Parameters: + cfg (dict): The plugin configuration dictionary. + plugin_type (PluginTypes): The type of plugin (STT or TTS). + lang (str, optional): The requested language code (ISO 639-1 or BCP-47). + + Returns: + dict: A dictionary representing the plugin option in a format suitable for UI consumption. + + Raises: + NotImplementedError: If the plugin type is not STT or TTS. """ + plugin_type = DEPRECATED_ENTRYPOINTS.get(plugin_type, plugin_type) cfg = cls._migrate_old_cfg(cfg) engine = cfg["module"] lang = standardize_lang_tag(lang or cfg.get("lang"), macro=True) @@ -80,13 +97,21 @@ def config2option(cls, cfg: dict, plugin_type: PluginTypes, @classmethod def option2config(cls, opt: dict, plugin_type: PluginTypes = None) -> dict: """ - Get the equivalent plugin config from a UI display model. - This is the inverse of config2option. - @param opt: Configuration from GUI - @param plugin_type: Plugin type (stt/tts) - @return: plugin configuration for requested opt (lang, meta, module) + Converts a UI option dictionary back into its original plugin configuration. + + Parameters: + opt (dict): The UI option representing a plugin configuration. + plugin_type (PluginTypes, optional): The type of plugin (STT or TTS). If not provided, it is inferred from the option. + + Returns: + dict: The original plugin configuration corresponding to the provided UI option. + + Raises: + ValueError: If the plugin type cannot be determined. + NotImplementedError: If the plugin type is not STT or TTS. """ plugin_type = plugin_type or opt.get("plugin_type") + plugin_type = DEPRECATED_ENTRYPOINTS.get(plugin_type, plugin_type) if not plugin_type: raise ValueError("Unknown plugin type") if plugin_type == PluginTypes.STT: @@ -124,18 +149,23 @@ def get_config_options(cls, lang: str, plugin_type: PluginTypes, max_opts: int = 50, skip_setup: bool = True, include_dialects: bool = True) -> list: """ - Get a list of dict metadata for downstream UIs. - Each option corresponds to a valid selectable plugin configuration; - each plugin may report several options. - @param lang: Requested language (ISO 639-1 or BCP-47) - @param plugin_type: Type of plugins to return - @param blacklist: plugin names to ignore - @param preferred: preferred plugin names to prepend to returned list - @param max_opts: maximum length of the returned list - @param skip_setup: If True, exclude any plugins that require setup - @param include_dialects: If True, include any ISO 639-1 matched codes - @return: list of valid GUI-compatible config dicts + Retrieve a list of plugin configuration options formatted for UI selection for a given language and plugin type. + + Each returned dictionary represents a selectable plugin configuration, with support for filtering by blacklist, prioritizing preferred plugins, limiting the number of options, skipping plugins that require extra setup, and including dialect variants. + + Parameters: + lang (str): The requested language code (ISO 639-1 or BCP-47). + plugin_type (PluginTypes): The type of plugins to retrieve options for. + blacklist (Optional[list]): List of plugin engine names to exclude from the results. + preferred (Optional[list]): List of plugin engine names to prioritize at the start of the returned list. + max_opts (int): Maximum number of options to return. + skip_setup (bool): If True, exclude plugins that require non-optional extra setup. + include_dialects (bool): If True, include dialect variants matching the language code. + + Returns: + list: A list of dictionaries, each representing a UI-compatible plugin configuration option. """ + plugin_type = DEPRECATED_ENTRYPOINTS.get(plugin_type, plugin_type) lang = standardize_lang_tag(lang) # NOTE: mycroft-gui will crash if theres more than 20 options according to @aiix # TODO - validate that this is true and 20 is a real limit @@ -183,12 +213,18 @@ def get_config_options(cls, lang: str, plugin_type: PluginTypes, @classmethod def get_plugin_options(cls, lang: str, plugin_type: PluginTypes) -> list: """ - Get a list of dict metadata for downstream UIs. - Each option corresponds to a valid plugin and its capabilities - @param lang: Requested language (ISO 639-1 or BCP-47) - @param plugin_type: Type of plugins to return - @return: list of plugin specs with capabilities and config options + Return a list of plugin metadata dictionaries summarizing available plugins and their capabilities for a given language and plugin type. + + Each dictionary includes the plugin engine name, plugin name, supported modes (offline/online), available configuration options, and for TTS plugins, supported voice genders. + + Parameters: + lang (str): The requested language code (ISO 639-1 or BCP-47). + plugin_type (PluginTypes): The type of plugins to retrieve. + + Returns: + list: A list of dictionaries, each describing a plugin's capabilities and available configuration options. """ + plugin_type = DEPRECATED_ENTRYPOINTS.get(plugin_type, plugin_type) lang = standardize_lang_tag(lang) plugs = {} for entry in cls.get_config_options(lang, plugin_type): From cefd6dbfd382a3639adbf54cc2d9e8dbe0fa17b8 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:02:22 +0000 Subject: [PATCH 27/31] Increment Version to 2.0.0a1 --- ovos_plugin_manager/version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ovos_plugin_manager/version.py b/ovos_plugin_manager/version.py index 87b8ecf3..a9ff0229 100644 --- a/ovos_plugin_manager/version.py +++ b/ovos_plugin_manager/version.py @@ -1,6 +1,6 @@ # START_VERSION_BLOCK -VERSION_MAJOR = 1 +VERSION_MAJOR = 2 VERSION_MINOR = 0 -VERSION_BUILD = 4 -VERSION_ALPHA = 2 +VERSION_BUILD = 0 +VERSION_ALPHA = 1 # END_VERSION_BLOCK From 9b53aae044d5e8fdf9b710e734e84e99f68a31b1 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:02:50 +0000 Subject: [PATCH 28/31] Update Changelog --- CHANGELOG.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4fe3963..5d7301f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,20 @@ # Changelog +## [2.0.0a1](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/2.0.0a1) (2025-07-22) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a2...2.0.0a1) + +**Breaking changes:** + +- feat!: add collections and batch operations support to embeddings plu… [\#333](https://github.com/OpenVoiceOS/ovos-plugin-manager/pull/333) ([JarbasAl](https://github.com/JarbasAl)) + ## [1.0.4a2](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.4a2) (2025-07-22) -[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a1...1.0.4a2) +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a3...1.0.4a2) + +## [1.0.4a3](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/1.0.4a3) (2025-07-22) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a1...1.0.4a3) **Merged pull requests:** From 87f9ad49f7f0fa125f9c9edbab24e84dfc944453 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 17:14:34 +0100 Subject: [PATCH 29/31] Update requests requirement from ~=2.26 to ~=2.32 in /requirements (#330) Updates the requirements on [requests](https://github.com/psf/requests) to permit the latest version. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.26.0...v2.32.4) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 1b7fc83b..89731750 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,7 +2,7 @@ ovos-utils>=0.2.1,<1.0.0 ovos_bus_client>=0.0.8,<2.0.0 ovos-config>=0.0.12,<3.0.0 combo_lock~=0.3 -requests~=2.26 +requests~=2.32 quebra_frases langcodes~=3.5.0 From dd3f447f3ec7ef03af1b8d0e5929f6e30e433b4b Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:14:49 +0000 Subject: [PATCH 30/31] Increment Version to 2.0.0a2 --- ovos_plugin_manager/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ovos_plugin_manager/version.py b/ovos_plugin_manager/version.py index a9ff0229..fdb0253c 100644 --- a/ovos_plugin_manager/version.py +++ b/ovos_plugin_manager/version.py @@ -2,5 +2,5 @@ VERSION_MAJOR = 2 VERSION_MINOR = 0 VERSION_BUILD = 0 -VERSION_ALPHA = 1 +VERSION_ALPHA = 2 # END_VERSION_BLOCK From ce2106c3562f8759ca98f4f9b07a1fc25e8afdb8 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Tue, 22 Jul 2025 16:15:18 +0000 Subject: [PATCH 31/31] Update Changelog --- CHANGELOG.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d7301f6..974922fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [2.0.0a2](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/2.0.0a2) (2025-07-22) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/2.0.0a1...2.0.0a2) + +**Merged pull requests:** + +- Update requests requirement from ~=2.26 to ~=2.32 in /requirements [\#330](https://github.com/OpenVoiceOS/ovos-plugin-manager/pull/330) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [2.0.0a1](https://github.com/OpenVoiceOS/ovos-plugin-manager/tree/2.0.0a1) (2025-07-22) [Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.4a2...2.0.0a1) @@ -25,10 +33,6 @@ [Full Changelog](https://github.com/OpenVoiceOS/ovos-plugin-manager/compare/1.0.3...1.0.4a1) -**Closed issues:** - -- An error occurred \(InvalidSsmlException\) when calling the SynthesizeSpeech operation: Invalid SSML request [\#221](https://github.com/OpenVoiceOS/ovos-plugin-manager/issues/221) - \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*