Move TagoTiP to a standalone top-level client - #69
Open
RicardoStoklosa wants to merge 1 commit into
Open
Conversation
Replace the Services.tagotip service (added in #67) with a standalone TagoTiP client constructed directly with a Service Authorization token and exported at the package top level. Services defaults its token to the analysis token, so TagoTiP must not live under it. Matches tago-io/sdk-js#185.
5 tasks
FabianoEger
requested changes
Aug 18, 2026
FabianoEger
left a comment
Member
There was a problem hiding this comment.
Block
Standalone client is the right shape; 5.1.5 already shipped services.tagotip and the description calls #67 unreleased.
Description alignment
Gaps
PR description > Migration: Breaking changes names the replacement in one line; there is no Migration section with the before/after call.
Stale
PR description > Breaking changes: says#67, unreleased.tagoio-sdk==5.1.5is on PyPI (2026-08-18) and the v5.1.5 release notes list #67.PR description > Risk (CIA): "no released behavior touched" is false; 5.1.5 includesself.tagotip.
Rewrite the PR description with
/tagoio:pr-and-issue-descriptions.
In this PR
TagoTiP as a top-level client matches the Service Authorization token. 5.1.5 already published the Services member.
Blockers
PR description > Breaking changes: drop "unreleased"; 5.1.5 shippedservices.tagotip.PR description > Risk (CIA): drop "no released behavior touched".
Questions
pyproject.toml:7: 5.1.6 is a patch. Confirm a same-day correction of 5.1.5, or bump to a major.
Improvements
tests/TagoTiP/test_tagotip.py:6: consider assertingServicesno longer exposestagotip.docs/source/TagoTiP/index.rst:13: prefereu-w1overue-w1on this new page.
Praise
- The test checks the
tokenheader, not only the JSON body.
Risk (CIA)
Likelihood: 🟢 Low | Impact: 🟢 Low | Exposure: 🟢 Low.
Confirmed. 5.1.5 is same-day; values stay Low once the description names the published removal.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Move
TagoTiPout ofServicesinto a standalone top-level client. It is constructed directly with a Service Authorization token and exported at the package top level (from tagoio_sdk import TagoTiP);tagotip.cmd({serial, protocol, body})wrapsPOST /tip/cmd.Servicesdefaults its token to the analysis token, so TagoTiP must not live under it. This supersedes theservices.tagotipshape merged in #67 and matches tago-io/sdk-js#185.Why
#67 attached TagoTiP to
Services, which injects the analysis token by default. TagoTiP needs a Service Authorization token supplied at construction, so it belongs as its own top-level client.Test plan
tests/TagoTiP/test_tagotip.py(asserts request body, response, andtokenheader)uv run pytest tests/passes (210 tests)uv run ruff checkclean on the new module and testTagoTiPexported at top level,Servicesno longer exposestagotipTagoTiP({"token": "<service-auth>"}).cmd({"serial": "mqtt1", "protocol": "mqtt", "body": "reboot-now"})against the production API, responseCommand sentBreaking changes
services.tagotip.cmd(...)(from #67, unreleased) is removed. UseTagoTiP({"token": "<service-authorization-token>"}).cmd(...)instead.Risk (CIA)
Likelihood: 🟢 Low | Impact: 🟢 Low | Exposure: 🟢 Low
Reshapes an unreleased API added in #67; no released behavior touched.