devcontainer setup
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from stringcase import camelcase
|
||||
|
||||
from specklepy.transports.memory import MemoryTransport
|
||||
from specklepy.transports.server import ServerTransport
|
||||
from specklepy.api.operations import receive
|
||||
from specklepy.api.client import SpeckleClient
|
||||
from flatten import flatten_base
|
||||
from speckle_project_data import SpeckleProjectData
|
||||
|
||||
|
||||
class FunctionInputs(BaseModel):
|
||||
"""
|
||||
These are function author defined values, automate will make sure to supply them.
|
||||
"""
|
||||
|
||||
speckle_type_to_count: str
|
||||
model_config = ConfigDict(alias_generator=camelcase)
|
||||
|
||||
|
||||
def automate_function(
|
||||
project_data: SpeckleProjectData,
|
||||
function_inputs: FunctionInputs,
|
||||
speckle_token: str,
|
||||
):
|
||||
client = SpeckleClient(project_data.speckle_server_url)
|
||||
client.authenticate_with_token(speckle_token)
|
||||
commit = client.commit.get(project_data.project_id, project_data.version_id)
|
||||
|
||||
memory_transport = MemoryTransport()
|
||||
server_transport = ServerTransport(project_data.project_id, client)
|
||||
if not commit.referencedObject:
|
||||
raise ValueError("The commit has no root referencedObject.")
|
||||
|
||||
base = receive(commit.referencedObject, server_transport, memory_transport)
|
||||
|
||||
count = 0
|
||||
for b in flatten_base(base):
|
||||
if b.speckle_type == function_inputs.speckle_type_to_count:
|
||||
count += 1
|
||||
|
||||
print(
|
||||
f"Found {count} object that match the queried speckle type: ",
|
||||
"{function_inputs.speckle_type_to_count}",
|
||||
)
|
||||
Reference in New Issue
Block a user