From b004742b6d8121270fc0c98801609c665d2d5fc8 Mon Sep 17 00:00:00 2001 From: Mateus Silva Date: Thu, 18 Jun 2026 09:08:28 -0300 Subject: [PATCH 1/2] feat: add RunTypeOptions type for analysis runtimes Introduce a shared RunTypeOptions literal in Common_Type and use it for the analysis script language and runtime fields, replacing the old node/python-only options. Update docs to reference the new type and expose the supported runtime values. --- docs/source/Resources/Analysis/Analysis_Type.rst | 4 ++-- docs/source/common/Common_Type.rst | 7 +++++++ src/tagoio_sdk/common/Common_Type.py | 3 ++- src/tagoio_sdk/modules/Resources/Analyses.py | 5 ++--- .../modules/Resources/Analysis_Types.py | 15 +++++---------- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/source/Resources/Analysis/Analysis_Type.rst b/docs/source/Resources/Analysis/Analysis_Type.rst index e0fa082..38f4497 100644 --- a/docs/source/Resources/Analysis/Analysis_Type.rst +++ b/docs/source/Resources/Analysis/Analysis_Type.rst @@ -13,7 +13,7 @@ ScriptFile | content: :ref:`Base64` - | language: "node" or "python" + | language: :ref:`RunTypeOptions` @@ -34,7 +34,7 @@ AnalysisCreateInfo | file_name: Optional[str] - | runtime: Optional["node" or "python"] + | runtime: Optional[:ref:`RunTypeOptions`] | active: Optional[bool] diff --git a/docs/source/common/Common_Type.rst b/docs/source/common/Common_Type.rst index 079ce44..6d83287 100644 --- a/docs/source/common/Common_Type.rst +++ b/docs/source/common/Common_Type.rst @@ -43,6 +43,13 @@ Conditionals | **Conditionals**: Literal["<", ">", "=", "!", "><", "*"] +.. _RunTypeOptions: + +RunTypeOptions +---------------- + + | **RunTypeOptions**: Literal["node-legacy", "python-legacy", "node-rt2025", "python-rt2025", "deno-rt2025"] + .. _TokenCreateResponse: TokenCreateResponse diff --git a/src/tagoio_sdk/common/Common_Type.py b/src/tagoio_sdk/common/Common_Type.py index b2d9f17..20031bd 100644 --- a/src/tagoio_sdk/common/Common_Type.py +++ b/src/tagoio_sdk/common/Common_Type.py @@ -4,7 +4,6 @@ from typing import TypedDict from typing import Union - GenericID = str """ID used on TagoIO, string with 24 character""" @@ -20,6 +19,8 @@ Conditionals = Literal["<", ">", "=", "!", "><", "*"] +RunTypeOptions = Literal["node-legacy", "python-legacy", "node-rt2025", "python-rt2025", "deno-rt2025"] + class TokenCreateResponse(TypedDict): token: GenericToken diff --git a/src/tagoio_sdk/modules/Resources/Analyses.py b/src/tagoio_sdk/modules/Resources/Analyses.py index 8043c3f..714413c 100644 --- a/src/tagoio_sdk/modules/Resources/Analyses.py +++ b/src/tagoio_sdk/modules/Resources/Analyses.py @@ -19,7 +19,6 @@ from tagoio_sdk.modules.Utils.dateParser import dateParser from tagoio_sdk.modules.Utils.dateParser import dateParserList - # Base URL for TagoIO analysis snippets repository SNIPPETS_BASE_URL = "https://snippets.tago.io" @@ -85,7 +84,7 @@ def create(self, analysisObj: AnalysisCreateInfo) -> Dict[str, GenericID | Gener resources = Resources() new_analysis = resources.analyses.create({ "name": "My Analysis", - "runtime": "python", + "runtime": "python-rt2025", "tags": [{"key": "type", "value": "data-processing"}] }) print(new_analysis["id"], new_analysis["token"]) # analysis-id-123, analysis-token-123 @@ -268,7 +267,7 @@ def uploadScript(self, analysisID: GenericID, fileObj: ScriptFile) -> str: result = resources.analyses.uploadScript("analysis-id-123", { "name": "script.py", "content": "base64-encoded-content", - "language": "python" + "language": "python-rt2025" }) print(result) # Successfully Uploaded ``` diff --git a/src/tagoio_sdk/modules/Resources/Analysis_Types.py b/src/tagoio_sdk/modules/Resources/Analysis_Types.py index 4d32035..166a0e0 100644 --- a/src/tagoio_sdk/modules/Resources/Analysis_Types.py +++ b/src/tagoio_sdk/modules/Resources/Analysis_Types.py @@ -12,12 +12,13 @@ from tagoio_sdk.common.Common_Type import GenericID from tagoio_sdk.common.Common_Type import Query from tagoio_sdk.common.Common_Type import TagsObj +from tagoio_sdk.common.Common_Type import RunTypeOptions class ScriptFile(TypedDict): name: str content: Base64 - language: Literal["node", "python"] + language: RunTypeOptions class AnalysisCreateInfo(TypedDict, total=False): @@ -26,7 +27,7 @@ class AnalysisCreateInfo(TypedDict, total=False): interval: Optional[str] run_on: Optional[Literal["tago", "external"]] file_name: Optional[str] - runtime: Optional[Literal["node", "python"]] + runtime: Optional[RunTypeOptions] active: Optional[bool] profile: Optional[GenericID] variables: Optional[List[Dict[str, Union[str, int, bool]]]] @@ -44,11 +45,7 @@ class AnalysisInfo(AnalysisCreateInfo): class AnalysisQuery(Query): - fields: Optional[ - List[ - Literal["name", "active", "run_on", "last_run", "created_at", "updated_at"] - ] - ] + fields: Optional[List[Literal["name", "active", "run_on", "last_run", "created_at", "updated_at"]]] class AnalysisListItem(TypedDict, total=False): @@ -63,9 +60,7 @@ class AnalysisListItem(TypedDict, total=False): console: Optional[List[str]] -SnippetRuntime = Literal[ - "node-legacy", "python-legacy", "node-rt2025", "python-rt2025", "deno-rt2025" -] +SnippetRuntime = Literal["node-legacy", "python-legacy", "node-rt2025", "python-rt2025", "deno-rt2025"] """Available runtime environments for snippets""" From 21e54e50e9c5d6ca32997d60269b6b4a0612ddd9 Mon Sep 17 00:00:00 2001 From: Mateus Silva Date: Thu, 18 Jun 2026 09:12:22 -0300 Subject: [PATCH 2/2] chore: clean up imports and add spacing in Common_Type and Analysis_Types --- src/tagoio_sdk/common/Common_Type.py | 1 + src/tagoio_sdk/modules/Resources/Analyses.py | 1 + src/tagoio_sdk/modules/Resources/Analysis_Types.py | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tagoio_sdk/common/Common_Type.py b/src/tagoio_sdk/common/Common_Type.py index 20031bd..a7b514c 100644 --- a/src/tagoio_sdk/common/Common_Type.py +++ b/src/tagoio_sdk/common/Common_Type.py @@ -4,6 +4,7 @@ from typing import TypedDict from typing import Union + GenericID = str """ID used on TagoIO, string with 24 character""" diff --git a/src/tagoio_sdk/modules/Resources/Analyses.py b/src/tagoio_sdk/modules/Resources/Analyses.py index 714413c..4be43a9 100644 --- a/src/tagoio_sdk/modules/Resources/Analyses.py +++ b/src/tagoio_sdk/modules/Resources/Analyses.py @@ -19,6 +19,7 @@ from tagoio_sdk.modules.Utils.dateParser import dateParser from tagoio_sdk.modules.Utils.dateParser import dateParserList + # Base URL for TagoIO analysis snippets repository SNIPPETS_BASE_URL = "https://snippets.tago.io" diff --git a/src/tagoio_sdk/modules/Resources/Analysis_Types.py b/src/tagoio_sdk/modules/Resources/Analysis_Types.py index 166a0e0..566b9c2 100644 --- a/src/tagoio_sdk/modules/Resources/Analysis_Types.py +++ b/src/tagoio_sdk/modules/Resources/Analysis_Types.py @@ -11,8 +11,8 @@ from tagoio_sdk.common.Common_Type import ExpireTimeOption from tagoio_sdk.common.Common_Type import GenericID from tagoio_sdk.common.Common_Type import Query -from tagoio_sdk.common.Common_Type import TagsObj from tagoio_sdk.common.Common_Type import RunTypeOptions +from tagoio_sdk.common.Common_Type import TagsObj class ScriptFile(TypedDict):