ethanlin01x opened a new issue, #3997:
URL: https://github.com/apache/iggy/issues/3997

   ### Description
   
   The Python client cannot read or write a consumer offset directly. 
`poll_messages` can store an offset through `auto_commit=True`, and 
`IggyConsumer` has `store_offset()` / `delete_offset()`, but neither lets a 
caller commit an offset it chooses or ask the server what is currently stored. 
Every other SDK exposes the `ConsumerOffsetClient` methods on the client itself.
   
   This blocks the common pattern of polling with `auto_commit=False` and 
committing only after the application has finished processing a batch. It also 
makes offset state impossible to inspect from Python, for example when checking 
consumer lag.
   
   ### Affected area / component
   
   Python SDK
   
   ### Proposed solution
   
   Add two methods to `IggyClient` in `foreign/python/src/client.rs`, mapping 
to the `ConsumerOffsetClient` trait:
   
   ```python
   await client.store_consumer_offset(
       stream="s", topic="t", consumer=Consumer.Single("my-app"), offset=42, 
partition_id=0
   )
   
   info = await client.get_consumer_offset(
       stream="s", topic="t", consumer=Consumer.Single("my-app"), partition_id=0
   )
   if info is not None:
       print(info.partition_id, info.current_offset, info.stored_offset)
   ```
   
   `partition_id` stays optional, like on `poll_messages`, so a consumer group 
can resolve the member's assigned partition on the server.
   
   `get_consumer_offset` needs a new `ConsumerOffsetInfo` pyclass with 
`partition_id`, `current_offset` and `stored_offset` getters. It returns `None` 
when the server has no offset for that consumer, matching `get_consumer_group`.
   
   
   
   ### Alternatives considered
   
   _No response_
   
   ### Contribution
   
   - [x] I'm willing to submit a pull request to implement this feature
   
   ### Good first issue
   
   - [ ] I think this could be a good first issue for a new contributor


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to