dirigent-plugin 0.20.0__tar.gz → 0.21.0__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.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirigent-plugin
3
- Version: 0.20.0
3
+ Version: 0.21.0
4
4
  Summary: The dirigent plugin contract: block specs, protocols, and markers.
5
5
  License-Expression: LicenseRef-Proprietary
6
6
  License-File: LICENSE
7
7
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Programming Language :: Python :: 3.13
9
- Requires-Dist: dirigent-common==0.20.0
9
+ Requires-Dist: dirigent-common==0.21.0
10
10
  Requires-Dist: httpx2>=2.12.0
11
11
  Requires-Dist: pluginkit>=0.5.0
12
12
  Requires-Dist: pydantic>=2.13.5
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dirigent-plugin"
3
- version = "0.20.0"
3
+ version = "0.21.0"
4
4
  description = "The dirigent plugin contract: block specs, protocols, and markers."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -11,7 +11,7 @@ classifiers = [
11
11
  "Programming Language :: Python :: 3.13",
12
12
  ]
13
13
  dependencies = [
14
- "dirigent-common==0.20.0",
14
+ "dirigent-common==0.21.0",
15
15
  "httpx2>=2.12.0",
16
16
  "pluginkit>=0.5.0",
17
17
  "pydantic>=2.13.5",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dirigent-plugin"
3
- version = "0.20.0"
3
+ version = "0.21.0"
4
4
  description = "The dirigent plugin contract: block specs, protocols, and markers."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -11,7 +11,7 @@ classifiers = [
11
11
  "Programming Language :: Python :: 3.13",
12
12
  ]
13
13
  dependencies = [
14
- "dirigent-common==0.20.0",
14
+ "dirigent-common==0.21.0",
15
15
  "httpx2>=2.12.0",
16
16
  "pluginkit>=0.5.0",
17
17
  "pydantic>=2.13.5",
@@ -280,8 +280,9 @@ class NotYet(BaseModel):
280
280
  worker that dies before that commit leaves the older cursor for the next poke to read
281
281
  from again. So a poke must tolerate reading the same ground twice.
282
282
 
283
- The cursor's life is the waiting attempt. A poke that succeeds ends the step, and
284
- nothing carries the cursor past it.
283
+ The cursor's life is the waiting attempt. A poke that succeeds ends the step, and only
284
+ :meth:`Sensor.resume_cursor` carries a cursor past it: a watch hands what that returns to
285
+ the first poke of the run it arms next.
285
286
  """
286
287
 
287
288
 
@@ -551,7 +552,9 @@ class StepContext(Protocol):
551
552
  cursor: JsonMap | None
552
553
  """The cursor the last committed :class:`NotYet` returned, and None on the first poke.
553
554
 
554
- Only a sensor's poke reads it; every other call sees None.
555
+ The first poke of a run a watch armed is handed where the watch's last success left off
556
+ instead, which is what :meth:`Sensor.resume_cursor` returned. Only a sensor's poke reads
557
+ it; every other call sees None.
555
558
  """
556
559
 
557
560
  def connection[C: BaseModel](self, ref: ConnectionRef, model: type[C]) -> C:
@@ -682,6 +685,16 @@ class Sensor[ConfigT: BaseModel, OutputT: BaseModel](ABC):
682
685
  """Observe the world once, read-only and briefly; NotYet is not a failure."""
683
686
  ...
684
687
 
688
+ def resume_cursor(self, output: OutputT) -> JsonMap | None:
689
+ """Say where a poke that succeeded left off, read from the output it succeeded with.
690
+
691
+ A watch stores what this returns and hands it to the first poke of the next run it
692
+ arms as ``ctx.cursor``. None, the default, starts every run fresh. It is stored in the
693
+ transaction that settles the step, so it is only as far along as the last success that
694
+ committed, and the next poke may read that ground again.
695
+ """
696
+ return None
697
+
685
698
  def check_config(self, config: BaseModel) -> list[Issue]:
686
699
  """List the extra refusals this block makes at apply, beyond what its schema says.
687
700