sequence-base 0.4.32__tar.gz → 0.4.33__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. {sequence_base-0.4.32 → sequence_base-0.4.33}/PKG-INFO +1 -1
  2. {sequence_base-0.4.32 → sequence_base-0.4.33}/pyproject.toml +1 -1
  3. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/by_name.py +54 -6
  4. {sequence_base-0.4.32 → sequence_base-0.4.33}/.gitignore +0 -0
  5. {sequence_base-0.4.32 → sequence_base-0.4.33}/README.md +0 -0
  6. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/__init__.py +0 -0
  7. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/auth.py +0 -0
  8. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/codec/__init__.py +0 -0
  9. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/codec/image.py +0 -0
  10. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/codec/marked.py +0 -0
  11. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/constants/__init__.py +0 -0
  12. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/constants/cards.py +0 -0
  13. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/constants/headers.py +0 -0
  14. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/constants/limits.py +0 -0
  15. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/constants/version.py +0 -0
  16. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/construct.py +0 -0
  17. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/__init__.py +0 -0
  18. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/accounts.py +0 -0
  19. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/act.py +0 -0
  20. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/adapters.py +0 -0
  21. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/benchmarks.py +0 -0
  22. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/connect.py +0 -0
  23. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/deployments.py +0 -0
  24. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/errors.py +0 -0
  25. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/eval.py +0 -0
  26. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/flags.py +0 -0
  27. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/io.py +0 -0
  28. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/obs_schedule.py +0 -0
  29. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/observe.py +0 -0
  30. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/own_io.py +0 -0
  31. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/policy.py +0 -0
  32. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/retired.py +0 -0
  33. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/templates.py +0 -0
  34. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/volumes.py +0 -0
  35. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/contract/wire.py +0 -0
  36. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/episode.py +0 -0
  37. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/errors/__init__.py +0 -0
  38. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/errors/transport.py +0 -0
  39. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/msgpack_io.py +0 -0
  40. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/obs/__init__.py +0 -0
  41. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/obs/log.py +0 -0
  42. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/obs/rid.py +0 -0
  43. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/presets/__init__.py +0 -0
  44. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/presets/frames.py +0 -0
  45. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/presets/robot_arm.py +0 -0
  46. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schema_export.py +0 -0
  47. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ActRequest.json +0 -0
  48. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ActResponse.json +0 -0
  49. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ActionChunk.json +0 -0
  50. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ActionContract.json +0 -0
  51. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ActionStep.json +0 -0
  52. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Actions.json +0 -0
  53. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/AdapterPair.json +0 -0
  54. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/AddLocal.json +0 -0
  55. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Autoscaler.json +0 -0
  56. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/BenchmarkConditionSpec.json +0 -0
  57. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/BenchmarkRegisterRequest.json +0 -0
  58. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/BenchmarkSpec.json +0 -0
  59. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/BenchmarkStatusResponse.json +0 -0
  60. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/BootstrapResponse.json +0 -0
  61. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Camera.json +0 -0
  62. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/CodeBundle.json +0 -0
  63. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Concurrency.json +0 -0
  64. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Conditions.json +0 -0
  65. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ConnectRequest.json +0 -0
  66. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ConnectResponse.json +0 -0
  67. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/DeploymentAccepted.json +0 -0
  68. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/DeploymentPolicy.json +0 -0
  69. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/DeploymentRequest.json +0 -0
  70. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/DeploymentStatusResponse.json +0 -0
  71. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ErrorBody.json +0 -0
  72. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ErrorCodes.json +0 -0
  73. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Estimate.json +0 -0
  74. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/EvalDryRunResponse.json +0 -0
  75. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/EvalReport.json +0 -0
  76. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/EvalRequest.json +0 -0
  77. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/EvalResponse.json +0 -0
  78. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageFrame.json +0 -0
  79. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageSpec.json +0 -0
  80. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepAddLocal.json +0 -0
  81. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepApt.json +0 -0
  82. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepEnv.json +0 -0
  83. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepProject.json +0 -0
  84. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepRun.json +0 -0
  85. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepTemplateFiles.json +0 -0
  86. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ImageStepUvPip.json +0 -0
  87. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/InferParam.json +0 -0
  88. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Lease.json +0 -0
  89. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/MetricAgg.json +0 -0
  90. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Observation.json +0 -0
  91. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ObservationContract.json +0 -0
  92. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Observations.json +0 -0
  93. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ObserveRequest.json +0 -0
  94. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ObserveResponse.json +0 -0
  95. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/PolicyRegistration.json +0 -0
  96. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/PolicySpec.json +0 -0
  97. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Project.json +0 -0
  98. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Proprioception.json +0 -0
  99. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/RenderSpec.json +0 -0
  100. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/ReplaySpec.json +0 -0
  101. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Resources.json +0 -0
  102. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/RolloutResult.json +0 -0
  103. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/SecretCreateRequest.json +0 -0
  104. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/SecretInfo.json +0 -0
  105. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/SecretRef.json +0 -0
  106. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/SeqFlags.json +0 -0
  107. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Step.json +0 -0
  108. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Stream.json +0 -0
  109. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/TaskAgg.json +0 -0
  110. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/TemplateFiles.json +0 -0
  111. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Tensors.json +0 -0
  112. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Timeouts.json +0 -0
  113. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/UploadTarget.json +0 -0
  114. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/Variant.json +0 -0
  115. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeFile.json +0 -0
  116. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeInfo.json +0 -0
  117. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeMount.json +0 -0
  118. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeRef.json +0 -0
  119. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeUploadRequest.json +0 -0
  120. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/VolumeUploadResponse.json +0 -0
  121. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/schemas/WarmingError.json +0 -0
  122. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/telemetry/__init__.py +0 -0
  123. {sequence_base-0.4.32 → sequence_base-0.4.33}/sequence_base/telemetry/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sequence-base
3
- Version: 0.4.32
3
+ Version: 0.4.33
4
4
  Summary: Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness.
5
5
  Project-URL: Changelog, https://generalsequences.com/docs/changelog/
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sequence-base"
3
- version = "0.4.32"
3
+ version = "0.4.33"
4
4
  description = "Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = ["pydantic>=2.0"]
@@ -17,10 +17,15 @@ rule on both sides.
17
17
 
18
18
  What the platform hands a method itself is `episode` - an act function, an observe function and the method an
19
19
  episode's end calls alike - and an eval's `seed`; `retired(parameters, what)` refuses a method that still takes what it
20
- handed once (episode_id, embodiment, feedback), and `ends(parameters, what)` an end method that takes anything but the episode,
21
- each in words that say what to write instead - the SDK when a class is declared, the worker when it loads one declared
22
- before.
20
+ handed once (episode_id, embodiment, feedback, and a composite's plan and robot), and `ends(parameters, what)` an end
21
+ method that takes anything but the episode, each in words that say what to write instead - the SDK when a class is
22
+ declared, the worker when it loads one declared before.
23
23
 
24
+
25
+ A composite's planner, @seq.plan, is called on a clock with the episode alone and what it returns is kept in the
26
+ episode's state, which the act function beside it reads: `plan_refused(plan, infer_takes_episode=...)` says why a plan
27
+ method cannot be served as it is written, and `wake_on_refused(value)` why a wake_on is no list of keys - one set of
28
+ words for the SDK and the worker.
24
29
  """
25
30
  from __future__ import annotations
26
31
 
@@ -29,17 +34,26 @@ from collections.abc import Iterable, Mapping
29
34
  from dataclasses import dataclass
30
35
  from typing import Any
31
36
 
32
- __all__ = ["INFER_PLATFORM", "OBSERVE_PLATFORM", "RETIRED", "ByName", "ends", "retired", "takes_by_name"]
37
+ __all__ = ["INFER_PLATFORM", "OBSERVE_PLATFORM", "RETIRED", "WAKE_ON", "ByName", "ends", "plan_refused", "retired",
38
+ "takes_by_name", "wake_on_refused"]
33
39
 
34
40
 
35
41
 
36
- INFER_PLATFORM = frozenset({"seed", "episode", "plan", "robot"})
42
+ INFER_PLATFORM = frozenset({"seed", "episode"})
37
43
  OBSERVE_PLATFORM = frozenset({"step", "episode"})
38
44
 
39
45
 
40
46
  RETIRED = {"episode_id": "take episode, a seq.Episode, and read episode.id",
41
47
  "embodiment": "send what the robot is with its observations, in observe(x)",
42
- "feedback": "send what the robot was playing with its observations, in observe(x)"}
48
+ "feedback": "send what the robot was playing with its observations, in observe(x)",
49
+
50
+ "plan": ('take episode and read the newest plan as episode.state["seq.plans"][-1]["value"], what '
51
+ '@seq.plan returned (before the first, episode.state.get("seq.plans") is None)'),
52
+ "robot": ("take episode: episode.state is the robot's own dict, which @seq.plan is handed too, and "
53
+ "episode.id names it")}
54
+
55
+ WAKE_ON = ('@seq.plan(wake_on=...) is a list of the observation\'s keys whose arrival plans at once, each a string - '
56
+ 'wake_on=["say"]: an observation that holds "say" plans its episode then, its clock going on beside')
43
57
 
44
58
  _VARIADIC = (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD)
45
59
 
@@ -125,3 +139,37 @@ def ends(parameters: Iterable[inspect.Parameter], what: str) -> str | None:
125
139
 
126
140
  def _keys(names: list) -> str:
127
141
  return ", ".join(repr(n) for n in names)
142
+
143
+
144
+ def plan_refused(plan: Any, *, infer_takes_episode: bool) -> str | None:
145
+ """Why `plan`, a policy's @seq.plan method, cannot be served as it is written - or None, when it can: it is called on
146
+ a clock with the episode alone, plain or async, returning (never yielding) what is kept in the episode's state for
147
+ the act function beside it, which must take the episode to read it.
148
+ """
149
+ name = getattr(plan, "__name__", "plan")
150
+ if inspect.isgeneratorfunction(plan) or inspect.isasyncgenfunction(plan):
151
+ return (f"@seq.plan {name} returns its plan rather than yielding it: return the value, which is kept in "
152
+ 'episode.state["seq.plans"] (None keeps the plans as they are)')
153
+ try:
154
+ params = inspect.signature(plan).parameters
155
+ except (TypeError, ValueError):
156
+ params = {}
157
+ others = [n for n, p in params.items()
158
+ if n not in ("self", "episode") and p.default is inspect.Parameter.empty and p.kind not in _VARIADIC]
159
+ if "episode" not in params or others:
160
+ return (f"@seq.plan is handed the episode alone: write def {name}(self, episode) - read what it needs from "
161
+ 'episode.state, and return the plan, which is kept in episode.state["seq.plans"] (None keeps the plans '
162
+ "as they are)")
163
+ if not infer_takes_episode:
164
+ return ("a policy with @seq.plan reads its plans where its act function runs: take episode in it and read "
165
+ 'episode.state["seq.plans"][-1]["value"]')
166
+ return None
167
+
168
+
169
+ def wake_on_refused(value: Any) -> str | None:
170
+ """Why `value` cannot be a @seq.plan's wake_on - the observation's top-level keys whose arrival plans an episode at
171
+ once - or None, when it can: a list (or tuple) of strings, or None for none.
172
+ """
173
+ if value is None or (isinstance(value, (list, tuple)) and all(isinstance(k, str) for k in value)):
174
+ return None
175
+ return WAKE_ON
File without changes