Skip to content

Early client impl and docs scaffolding#5

Closed
cretz wants to merge 16 commits intotemporalio:mainfrom
cretz:impl2
Closed

Early client impl and docs scaffolding#5
cretz wants to merge 16 commits intotemporalio:mainfrom
cretz:impl2

Conversation

@cretz
Copy link
Copy Markdown
Contributor

@cretz cretz commented Feb 4, 2022

What was changed

  • Added client impl
    • Supporting new core approach
  • Added docs scaffolding

I have opened this early PR for review. I still have things of course to do such as:

  • Error structure
  • Better documentation
  • Tests

@cretz cretz requested review from Sushisource and bergundy February 4, 2022 23:05
@cretz
Copy link
Copy Markdown
Contributor Author

cretz commented Feb 4, 2022

Note, this is not cleanly applying on top of what's in main, so I'll be opening a new PR from a different branch when we're ready for full review

@cretz
Copy link
Copy Markdown
Contributor Author

cretz commented Feb 7, 2022

Since there have been no comments here, I am going to close this and make a new branch properly rebased on main.

@cretz cretz closed this Feb 7, 2022
@cretz
Copy link
Copy Markdown
Contributor Author

cretz commented Feb 7, 2022

Moved to #6

@cretz cretz deleted the impl2 branch February 7, 2022 16:03
Copy link
Copy Markdown
Member

@bergundy bergundy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I forgot to submit this in progress review.

Comment thread docs/api.rst
@@ -0,0 +1,18 @@
.. _api:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use markdown?
I haven't looked into it much but there seems to be a markdown extension for sphinx https://www.sphinx-doc.org/en/master/usage/markdown.html.

The reasoning is that markdown is much more popular and well known but that might not apply in the case of sphinx docs.

I know rst is the standard for python docs so feel free to ignore this comment.

Comment thread docs/conf.py
import os
import sys

sys.path.insert(0, os.path.abspath("../"))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is relative to PWD, use os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) to make it relative to the file.

Comment thread docs/conf.py
@@ -0,0 +1,69 @@
# Configuration file for the Sphinx documentation builder.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you eventually planning to put this on readthedocs.org?

jssmith added a commit that referenced this pull request Apr 23, 2026
Reconciles DESIGN-v2.md with the "Streaming API Design Considerations"
Notion page so both track the authoritative Python implementation. The
Notion page had richer narrative (durable-streams framing, pull-vs-push
reasoning, one-way-door callouts, offset-options comparison table,
alternatives-considered list for wire evolution, end-to-end-principle
writeup). This change brings that into the in-repo doc.

Changes:
- New top-of-doc note establishing that the Python code in
  sdk-python/temporalio/contrib/pubsub/ is authoritative; both
  DESIGN-v2.md and the Notion page track it.
- New Decision #1 "Durable streams" explaining the durable-by-default
  choice vs ephemeral streams (simpler model, reliability,
  correctness). Existing decisions renumbered.
- Decision #4 (Global offsets) gains the 6-option ecosystem
  comparison table and a one-way-door callout flagging the
  wire-protocol commitment.
- Decision #9 (Subscription is poll-based) expanded with the
  pull-vs-push trade-off (back-pressure, subscriber-controlled read
  position, data-at-rest) and explicit "both layers are exposed"
  framing.
- New "Design Principles" section with the Saltzer/Reed/Clark
  end-to-end-dedup framing and the "retries remain in the log"
  contract, with a one-way-door callout on the append-only-of-attempts
  contract.
- Compatibility section gains a full alternatives-considered list
  (version field, versioned handler names, protocol negotiation, SDK
  version embedding, accepting silent incompatibility) and a two-part
  one-way-door callout on immutable handler names + no version field.
- New "Ecosystem analogs" section: a compact one-paragraph summary
  (NATS JetStream for offsets, Kafka for idempotent producers, Redis
  for blocking pull, Workflow SDK as the durable-execution peer) with
  a pointer to the Notion page for the full comparison tables.

The Notion page itself is still behind on the Payload migration
(Decision #5 "Opaque message payloads" needs rewriting, API
signatures still show priority= and data: bytes). That update is
deferred pending resolution of an open reviewer discussion on
activity-retry/dedup (discussion 34a8fc56-7738-808c-b29b-001c5066e9d2)
whose substance overlaps with the Decision #5 rewrite.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants