From 6efd31883367c82977c6a6d7b8d1db78541409e9 Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Fri, 6 Dec 2024 14:10:33 +0000 Subject: [PATCH 01/10] refactor:use uv to speedup workflows (#619) * refactor:use uv to speedup workflows * uv pip install --system * uv pip install --system * uv pip install --system --- .github/workflows/build_tests.yml | 7 +++--- .github/workflows/end2end_tests.yml | 30 ++++++++++++------------- .github/workflows/integration_tests.yml | 8 +++---- .github/workflows/license_tests.yml | 6 ++--- .github/workflows/mycroft_tests.yml | 6 ++--- .github/workflows/pipaudit.yml | 4 ++-- .github/workflows/unit_tests.yml | 8 +++---- 7 files changed, 34 insertions(+), 35 deletions(-) diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index 4bc177369915..9f2211ab0b79 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -16,7 +16,7 @@ jobs: strategy: max-parallel: 2 matrix: - python-version: [ 3.7, 3.8, 3.9, "3.10", "3.11" ] + python-version: [3.8, 3.9, "3.10", "3.11] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -26,12 +26,11 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install Build Tools run: | - python -m pip install build wheel + python -m pip install build wheel uv - name: Install System Dependencies run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev libfann-dev portaudio19-dev libpulse-dev python3-fann2 - python -m pip install build wheel - name: Build Source Packages run: | python setup.py sdist @@ -40,4 +39,4 @@ jobs: python setup.py bdist_wheel - name: Install package run: | - pip install .[mycroft,lgpl,plugins,skills-essential,skills-extra,skills-audio,skills-gui,skills-internet,skills-media,skills-desktop] + uv pip install --system .[mycroft,lgpl,plugins,skills-essential,skills-extra,skills-audio,skills-gui,skills-internet,skills-media,skills-desktop] diff --git a/.github/workflows/end2end_tests.yml b/.github/workflows/end2end_tests.yml index e628d48bfac2..7cdb0f92d773 100644 --- a/.github/workflows/end2end_tests.yml +++ b/.github/workflows/end2end_tests.yml @@ -47,25 +47,25 @@ jobs: run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev - python -m pip install build wheel + python -m pip install build wheel uv - name: Install test dependencies run: | - pip install -r requirements/tests.txt - pip install ./test/integrationtests/common_query/ovos_tskill_fakewiki - pip install ./test/end2end/skill-ovos-hello-world - pip install ./test/end2end/skill-ovos-fallback-unknown - pip install ./test/end2end/skill-ovos-slow-fallback - pip install ./test/end2end/skill-converse_test - pip install ./test/end2end/skill-ovos-schedule - pip install ./test/end2end/skill-new-stop - pip install ./test/end2end/skill-old-stop - pip install ./test/end2end/skill-fake-fm - pip install ./test/end2end/skill-fake-fm-legacy - pip install ./test/end2end/skill-ovos-fakewiki - pip install ./test/end2end/metadata-test-plugin + uv pip install --system -r requirements/tests.txt + uv pip install --system ./test/integrationtests/common_query/ovos_tskill_fakewiki + uv pip install --system ./test/end2end/skill-ovos-hello-world + uv pip install --system ./test/end2end/skill-ovos-fallback-unknown + uv pip install --system ./test/end2end/skill-ovos-slow-fallback + uv pip install --system ./test/end2end/skill-converse_test + uv pip install --system ./test/end2end/skill-ovos-schedule + uv pip install --system ./test/end2end/skill-new-stop + uv pip install --system ./test/end2end/skill-old-stop + uv pip install --system ./test/end2end/skill-fake-fm + uv pip install --system ./test/end2end/skill-fake-fm-legacy + uv pip install --system ./test/end2end/skill-ovos-fakewiki + uv pip install --system ./test/end2end/metadata-test-plugin - name: Install core repo run: | - pip install -e .[plugins] + uv pip install --system -e .[plugins] - name: Run end2end tests run: | pytest --cov-append --cov=ovos_core --cov-report xml test/end2end diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index fa08d58e625e..8fa958625334 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -34,14 +34,14 @@ jobs: run: | sudo apt-get update sudo apt install python3-dev swig - python -m pip install build wheel + python -m pip install build wheel uv - name: Install test dependencies run: | - pip install -r requirements/tests.txt - pip install ./test/integrationtests/common_query/ovos_tskill_fakewiki + uv pip install --system -r requirements/tests.txt + uv pip install --system ./test/integrationtests/common_query/ovos_tskill_fakewiki - name: Install core repo run: | - pip install -e .[plugins] + uv pip install --system -e .[plugins] - name: Run integration tests run: | pytest test/integrationtests diff --git a/.github/workflows/license_tests.yml b/.github/workflows/license_tests.yml index de35365f64ad..9c43092e303f 100644 --- a/.github/workflows/license_tests.yml +++ b/.github/workflows/license_tests.yml @@ -19,17 +19,17 @@ jobs: python-version: 3.8 - name: Install Build Tools run: | - python -m pip install build wheel + python -m pip install build wheel uv - name: Install System Dependencies run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev libfann-dev portaudio19-dev libpulse-dev - name: Install core repo run: | - pip install .[mycroft,lgpl,skills-essential] + uv pip install --system .[mycroft,lgpl,skills-essential] - name: Get explicit and transitive dependencies run: | - pip freeze > requirements-all.txt + uv pip freeze > requirements-all.txt - name: Check python id: license_check_report uses: pilosus/action-pip-license-checker@v0.5.0 diff --git a/.github/workflows/mycroft_tests.yml b/.github/workflows/mycroft_tests.yml index 8bdb4a9434c9..3010b56d10bd 100644 --- a/.github/workflows/mycroft_tests.yml +++ b/.github/workflows/mycroft_tests.yml @@ -33,13 +33,13 @@ jobs: run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev portaudio19-dev libpulse-dev - python -m pip install build wheel + python -m pip install build wheel uv - name: Install test dependencies run: | - pip install -r requirements/tests.txt + uv pip install --system -r requirements/tests.txt - name: Install core repo run: | - pip install -e .[mycroft,plugins,deprecated] + uv pip install --system -e .[mycroft,plugins,deprecated] - name: Run mycroft compat tests run: | pytest test/backwards_compat \ No newline at end of file diff --git a/.github/workflows/pipaudit.yml b/.github/workflows/pipaudit.yml index 4ea03af64266..de640a5e322d 100644 --- a/.github/workflows/pipaudit.yml +++ b/.github/workflows/pipaudit.yml @@ -21,14 +21,14 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install Build Tools run: | - python -m pip install build wheel + python -m pip install build wheel uv - name: Install System Dependencies run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev - name: Install package run: | - pip install .[skills-essential] + uv pip install --system .[skills-essential] - uses: pypa/gh-action-pip-audit@v1.0.0 with: # Ignore setuptools vulnerability we can't do much about diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 427cf4196b0b..84fe6962f431 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -47,20 +47,20 @@ jobs: run: | sudo apt-get update sudo apt install python3-dev swig libssl-dev portaudio19-dev libpulse-dev - python -m pip install build wheel + python -m pip install build wheel uv - name: Install test dependencies run: | - pip install -r requirements/tests.txt + uv pip install --system -r requirements/tests.txt - name: Install core repo run: | - pip install -e .[mycroft,plugins] + uv pip install --system -e .[mycroft,plugins] - name: Run unittests run: | pytest --cov=ovos_core --cov-report xml test/unittests - name: Install padatious run: | sudo apt install libfann-dev - pip install .[lgpl] + uv pip install --system .[lgpl] - name: Run unittests with padatious run: | pytest --cov-append --cov=ovos_core --cov-report xml test/unittests From 9ba02c03d282110586ba3d62177a468cb9588f20 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 14:10:51 +0000 Subject: [PATCH 02/10] Increment Version to 0.2.19a1 --- ovos_core/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ovos_core/version.py b/ovos_core/version.py index 41da0680d37c..6c94487b24c6 100644 --- a/ovos_core/version.py +++ b/ovos_core/version.py @@ -1,8 +1,8 @@ # START_VERSION_BLOCK VERSION_MAJOR = 0 VERSION_MINOR = 2 -VERSION_BUILD = 18 -VERSION_ALPHA = 0 +VERSION_BUILD = 19 +VERSION_ALPHA = 1 # END_VERSION_BLOCK # for compat with old imports From e87af007f7d223d673616eadfd056c3d614e317b Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 14:11:53 +0000 Subject: [PATCH 03/10] Update Changelog --- CHANGELOG.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 257459d2f697..1129569ce645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,12 @@ # Changelog -## [0.2.18a2](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.18a2) (2024-12-02) +## [0.2.19a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.19a1) (2024-12-06) -[Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.18a1...0.2.18a2) +[Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.18...0.2.19a1) **Merged pull requests:** -- import basque translations [\#615](https://github.com/OpenVoiceOS/ovos-core/pull/615) ([JarbasAl](https://github.com/JarbasAl)) - -## [0.2.18a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.18a1) (2024-12-02) - -[Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.17...0.2.18a1) - -**Merged pull requests:** - -- import galician translations [\#613](https://github.com/OpenVoiceOS/ovos-core/pull/613) ([JarbasAl](https://github.com/JarbasAl)) +- refactor:use uv to speedup workflows [\#619](https://github.com/OpenVoiceOS/ovos-core/pull/619) ([JarbasAl](https://github.com/JarbasAl)) From f7e3d5d21edda724040676d4fd77cffe94ef8deb Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:24:15 +0000 Subject: [PATCH 04/10] fix:bracket_expansion (#618) * fix:bracket_expansion pull https://github.com/OpenVoiceOS/ovos-utils/pull/317 into dependencies * Update build_tests.yml * failing tests * Update requirements.txt --- .github/workflows/build_tests.yml | 2 +- ovos_core/intent_services/stop_service.py | 4 ++-- requirements/requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index 9f2211ab0b79..ffb1cc8dab7d 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -16,7 +16,7 @@ jobs: strategy: max-parallel: 2 matrix: - python-version: [3.8, 3.9, "3.10", "3.11] + python-version: [3.8, 3.9, "3.10", "3.11"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/ovos_core/intent_services/stop_service.py b/ovos_core/intent_services/stop_service.py index f9ba7f17b0b9..651597136aa3 100644 --- a/ovos_core/intent_services/stop_service.py +++ b/ovos_core/intent_services/stop_service.py @@ -11,7 +11,7 @@ from ovos_config.config import Configuration from ovos_plugin_manager.templates.pipeline import PipelineMatch, PipelinePlugin from ovos_utils import flatten_list -from ovos_utils.bracket_expansion import expand_options +from ovos_utils.bracket_expansion import expand_template from ovos_utils.lang import standardize_lang_tag from ovos_utils.log import LOG from ovos_utils.parse import match_one @@ -33,7 +33,7 @@ def load_resource_files(self): self._voc_cache[lang2] = {} for f in os.listdir(f"{base}/{lang}"): with open(f"{base}/{lang}/{f}", encoding="utf-8") as fi: - lines = [expand_options(l) for l in fi.read().split("\n") + lines = [expand_template(l) for l in fi.read().split("\n") if l.strip() and not l.startswith("#")] n = f.split(".", 1)[0] self._voc_cache[lang2][n] = flatten_list(lines) diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 21591cb0cec3..d65560c69756 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -5,10 +5,10 @@ combo-lock>=0.2.2, <0.4 padacioso>=1.0.0, <2.0.0 ovos-adapt-parser>=1.0.5, <2.0.0 -ovos_ocp_pipeline_plugin>=1.0.7, <2.0.0 +ovos_ocp_pipeline_plugin==1.0.7 ovos-common-query-pipeline-plugin>=1.0.5, <2.0.0 -ovos-utils>=0.3.5,<1.0.0 +ovos-utils[extras]>=0.6.0,<1.0.0 ovos_bus_client>=0.1.4,<2.0.0 ovos-plugin-manager>=0.5.6,<1.0.0 ovos-config>=0.0.13,<2.0.0 From d87e53aaefb36923e4a3401d854cf21a26757939 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 15:24:34 +0000 Subject: [PATCH 05/10] Increment Version to 0.2.20a1 --- ovos_core/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ovos_core/version.py b/ovos_core/version.py index 6c94487b24c6..39e003203ae2 100644 --- a/ovos_core/version.py +++ b/ovos_core/version.py @@ -1,7 +1,7 @@ # START_VERSION_BLOCK VERSION_MAJOR = 0 VERSION_MINOR = 2 -VERSION_BUILD = 19 +VERSION_BUILD = 20 VERSION_ALPHA = 1 # END_VERSION_BLOCK From 928fc59abf6841f2bbc7b2401c2e31a116270b7d Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 15:25:24 +0000 Subject: [PATCH 06/10] Update Changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1129569ce645..b2e9e1ae35dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.2.20a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.20a1) (2024-12-06) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.19a1...0.2.20a1) + +**Merged pull requests:** + +- fix:bracket\_expansion [\#618](https://github.com/OpenVoiceOS/ovos-core/pull/618) ([JarbasAl](https://github.com/JarbasAl)) + ## [0.2.19a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.19a1) (2024-12-06) [Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.18...0.2.19a1) From 5ddaa498bec16d1e3a8dd98bea86068f78ceae55 Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:26:52 +0000 Subject: [PATCH 07/10] fix: constraints.txt from url (#617) * fix: constraints.txt from url closes #596 * better error handling per @coderabbitai suggestion * always validate constraints url * fix constraints handling in uninstall * Update requirements.txt * use `uv pip` if available --- ovos_core/skill_installer.py | 77 ++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 21 deletions(-) diff --git a/ovos_core/skill_installer.py b/ovos_core/skill_installer.py index de847d258329..3f4f5304fbd3 100644 --- a/ovos_core/skill_installer.py +++ b/ovos_core/skill_installer.py @@ -1,15 +1,17 @@ import enum +import shutil import sys from importlib import reload from os.path import exists from subprocess import Popen, PIPE from typing import Optional +import requests from combo_lock import NamedLock -from ovos_config.config import Configuration import ovos_plugin_manager from ovos_bus_client import Message +from ovos_config.config import Configuration from ovos_utils.log import LOG @@ -22,8 +24,9 @@ class InstallError(str, enum.Enum): class SkillsStore: # default constraints to use if none are given - DEFAULT_CONSTRAINTS = '/etc/mycroft/constraints.txt' # TODO XDG paths, keep backwards compat for now with msm/osm + DEFAULT_CONSTRAINTS = 'https://raw.githubusercontent.com/OpenVoiceOS/ovos-releases/refs/heads/main/constraints-stable.txt' PIP_LOCK = NamedLock("ovos_pip.lock") + UV = shutil.which("uv") # use 'uv pip' if available, speeds things up a lot and is the default in raspOVOS def __init__(self, bus, config=None): self.config = config or Configuration().get("skills", {}).get("installer", {}) @@ -44,6 +47,27 @@ def play_success_sound(self): snd = self.config.get("sounds", {}).get("pip_success", "snd/acknowledge.mp3") self.bus.emit(Message("mycroft.audio.play_sound", {"uri": snd})) + @staticmethod + def validate_constrainsts(constraints: str): + if constraints.startswith('http'): + LOG.debug(f"Constraints url: {constraints}") + try: + response = requests.head(constraints) + if response.status_code != 200: + LOG.error(f'Remote constraints file not accessible: {response.status_code}') + return False + return True + except Exception as e: + LOG.error(f'Error accessing remote constraints: {str(e)}') + return False + + # Use constraints to limit the installed versions + if not exists(constraints): + LOG.error('Couldn\'t find the constraints file') + return False + + return True + def pip_install(self, packages: list, constraints: Optional[str] = None, print_logs: bool = True): @@ -51,15 +75,18 @@ def pip_install(self, packages: list, LOG.error("no package list provided to install") self.play_error_sound() return False - # Use constraints to limit the installed versions - if constraints and not exists(constraints): - LOG.error('Couldn\'t find the constraints file') + + # can be set in mycroft.conf to change to testing/alpha channels + constraints = constraints or self.config.get("constraints", SkillsStore.DEFAULT_CONSTRAINTS) + + if not self.validate_constrainsts(constraints): self.play_error_sound() return False - elif exists(SkillsStore.DEFAULT_CONSTRAINTS): - constraints = SkillsStore.DEFAULT_CONSTRAINTS - pip_args = [sys.executable, '-m', 'pip', 'install'] + if self.UV is not None: + pip_args = [self.UV, 'pip', 'install'] + else: + pip_args = [sys.executable, '-m', 'pip', 'install'] if constraints: pip_args += ['-c', constraints] if self.config.get("break_system_packages", False): @@ -101,30 +128,37 @@ def pip_uninstall(self, packages: list, self.play_error_sound() return False - # Use constraints to limit package removal - if constraints and not exists(constraints): - LOG.error('Couldn\'t find the constraints file') + # can be set in mycroft.conf to change to testing/alpha channels + constraints = constraints or self.config.get("constraints", SkillsStore.DEFAULT_CONSTRAINTS) + + if not self.validate_constrainsts(constraints): self.play_error_sound() return False - elif exists(SkillsStore.DEFAULT_CONSTRAINTS): - constraints = SkillsStore.DEFAULT_CONSTRAINTS - if constraints: + # get protected packages that can't be uninstalled + # by default cant uninstall any official ovos package via this bus api + if constraints.startswith("http"): + cpkgs = requests.get(constraints).text.split("\n") + elif exists(constraints): with open(constraints) as f: - # remove version pinning and normalize _ to - (pip accepts both) - cpkgs = [p.split("~")[0].split("<")[0].split(">")[0].split("=")[0].replace("_", "-") - for p in f.read().split("\n") if p.strip()] + cpkgs = f.read().split("\n") else: cpkgs = ["ovos-core", "ovos-utils", "ovos-plugin-manager", "ovos-config", "ovos-bus-client", "ovos-workshop"] - # normalize _ to - (pip accepts both) - if any(p.replace("_", "-") in cpkgs for p in packages): + # remove version pinning and normalize _ to - (pip accepts both) + cpkgs = [p.split("~")[0].split("<")[0].split(">")[0].split("=")[0].replace("_", "-") + for p in cpkgs] + + if any(p in cpkgs for p in packages): LOG.error(f'tried to uninstall a protected package: {cpkgs}') self.play_error_sound() return False - pip_args = [sys.executable, '-m', 'pip', 'uninstall', '-y'] + if self.UV is not None: + pip_args = [self.UV, 'pip', 'uninstall'] + else: + pip_args = [sys.executable, '-m', 'pip', 'uninstall', '-y'] if self.config.get("break_system_packages", False): pip_args += ["--break-system-packages"] @@ -152,7 +186,8 @@ def pip_uninstall(self, packages: list, self.play_success_sound() return True - def validate_skill(self, url): + @staticmethod + def validate_skill(url): if not url.startswith("https://github.com/"): return False # TODO - check if setup.py From 11972bb863b41ebdb19b224f57b8e01fb2083c8a Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 15:27:08 +0000 Subject: [PATCH 08/10] Increment Version to 0.2.21a1 --- ovos_core/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ovos_core/version.py b/ovos_core/version.py index 39e003203ae2..51e3f8ebff1e 100644 --- a/ovos_core/version.py +++ b/ovos_core/version.py @@ -1,7 +1,7 @@ # START_VERSION_BLOCK VERSION_MAJOR = 0 VERSION_MINOR = 2 -VERSION_BUILD = 20 +VERSION_BUILD = 21 VERSION_ALPHA = 1 # END_VERSION_BLOCK From e57067780368fc821a70578d9e06c3a50227c520 Mon Sep 17 00:00:00 2001 From: JarbasAl Date: Fri, 6 Dec 2024 15:27:49 +0000 Subject: [PATCH 09/10] Update Changelog --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2e9e1ae35dd..26e443b0acbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.2.21a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.21a1) (2024-12-06) + +[Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.20a1...0.2.21a1) + +**Closed issues:** + +- feat: constraints files [\#596](https://github.com/OpenVoiceOS/ovos-core/issues/596) + +**Merged pull requests:** + +- fix: constraints.txt from url [\#617](https://github.com/OpenVoiceOS/ovos-core/pull/617) ([JarbasAl](https://github.com/JarbasAl)) + ## [0.2.20a1](https://github.com/OpenVoiceOS/ovos-core/tree/0.2.20a1) (2024-12-06) [Full Changelog](https://github.com/OpenVoiceOS/ovos-core/compare/0.2.19a1...0.2.20a1) From 6af3860f4123c061d854357a4e54121da671329b Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:34:52 +0000 Subject: [PATCH 10/10] Update version.py #617 should have been labeled as feature --- ovos_core/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ovos_core/version.py b/ovos_core/version.py index 51e3f8ebff1e..47b3233a2c66 100644 --- a/ovos_core/version.py +++ b/ovos_core/version.py @@ -1,7 +1,7 @@ # START_VERSION_BLOCK VERSION_MAJOR = 0 -VERSION_MINOR = 2 -VERSION_BUILD = 21 +VERSION_MINOR = 3 +VERSION_BUILD = 0 VERSION_ALPHA = 1 # END_VERSION_BLOCK