From 7b2a223c462119a261f4c7f94913a0f864b8667a Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:03:11 +0100 Subject: [PATCH 01/19] re-worked the components for Rhino8 --- src/compas_eve/ghpython/__init__.py | 64 ++++++++++++++++++- .../components/Ce_BackgroundTask/code.py | 8 ++- .../ghpython/components/Ce_Message/code.py | 1 + .../components/Ce_MqttConnect/code.py | 10 +-- .../ghpython/components/Ce_Publish/code.py | 20 +++--- .../ghpython/components/Ce_Subscribe/code.py | 13 ++-- 6 files changed, 95 insertions(+), 21 deletions(-) diff --git a/src/compas_eve/ghpython/__init__.py b/src/compas_eve/ghpython/__init__.py index 299aa33d..89d5ca87 100644 --- a/src/compas_eve/ghpython/__init__.py +++ b/src/compas_eve/ghpython/__init__.py @@ -13,9 +13,71 @@ :nosignatures: BackgroundWorker + warning + error + remark + message """ +try: + import Grasshopper # type: ignore +except (ImportError, SyntaxError): + pass + from .background import BackgroundWorker -__all__ = ["BackgroundWorker"] + +def warning(component, message): + """Add a warning message to the component. + + Parameters + ---------- + component : Grasshopper.Kernel.IGH_Component + The component instance. Pre-Rhino8 use `self`. Post-Rhino8 use `ghenv.Component`. + message : str + The message to display. + """ + component.AddRuntimeMessage(Grasshopper.Kernel.GH_RuntimeMessageLevel.Warning, message) + + +def error(component, message): + """Add an error message to the component. + + Parameters + ---------- + component : Grasshopper.Kernel.IGH_Component + The component instance. Pre-Rhino8 use `self`. Post-Rhino8 use `ghenv.Component`. + message : str + The message to display. + """ + component.AddRuntimeMessage(Grasshopper.Kernel.GH_RuntimeMessageLevel.Error, message) + + +def remark(component, message): + """Add a remark message to the component. + + Parameters + ---------- + component : Grasshopper.Kernel.IGH_Component + The component instance. Pre-Rhino8 use `self`. Post-Rhino8 use `ghenv.Component`. + message : str + The message to display. + """ + component.AddRuntimeMessage(Grasshopper.Kernel.GH_RuntimeMessageLevel.Remark, message) + + +def message(component, message): + """Add a text that will appear under the component. + + Parameters + ---------- + component : Grasshopper.Kernel.IGH_Component + The component instance. Pre-Rhino8 use `self`. Post-Rhino8 use `ghenv.Component`. + message : str + The message to display. + """ + component.Message = message + + +__all__ = ["BackgroundWorker", "warning", "error", "remark", "message"] diff --git a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py index 5d947493..5becb95d 100644 --- a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py +++ b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py @@ -1,3 +1,4 @@ +# env: C:\Users\ckasirer\Documents\repos\compas_eve\src """ Background Task component. @@ -7,16 +8,17 @@ """ import threading + +import Grasshopper import scriptcontext as sc +import System from compas_eve.ghpython import BackgroundWorker -from ghpythonlib.componentbase import executingcomponent as component - DEBUG = False -class BackgroundTaskComponent(component): +class BackgroundTaskComponent(Grasshopper.Kernel.GH_ScriptInstance): def RunScript(self, task, reset, on): if not on: BackgroundWorker.stop_instance_by_component(ghenv) # noqa: F821 diff --git a/src/compas_eve/ghpython/components/Ce_Message/code.py b/src/compas_eve/ghpython/components/Ce_Message/code.py index 897adeab..b151399e 100644 --- a/src/compas_eve/ghpython/components/Ce_Message/code.py +++ b/src/compas_eve/ghpython/components/Ce_Message/code.py @@ -1,3 +1,4 @@ +# env: C:\Users\ckasirer\Documents\repos\compas_eve\src """ Create a message. diff --git a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py index cd324acb..97c6aa16 100644 --- a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py +++ b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py @@ -1,3 +1,4 @@ +# env: C:\Users\ckasirer\Documents\repos\compas_eve\src """ Connect or disconnect to an MQTT broker. @@ -6,21 +7,22 @@ from threading import Event +import Grasshopper +import System from compas_ghpython import create_id -from ghpythonlib.componentbase import executingcomponent as component from scriptcontext import sticky as st from compas_eve.mqtt import MqttTransport -class MqttConnectComponent(component): - def RunScript(self, host, port, connect): +class MqttConnectComponent(Grasshopper.Kernel.GH_ScriptInstance): + def RunScript(self, host: str, port: int, connect: bool): mqtt_transport = None host = host or "127.0.0.1" port = port or 1883 - key = create_id(self, "mqtt_transport") + key = create_id(ghenv.Component, "mqtt_transport") mqtt_transport = st.get(key, None) if mqtt_transport: diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index 3386e60a..fd5f0cb4 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -1,3 +1,4 @@ +# env: C:\Users\ckasirer\Documents\repos\compas_eve\src """ Publish messages to a topic. @@ -6,24 +7,27 @@ import time -from ghpythonlib.componentbase import executingcomponent as component +import Grasshopper +import System +from compas_ghpython import create_id from scriptcontext import sticky as st -from compas_eve import Topic from compas_eve import Publisher -from compas_ghpython import create_id +from compas_eve import Topic +from compas_eve.ghpython import warning -class PublishComponent(component): - def RunScript(self, transport, topic_name, message, on): +class PublishComponent(Grasshopper.Kernel.GH_ScriptInstance): + def RunScript(self, transport, topic_name: str, message, on: bool): if not topic_name: - raise ValueError("Please specify the name of the topic") + warning(ghenv.Component, "Please specify the name of the topic") + return if on is None: on = True - key = create_id(self, "publisher_{}".format(id(transport))) - key_count = create_id(self, "publisher_count_{}".format(id(transport))) + key = create_id(ghenv.Component, "publisher_{}".format(id(transport))) + key_count = create_id(ghenv.Component, "publisher_count_{}".format(id(transport))) publisher = st.get(key, None) if not publisher: diff --git a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py index 62b5ed72..d67ba6a2 100644 --- a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py +++ b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py @@ -1,20 +1,23 @@ +# env: C:\Users\ckasirer\Documents\repos\compas_eve\src """ Subscribe to a topic to receive messages. COMPAS EVE v2.0.0 """ -from ghpythonlib.componentbase import executingcomponent as component +import System +import Grasshopper from compas_eve import Topic from compas_eve import Subscriber from compas_eve.ghpython import BackgroundWorker +from compas_eve.ghpython import warning - -class SubscribeComponent(component): - def RunScript(self, transport, topic_name, start, on): +class SubscribeComponent(Grasshopper.Kernel.GH_ScriptInstance): + def RunScript(self, transport, topic_name: str, start: bool, on: bool): if not topic_name: - raise ValueError("Please specify the name of the topic") + warning(ghenv.Component, "Please specify the name of the topic") + return None if on is None: on = True From d36289ab56ce5f60e6452f06ce673382ea077a61 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:04:11 +0100 Subject: [PATCH 02/19] added yak infrastructure --- requirements-dev.txt | 3 +- src/compas_eve/ghpython/yak_template/icon.png | Bin 0 -> 4620 bytes .../ghpython/yak_template/manifest.yml | 28 ++++++++++++++++++ tasks.py | 7 +++-- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/compas_eve/ghpython/yak_template/icon.png create mode 100644 src/compas_eve/ghpython/yak_template/manifest.yml diff --git a/requirements-dev.txt b/requirements-dev.txt index e9337a79..1772fe59 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -9,4 +9,5 @@ pytest-mock ruff sphinx_compas2_theme twine -wheel \ No newline at end of file +wheel +pythonnet \ No newline at end of file diff --git a/src/compas_eve/ghpython/yak_template/icon.png b/src/compas_eve/ghpython/yak_template/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ff78cde634215c7effbea1fa99b25431239893 GIT binary patch literal 4620 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 Date: Mon, 3 Nov 2025 17:04:49 +0100 Subject: [PATCH 03/19] replaced .bumpversion.cfg and setup.py with pyproject.toml --- .bumpversion.cfg | 25 ---------------- CHANGELOG.md | 1 + pyproject.toml | 33 ++++++++++++++++++++- setup.py | 76 ------------------------------------------------ 4 files changed, 33 insertions(+), 102 deletions(-) delete mode 100644 .bumpversion.cfg delete mode 100644 setup.py diff --git a/.bumpversion.cfg b/.bumpversion.cfg deleted file mode 100644 index 19761235..00000000 --- a/.bumpversion.cfg +++ /dev/null @@ -1,25 +0,0 @@ -[bumpversion] -current_version = 2.0.0 -message = Bump version to {new_version} -commit = True -tag = True - -[bumpversion:file:docs/installation.rst] -search = {current_version} -replace = {new_version} - -[bumpversion:file:setup.py] -search = version="{current_version}" -replace = version="{new_version}" - -[bumpversion:file:src/compas_eve/__init__.py] -search = __version__ = "{current_version}" -replace = __version__ = "{new_version}" - -[bumpversion:file:CHANGELOG.md] -search = Unreleased -replace = [{new_version}] {now:%Y-%m-%d} - -[bumpversion:glob:src/compas_eve/ghpython/components/**/code.py] -search = v{current_version} -replace = v{new_version} diff --git a/CHANGELOG.md b/CHANGELOG.md index 489c47f7..68957eed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed +* Removed Rhino7 Grasshopper components and replaces them with Rhino8 ones. ## [2.0.0] 2025-10-30 diff --git a/pyproject.toml b/pyproject.toml index 27a6e842..7caf058f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,11 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] +[tool.setuptools.dynamic] +version = { attr = "compas_eve.__version__" } +dependencies = { file = "requirements.txt" } +optional-dependencies = { dev = { file = "requirements-dev.txt" } } + [project.entry-points.'compas_pb.plugins'] serializers = 'compas_eve.codecs.conversions' @@ -99,4 +104,30 @@ max-doc-length = 179 [tool.ruff.format] docstring-code-format = true -docstring-code-line-length = "dynamic" \ No newline at end of file +docstring-code-line-length = "dynamic" + +[tool.bumpversion] +current_version = "2.0.0" +message = "Bump version to {new_version}" +commit = true +tag = true + +[[tool.bumpversion.files]] +filename = "src/compas_eve/__init__.py" +search = "{current_version}" +replace = "{new_version}" + +[[tool.bumpversion.files]] +filename = "docs/installation.rst" +search = "{current_version}" +replace = "{new_version}" + +[[tool.bumpversion.files]] +glob = "src/compas_eve/ghpython/components/**/code.py" +search = "v{current_version}" +replace = "v{new_version}" + +[[tool.bumpversion.files]] +filename = "CHANGELOG.md" +search = "Unreleased" +replace = "[{new_version}] {now:%Y-%m-%d}" diff --git a/setup.py b/setup.py deleted file mode 100644 index f4a31c22..00000000 --- a/setup.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- -# flake8: noqa -from __future__ import absolute_import -from __future__ import print_function - -import io -from os import path - -from setuptools import setup -from setuptools.command.develop import develop -from setuptools.command.install import install - - -here = path.abspath(path.dirname(__file__)) - - -def read(*names, **kwargs): - return io.open(path.join(here, *names), encoding=kwargs.get("encoding", "utf8")).read() - - -long_description = read("README.md") -requirements = read("requirements.txt").split("\n") - -# Read dev requirements for optional dependencies -dev_requirements = [ - line.strip() - for line in read("requirements-dev.txt").split("\n") - if line.strip() and not line.strip().startswith("#") and line.strip() != "-e ." -] - -optional_requirements = { - "dev": dev_requirements, -} - -setup( - name="compas_eve", - version="2.0.0", - description="COMPAS Event Extensions: adds event-based communication infrastructure to the COMPAS framework.", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/compas-dev/compas_eve", - author="Gonzalo Casas", - author_email="casas@arch.ethz.ch", - license="MIT license", - classifiers=[ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Topic :: Scientific/Engineering", - "License :: OSI Approved :: MIT License", - "Operating System :: Unix", - "Operating System :: POSIX", - "Operating System :: Microsoft :: Windows", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: Implementation :: CPython", - ], - keywords=[], - project_urls={}, - packages=["compas_eve"], - package_dir={"": "src"}, - package_data={}, - data_files=[], - include_package_data=True, - zip_safe=False, - install_requires=requirements, - python_requires=">=3.8", - extras_require=optional_requirements, - entry_points={ - "console_scripts": [], - }, - ext_modules=[], -) From df4437c1c8f9c52589006789dd0884141791a497 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:06:13 +0100 Subject: [PATCH 04/19] config section headers --- pyproject.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7caf058f..bcccf701 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=66.0"] build-backend = "setuptools.build_meta" # ============================================================================ -# project info +# Project info # ============================================================================ [project] @@ -51,7 +51,7 @@ Forum = "https://forum.compas-framework.org/" # ============================================================================ -# setuptools config +# Linting and formatting # ============================================================================ [tool.ruff] @@ -106,6 +106,10 @@ max-doc-length = 179 docstring-code-format = true docstring-code-line-length = "dynamic" +# ============================================================================ +# Release automation +# ============================================================================ + [tool.bumpversion] current_version = "2.0.0" message = "Bump version to {new_version}" From 6d114468792f3df7fadd49ebc0afb66e3a18aa8d Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:06:58 +0100 Subject: [PATCH 05/19] reverted dev header --- src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py | 2 +- src/compas_eve/ghpython/components/Ce_Message/code.py | 2 +- src/compas_eve/ghpython/components/Ce_MqttConnect/code.py | 2 +- src/compas_eve/ghpython/components/Ce_Publish/code.py | 2 +- src/compas_eve/ghpython/components/Ce_Subscribe/code.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py index 5becb95d..ab789462 100644 --- a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py +++ b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py @@ -1,4 +1,4 @@ -# env: C:\Users\ckasirer\Documents\repos\compas_eve\src +# r: compas_eve>=2.0.0 """ Background Task component. diff --git a/src/compas_eve/ghpython/components/Ce_Message/code.py b/src/compas_eve/ghpython/components/Ce_Message/code.py index b151399e..536c575a 100644 --- a/src/compas_eve/ghpython/components/Ce_Message/code.py +++ b/src/compas_eve/ghpython/components/Ce_Message/code.py @@ -1,4 +1,4 @@ -# env: C:\Users\ckasirer\Documents\repos\compas_eve\src +# r: compas_eve>=2.0.0 """ Create a message. diff --git a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py index 97c6aa16..3676c14c 100644 --- a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py +++ b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py @@ -1,4 +1,4 @@ -# env: C:\Users\ckasirer\Documents\repos\compas_eve\src +# r: compas_eve>=2.0.0 """ Connect or disconnect to an MQTT broker. diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index fd5f0cb4..29c2127f 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -1,4 +1,4 @@ -# env: C:\Users\ckasirer\Documents\repos\compas_eve\src +# r: compas_eve>=2.0.0 """ Publish messages to a topic. diff --git a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py index d67ba6a2..2e39064d 100644 --- a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py +++ b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py @@ -1,4 +1,4 @@ -# env: C:\Users\ckasirer\Documents\repos\compas_eve\src +# r: compas_eve>=2.0.0 """ Subscribe to a topic to receive messages. From d52024111bad29ea6bbb107d62e5d946689a3ff7 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:10:17 +0100 Subject: [PATCH 06/19] added yak publish task --- .github/workflows/yak_publish.yml | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/yak_publish.yml diff --git a/.github/workflows/yak_publish.yml b/.github/workflows/yak_publish.yml new file mode 100644 index 00000000..0e29b314 --- /dev/null +++ b/.github/workflows/yak_publish.yml @@ -0,0 +1,59 @@ +name: publish_yak + +on: + workflow_dispatch: + inputs: + environment: + description: "Choose deployment environment" + required: true + type: choice + options: + - test + - prod + +jobs: + + publish_test_yak: + runs-on: windows-latest + + steps: + + - name: Set test flag based on input + shell: pwsh + run: | + if ("${{ github.event.inputs.environment }}" -eq "test") { + echo "TEST_FLAG=--test-server" | Out-File -FilePath $env:GITHUB_ENV -Append + } + else { + echo "TEST_FLAG=" | Out-File -FilePath $env:GITHUB_ENV -Append + } + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e .[dev] + + - name: Create CPython Grasshopper user objects + run: | + invoke build-cpython-ghuser-components + + - name: Create Rhino8 Yak package + shell: pwsh + run: | + invoke yakerize -m $Env:YAK_TEMPLATE\manifest.yml -l $Env:YAK_TEMPLATE\icon.png -g $Env:USER_OBJECTS -t rh8 + env: + USER_OBJECTS: src\compas_eve\ghpython\components\ghuser + YAK_TEMPLATE: src\compas_eve\ghpython\yak_template + + - name: Publish to Yak server (Rhino 8) + shell: pwsh + run: | + $test_flag = if ($Env:TEST_FLAG) { $Env:TEST_FLAG } else { "" } + $file = Get-ChildItem -Path dist\yak_package\*rh8*.yak -File | Select-Object -ExpandProperty Name + $command = "invoke publish-yak -y dist\yak_package\$file $test_flag".Trim() + Invoke-Expression $command + env: + YAK_TOKEN: ${{ secrets.YAK_DF_TOKEN }} \ No newline at end of file From 321dc5087c0cbfa71f7a1dd237223985a2179e59 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:11:21 +0100 Subject: [PATCH 07/19] the possibilities are endless --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index bcccf701..618b44fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -131,6 +131,11 @@ glob = "src/compas_eve/ghpython/components/**/code.py" search = "v{current_version}" replace = "v{new_version}" +[[tool.bumpversion.files]] +glob = "src/compas_eve/ghpython/components/**/code.py" +search = "# r: compas_eve>={current_version}" +replace = "# r: compas_eve>={new_version}" + [[tool.bumpversion.files]] filename = "CHANGELOG.md" search = "Unreleased" From 4b95d24f73f55310d6b83133ca1c2f7e49f60639 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:14:00 +0100 Subject: [PATCH 08/19] removed maybe redundant version in docstring --- pyproject.toml | 5 ----- src/compas_eve/ghpython/components/Ce_Message/code.py | 2 -- src/compas_eve/ghpython/components/Ce_MqttConnect/code.py | 2 -- src/compas_eve/ghpython/components/Ce_Publish/code.py | 2 -- src/compas_eve/ghpython/components/Ce_Subscribe/code.py | 2 -- 5 files changed, 13 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 618b44fd..e86bb08d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -126,11 +126,6 @@ filename = "docs/installation.rst" search = "{current_version}" replace = "{new_version}" -[[tool.bumpversion.files]] -glob = "src/compas_eve/ghpython/components/**/code.py" -search = "v{current_version}" -replace = "v{new_version}" - [[tool.bumpversion.files]] glob = "src/compas_eve/ghpython/components/**/code.py" search = "# r: compas_eve>={current_version}" diff --git a/src/compas_eve/ghpython/components/Ce_Message/code.py b/src/compas_eve/ghpython/components/Ce_Message/code.py index 536c575a..9604d8e3 100644 --- a/src/compas_eve/ghpython/components/Ce_Message/code.py +++ b/src/compas_eve/ghpython/components/Ce_Message/code.py @@ -1,8 +1,6 @@ # r: compas_eve>=2.0.0 """ Create a message. - -COMPAS EVE v2.0.0 """ import System diff --git a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py index 3676c14c..69b96639 100644 --- a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py +++ b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py @@ -1,8 +1,6 @@ # r: compas_eve>=2.0.0 """ Connect or disconnect to an MQTT broker. - -COMPAS EVE v2.0.0 """ from threading import Event diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index 29c2127f..00fadd1c 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -1,8 +1,6 @@ # r: compas_eve>=2.0.0 """ Publish messages to a topic. - -COMPAS EVE v2.0.0 """ import time diff --git a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py index 2e39064d..16155f80 100644 --- a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py +++ b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py @@ -1,8 +1,6 @@ # r: compas_eve>=2.0.0 """ Subscribe to a topic to receive messages. - -COMPAS EVE v2.0.0 """ import System From ddfa02a6c2bcc757c8f686491d1f3463ca89f09d Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:19:12 +0100 Subject: [PATCH 09/19] linting and formatting --- src/compas_eve/codecs/conversions.py | 2 +- .../ghpython/components/Ce_BackgroundTask/code.py | 1 - src/compas_eve/ghpython/components/Ce_Message/code.py | 7 +++---- src/compas_eve/ghpython/components/Ce_MqttConnect/code.py | 1 - src/compas_eve/ghpython/components/Ce_Publish/code.py | 1 - src/compas_eve/ghpython/components/Ce_Subscribe/code.py | 4 ++-- src/compas_eve/mqtt/mqtt_paho.py | 7 ++++--- 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/compas_eve/codecs/conversions.py b/src/compas_eve/codecs/conversions.py index 806602c8..a36ac41f 100644 --- a/src/compas_eve/codecs/conversions.py +++ b/src/compas_eve/codecs/conversions.py @@ -3,8 +3,8 @@ from compas_pb.registry import pb_deserializer from compas_pb.registry import pb_serializer -from compas_eve.proto import message_pb2 from compas_eve import Message +from compas_eve.proto import message_pb2 @pb_serializer(Message) diff --git a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py index ab789462..59d3578d 100644 --- a/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py +++ b/src/compas_eve/ghpython/components/Ce_BackgroundTask/code.py @@ -11,7 +11,6 @@ import Grasshopper import scriptcontext as sc -import System from compas_eve.ghpython import BackgroundWorker diff --git a/src/compas_eve/ghpython/components/Ce_Message/code.py b/src/compas_eve/ghpython/components/Ce_Message/code.py index 9604d8e3..243d23de 100644 --- a/src/compas_eve/ghpython/components/Ce_Message/code.py +++ b/src/compas_eve/ghpython/components/Ce_Message/code.py @@ -3,15 +3,14 @@ Create a message. """ -import System - import Rhino.Geometry as rg import rhinoscriptsyntax as rs - +import System from compas.geometry import Brep -from compas_eve import Message from compas_rhino import conversions +from compas_eve import Message + component = ghenv.Component # noqa: F821 local_values = locals() diff --git a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py index 69b96639..9919a23e 100644 --- a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py +++ b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py @@ -6,7 +6,6 @@ from threading import Event import Grasshopper -import System from compas_ghpython import create_id from scriptcontext import sticky as st diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index 00fadd1c..d019b548 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -6,7 +6,6 @@ import time import Grasshopper -import System from compas_ghpython import create_id from scriptcontext import sticky as st diff --git a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py index 16155f80..6a8bc73f 100644 --- a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py +++ b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py @@ -3,14 +3,14 @@ Subscribe to a topic to receive messages. """ -import System import Grasshopper -from compas_eve import Topic from compas_eve import Subscriber +from compas_eve import Topic from compas_eve.ghpython import BackgroundWorker from compas_eve.ghpython import warning + class SubscribeComponent(Grasshopper.Kernel.GH_ScriptInstance): def RunScript(self, transport, topic_name: str, start: bool, on: bool): if not topic_name: diff --git a/src/compas_eve/mqtt/mqtt_paho.py b/src/compas_eve/mqtt/mqtt_paho.py index 5ac217c8..a154e723 100644 --- a/src/compas_eve/mqtt/mqtt_paho.py +++ b/src/compas_eve/mqtt/mqtt_paho.py @@ -1,8 +1,9 @@ -from ..core import Transport -from ..event_emitter import EventEmitterMixin +import uuid import paho.mqtt.client as mqtt -import uuid + +from ..core import Transport +from ..event_emitter import EventEmitterMixin try: from paho.mqtt.enums import CallbackAPIVersion From 6df0ab56ab9513c8d817c08402546a10b0ff7cf9 Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:20:11 +0100 Subject: [PATCH 10/19] # noqa: F821 -ing --- src/compas_eve/ghpython/components/Ce_MqttConnect/code.py | 2 +- src/compas_eve/ghpython/components/Ce_Publish/code.py | 6 +++--- src/compas_eve/ghpython/components/Ce_Subscribe/code.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py index 9919a23e..e7a208d9 100644 --- a/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py +++ b/src/compas_eve/ghpython/components/Ce_MqttConnect/code.py @@ -19,7 +19,7 @@ def RunScript(self, host: str, port: int, connect: bool): host = host or "127.0.0.1" port = port or 1883 - key = create_id(ghenv.Component, "mqtt_transport") + key = create_id(ghenv.Component, "mqtt_transport") # noqa: F821 mqtt_transport = st.get(key, None) if mqtt_transport: diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index d019b548..6cf34127 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -17,14 +17,14 @@ class PublishComponent(Grasshopper.Kernel.GH_ScriptInstance): def RunScript(self, transport, topic_name: str, message, on: bool): if not topic_name: - warning(ghenv.Component, "Please specify the name of the topic") + warning(ghenv.Component, "Please specify the name of the topic") # noqa: F821 return if on is None: on = True - key = create_id(ghenv.Component, "publisher_{}".format(id(transport))) - key_count = create_id(ghenv.Component, "publisher_count_{}".format(id(transport))) + key = create_id(ghenv.Component, "publisher_{}".format(id(transport))) # noqa: F821 + key_count = create_id(ghenv.Component, "publisher_count_{}".format(id(transport))) # noqa: F821 publisher = st.get(key, None) if not publisher: diff --git a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py index 6a8bc73f..846d22ac 100644 --- a/src/compas_eve/ghpython/components/Ce_Subscribe/code.py +++ b/src/compas_eve/ghpython/components/Ce_Subscribe/code.py @@ -14,7 +14,7 @@ class SubscribeComponent(Grasshopper.Kernel.GH_ScriptInstance): def RunScript(self, transport, topic_name: str, start: bool, on: bool): if not topic_name: - warning(ghenv.Component, "Please specify the name of the topic") + warning(ghenv.Component, "Please specify the name of the topic") # noqa: F821 return None if on is None: From 67a794f51685b6278b027f73d1073bd3241bd3cd Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Mon, 3 Nov 2025 17:20:28 +0100 Subject: [PATCH 11/19] formatting --- src/compas_eve/ghpython/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/compas_eve/ghpython/__init__.py b/src/compas_eve/ghpython/__init__.py index 89d5ca87..e2a3c7a7 100644 --- a/src/compas_eve/ghpython/__init__.py +++ b/src/compas_eve/ghpython/__init__.py @@ -19,6 +19,7 @@ message """ + try: import Grasshopper # type: ignore except (ImportError, SyntaxError): From 7f1990b2c20d5e3846252f022e4970892e0e4a8e Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Wed, 5 Nov 2025 13:42:42 +0100 Subject: [PATCH 12/19] fixed typos --- CHANGELOG.md | 2 +- src/compas_eve/ghpython/components/Ce_Publish/code.py | 2 +- src/compas_eve/ghpython/yak_template/manifest.yml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68957eed..e8f90899 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed -* Removed Rhino7 Grasshopper components and replaces them with Rhino8 ones. +* Removed Rhino7 Grasshopper components and replaced them with Rhino8 ones. ## [2.0.0] 2025-10-30 diff --git a/src/compas_eve/ghpython/components/Ce_Publish/code.py b/src/compas_eve/ghpython/components/Ce_Publish/code.py index 6cf34127..ec098bf4 100644 --- a/src/compas_eve/ghpython/components/Ce_Publish/code.py +++ b/src/compas_eve/ghpython/components/Ce_Publish/code.py @@ -18,7 +18,7 @@ class PublishComponent(Grasshopper.Kernel.GH_ScriptInstance): def RunScript(self, transport, topic_name: str, message, on: bool): if not topic_name: warning(ghenv.Component, "Please specify the name of the topic") # noqa: F821 - return + return None if on is None: on = True diff --git a/src/compas_eve/ghpython/yak_template/manifest.yml b/src/compas_eve/ghpython/yak_template/manifest.yml index ad534cdc..9375fdeb 100644 --- a/src/compas_eve/ghpython/yak_template/manifest.yml +++ b/src/compas_eve/ghpython/yak_template/manifest.yml @@ -22,7 +22,6 @@ keywords: [ "subscribe", "topic", "event-driven", - "architecture", "distributed systems" ] icon: "icon.png" From 6ebe37ed6da722ce112e68893e32ab32176841aa Mon Sep 17 00:00:00 2001 From: Chen Kasirer Date: Thu, 6 Nov 2025 10:08:39 +0100 Subject: [PATCH 13/19] removed new functions from docs as they will be upstreamed to core Co-authored-by: Gonzalo Casas --- src/compas_eve/ghpython/__init__.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/compas_eve/ghpython/__init__.py b/src/compas_eve/ghpython/__init__.py index e2a3c7a7..ad054b8b 100644 --- a/src/compas_eve/ghpython/__init__.py +++ b/src/compas_eve/ghpython/__init__.py @@ -13,10 +13,6 @@ :nosignatures: BackgroundWorker - warning - error - remark - message """ From a776b05ed42623a9849dd4de863fc13dc92f350e Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:22:49 +0100 Subject: [PATCH 14/19] fix breaking change in `pytest >= 8` --- conftest.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/conftest.py b/conftest.py index 371bdb6d..d0f59dcf 100644 --- a/conftest.py +++ b/conftest.py @@ -1,19 +1,20 @@ -import pytest -import compas -import compas_eve +from pathlib import Path import math import numpy +import pytest +import compas +import compas_eve -def pytest_ignore_collect(path): - if "rhino" in str(path): - return True - if "blender" in str(path): +def pytest_ignore_collect(collection_path: Path, config): + # Skip anything under rhino/blender/ghpython + parts_lower = {p.lower() for p in collection_path.parts} + if {"rhino", "blender", "ghpython"} & parts_lower: return True - if "ghpython" in str(path): - return True + # return None -> don't ignore + return None @pytest.fixture(autouse=True) From 972919a16ce90a27df56e31d77e56e8c1293eebb Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:23:21 +0100 Subject: [PATCH 15/19] minor updates to CI workflows --- .github/workflows/build.yml | 2 +- .github/workflows/docs.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3976fc45..fe2e9549 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python: ['3.10', '3.11'] + python: ['3.9', '3.11', '3.12'] steps: - uses: compas-dev/compas-actions.build@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7a04c2a7..d7f3b1c4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -14,6 +14,7 @@ jobs: docs: runs-on: ubuntu-latest steps: - - uses: compas-dev/compas-actions.docs@v2 + - uses: compas-dev/compas-actions.docs@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} + use_conda: false From ec5f9d4cff599535df4ac36004061970acaad43c Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:23:39 +0100 Subject: [PATCH 16/19] Update release workflow to remove inlined copy of the action --- .github/workflows/release.yml | 93 +++++------------------------------ 1 file changed, 13 insertions(+), 80 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e15e9b0..ff979e33 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,19 +6,21 @@ on: - 'v*' jobs: - build: + Build: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python: ['3.10', '3.11'] + os: [ubuntu-latest] + python: ['3.10'] steps: - uses: compas-dev/compas-actions.build@v4 with: - python: ${{ matrix.python }} invoke_lint: true + check_import: false + use_conda: false invoke_test: false + python: ${{ matrix.python }} - name: Run unit tests run: | pytest tests/unit @@ -44,81 +46,12 @@ jobs: docker rm -f nanomq Publish: - needs: build - runs-on: windows-latest + needs: Build + runs-on: ubuntu-latest steps: - # The steps should rely on compas-actions.publish - # but this bug is blocking it: https://github.com/compas-dev/compas-actions.publish/issues/1 - # so atm, it's a copy of the steps - - # - uses: compas-dev/compas-actions.publish@v2 - # with: - # pypi_token: ${{ secrets.PYPI }} - # github_token: ${{ secrets.TOKEN }} - # build_ghpython_components: true - # gh_source: src/compas_eve/ghpython/components - # gh_target: src/compas_eve/ghpython/components/ghuser - # release_name_prefix: COMPAS EVE v - - - uses: actions/checkout@v3 - - - name: Get Version From Tag - id: tag_name - run: | - echo "current_version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - shell: bash - - - name: Get Changelog Entry - id: changelog_reader - uses: mindsers/changelog-reader-action@v2 - with: - version: ${{ steps.tag_name.outputs.current_version }} - path: ./CHANGELOG.md - - - name: Assemble Release Name - id: assemble_release_name - shell: bash - run: | - release_name="COMPAS EVE v${{ steps.tag_name.outputs.current_version }}" - echo Using release name: $release_name - echo "release_name=$release_name" >> $GITHUB_OUTPUT - - - name: Create Release - id: create_release - uses: ncipollo/release-action@v1 + - uses: compas-dev/compas-actions.publish@v3 with: - body: ${{ steps.changelog_reader.outputs.changes }} - token: ${{ secrets.TOKEN }} - name: ${{ steps.assemble_release_name.outputs.release_name }} - - - name: Setup Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Install CPython dependencies - run: | - python -m pip install --upgrade pip - python -m pip install wheel - - - uses: NuGet/setup-nuget@v1.0.5 - - name: Install dependencies - run: | - choco install ironpython --version=2.7.8.1 - - - uses: compas-dev/compas-actions.ghpython_components@v4 - with: - source: src/compas_eve/ghpython/components - target: src/compas_eve/ghpython/components/ghuser - prefix: "" - - - shell: bash - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - python setup.py clean --all sdist bdist_wheel - twine check dist/* - twine upload dist/* --skip-existing - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI }} + publish_to_pypi: true + pypi_token: ${{ secrets.PYPI }} + github_token: ${{ secrets.GITHUB_TOKEN }} + python: '3.10' From ea24e4bfd71b6fad7c4aad70ad9b0edd84fb71b8 Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:34:09 +0100 Subject: [PATCH 17/19] Build and upload components as artifacts for testing --- .github/workflows/build.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe2e9549..e5a8d7b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,3 +49,24 @@ jobs: - name: Tear down docker container run: | docker rm -f nanomq + + build-cpython-components: + runs-on: windows-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e .[dev] + + - name: Create CPython Grasshopper user objects + run: | + invoke build-cpython-ghuser-components + + - uses: actions/upload-artifact@v2 + with: + name: compas_eve_components + path: src/compas_eve/ghpython/components/ghuser From 300a43f2ad31df2d5c7cb046356bd0ec3a3ee294 Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:38:02 +0100 Subject: [PATCH 18/19] update upload-artifacts --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e5a8d7b8..8b1f91df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: run: | invoke build-cpython-ghuser-components - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v5 with: name: compas_eve_components path: src/compas_eve/ghpython/components/ghuser From 08b594f735cc28764293f0c68dfc70eb06c13289 Mon Sep 17 00:00:00 2001 From: Gonzalo Casas Date: Wed, 12 Nov 2025 11:39:41 +0100 Subject: [PATCH 19/19] meh --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b1f91df..b51dac56 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python: ['3.9', '3.11', '3.12'] + python: ['3.10', '3.11', '3.12'] steps: - uses: compas-dev/compas-actions.build@v4