Compare commits

..

5 Commits

Author SHA1 Message Date
KatKatKateryna 2f7113f0c5 linter 2024-08-04 23:25:43 +01:00
KatKatKateryna 7f38b24421 isort 2024-08-04 22:52:56 +01:00
KatKatKateryna cac4551fdf extension 2024-08-04 21:50:22 +01:00
KatKatKateryna 813bc8be4d gisfeature class 2024-08-04 21:44:29 +01:00
KatKatKateryna a45ae03235 return deprecated command 2024-08-04 21:42:28 +01:00
4 changed files with 24 additions and 72 deletions
+1 -1
View File
@@ -264,7 +264,7 @@ class AutomationContext:
files = {path_obj.name: open(str(path_obj), "rb")}
url = (
f"{self.automation_run_data.speckle_server_url}api/stream/"
f"{self.automation_run_data.speckle_server_url}/api/stream/"
f"{self.automation_run_data.project_id}/blob"
)
data = (
+8 -69
View File
@@ -9,7 +9,6 @@ import sys
import traceback
from pathlib import Path
from typing import Callable, Optional, Tuple, TypeVar, Union, overload
from enum import Enum
from pydantic import create_model
from pydantic.json_schema import GenerateJsonSchema
@@ -71,7 +70,14 @@ def execute_automate_function(
automate_function: AutomateFunctionWithoutInputs,
) -> None:
...
class AutomateGenerateJsonSchema(GenerateJsonSchema):
def generate(self, schema, mode="validation"):
json_schema = super().generate(schema, mode=mode)
json_schema["$schema"] = self.schema_dialect
return json_schema
def execute_automate_function(
automate_function: Union[AutomateFunction[T], AutomateFunctionWithoutInputs],
@@ -189,70 +195,3 @@ def run_function(
automation_context.set_context_view()
automation_context.report_run_status()
return automation_context
class AutomateGenerateJsonSchema(GenerateJsonSchema):
def __init__(self, by_alias: bool = True, ref_template: str = "#/$defs/{model}"):
super().__init__(by_alias=by_alias, ref_template=ref_template)
self.schema_dialect = "https://json-schema.org/draft/2020-12/schema"
def generate(self, schema, mode="validation"):
json_schema = super().generate(schema, mode=mode)
json_schema["$schema"] = self.schema_dialect
if "properties" in json_schema:
for prop, details in json_schema["properties"].items():
self._process_property(
details, json_schema.get("$defs", {}), getattr(schema, prop, None)
)
if "$defs" in json_schema:
for def_name, def_schema in json_schema["$defs"].items():
self._process_property(def_schema, json_schema["$defs"], None)
return json_schema
def _process_property(self, property_schema, defs, field):
if "allOf" in property_schema and len(property_schema["allOf"]) == 1:
ref = property_schema["allOf"][0].get("$ref")
if ref and ref.startswith("#/$defs/"):
enum_name = ref.split("/")[-1]
if enum_name in defs:
enum_schema = defs[enum_name]
property_schema.update(enum_schema)
del property_schema["allOf"]
if "enum" in property_schema:
enum_values = property_schema["enum"]
property_schema["oneOf"] = [
{"const": value, "title": str(value).upper()} for value in enum_values
]
del property_schema["enum"]
if isinstance(field, Enum):
property_schema["oneOf"] = [
{"const": item.value, "title": item.name} for item in field.__class__
]
if "default" in property_schema:
property_schema["default"] = property_schema["default"].value
if "type" not in property_schema:
if "oneOf" in property_schema:
property_schema["type"] = "string"
elif "default" in property_schema:
property_schema["type"] = self._infer_type(property_schema["default"])
else:
property_schema["type"] = "object"
@staticmethod
def _infer_type(value):
if isinstance(value, bool):
return "boolean"
elif isinstance(value, int):
return "integer"
elif isinstance(value, float):
return "number"
elif isinstance(value, str):
return "string"
else:
return "object"
+2 -2
View File
@@ -58,7 +58,7 @@ def get_local_accounts(base_path: Optional[str] = None) -> List[Account]:
res = account_storage.get_all_objects()
account_storage.close()
if res:
accounts.extend(Account.model_validate_json(r[1]) for r in res)
accounts.extend(Account.parse_raw(r[1]) for r in res)
except SpeckleException:
# cannot open SQLiteTransport, probably because of the lack
# of disk write permissions
@@ -79,7 +79,7 @@ def get_local_accounts(base_path: Optional[str] = None) -> List[Account]:
if json_acct_files:
try:
accounts.extend(
Account.model_validate_json(Path(json_path, json_file).read_text())
Account.parse_raw(Path(json_path, json_file).read_text())
# Account.parse_file(os.path.join(json_path, json_file))
for json_file in json_acct_files
)
+13
View File
@@ -0,0 +1,13 @@
from typing import List, Optional
from specklepy.objects.base import Base
class GisFeature(
Base, speckle_type="Objects.GIS.GisFeature", detachable={"displayValue"}
):
"""GIS Feature"""
geometry: Optional[List[Base]] = None
attributes: Base
displayValue: Optional[List[Base]] = None