4 Commits

Author SHA1 Message Date
Jonathon Broughton 35d428e7bb Update main.py
build and deploy Speckle functions / publish-automate-function-version (push) Has been cancelled
2024-03-12 09:23:20 +00:00
Jonathon Broughton 3be31ec96f Update main.py 2024-03-12 08:51:02 +00:00
dependabot[bot] 6e0d653c72 Bump specklesystems/speckle-automate-github-composite-action (#1)
build and deploy Speckle functions / publish-automate-function-version (push) Has been cancelled
Bumps [specklesystems/speckle-automate-github-composite-action](https://github.com/specklesystems/speckle-automate-github-composite-action) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/specklesystems/speckle-automate-github-composite-action/releases)
- [Commits](https://github.com/specklesystems/speckle-automate-github-composite-action/compare/0.8.0...0.8.1)

---
updated-dependencies:
- dependency-name: specklesystems/speckle-automate-github-composite-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-12 08:40:04 +00:00
Jonathon Broughton bcdf172982 Update flatten.py 2024-03-12 08:39:45 +00:00
3 changed files with 23 additions and 4 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
run: |
python main.py generate_schema ${HOME}/${{ env.FUNCTION_SCHEMA_FILE_NAME }}
- name: Speckle Automate Function - Build and Publish
uses: specklesystems/speckle-automate-github-composite-action@0.8.0
uses: specklesystems/speckle-automate-github-composite-action@0.8.1
with:
speckle_automate_url: ${{ env.SPECKLE_AUTOMATE_URL || 'https://automate.speckle.dev' }}
speckle_token: ${{ secrets.SPECKLE_FUNCTION_TOKEN }}
+5 -3
View File
@@ -7,7 +7,9 @@ from specklepy.objects import Base
def flatten_base(base: Base) -> Iterable[Base]:
"""Take a base and flatten it to an iterable of bases."""
if hasattr(base, "elements"):
for element in base["elements"]:
yield from flatten_base(element)
if hasattr(base, "elements") and base.elements is not None:
# Check if base.elements is not only present and non-None, but also an iterable
if isinstance(base.elements, Iterable):
for element in base.elements:
yield from flatten_base(element)
yield base
+17
View File
@@ -9,6 +9,7 @@ from speckle_automate import (
AutomationContext,
execute_automate_function,
)
from specklepy.objects import Base
from flatten import flatten_base
@@ -31,6 +32,18 @@ class FunctionInputs(AutomateBase):
),
)
import json
def serialize_base(base: Base) -> str:
"""Serializes a Base object to a JSON string."""
# Assuming there is a method to convert base objects to dictionaries
base_dict = base.to_dict() if hasattr(base, 'to_dict') else {}
# Use json.dumps() to convert the dictionary to a JSON string
# Set `default=str` to handle any objects that are not directly serializable by default
return json.dumps(base_dict, indent=4, default=str)
def automate_function(
automate_context: AutomationContext,
@@ -48,6 +61,10 @@ def automate_function(
# the context provides a conveniet way, to receive the triggering version
version_root_object = automate_context.receive_version()
# At the point in your code where you want to log the initial base object:
initial_base_json = serialize_base(initial_base)
print(f"Initial base object as JSON:\n{version_root_object}")
objects_with_forbidden_speckle_type = [
b
for b in flatten_base(version_root_object)