apache / apache/iggy

Python SDK: return details from stream, topic, and consumer group creation

Open
#4,166 2 comments 0 reactions 1 assignee Claimed by @EthemKD View on GitHub
good first issue python
Dominant language
Rust
Stars
4.9k
Forks
432
Avg merge
2d 10h
Merged PRs (30d)
173

Description

### Description

The Rust SDK returns the created resource details from these methods:

```rust
async fn create_stream(&self, name: &str)
-> Result;

async fn create_topic(
&self,
stream_id: &Identifier,
name: &str,
options: &TopicCreateOptions,
) -> Result;

async fn create_consumer_group(
&self,
stream_id: &Identifier,
topic_id: &Identifier,
name: &str,
) -> Result;
```

The Python methods perform the creation successfully but discard these return values and resolve to `None`.

`StreamDetails`, `TopicDetails`, and `ConsumerGroupDetails` are already implemented and registered as Python classes, so no new wrapper types are required.

This covers B13, B17, and B21 of the Python SDK parity work tracked in #3893.

### Affected area / component

Python SDK

### Proposed solution

- Change `IggyClient.create_stream()` to return `StreamDetails`.
- Change `IggyClient.create_topic()` to return `TopicDetails`.
- Change `IggyClient.create_consumer_group()` to return `ConsumerGroupDetails`.
- Convert each Rust result through the existing `From` implementation instead of discarding it.
- Update the method documentation and regenerate `foreign/python/apache_iggy.pyi`.
- Extend the existing stream, topic, and consumer-group tests to assert that:
- The returned type is the corresponding Details class.
- The returned ID, name, and resource-specific fields match the created resource.
- Fetching the resource afterward returns matching details.

This changes only successful return values; existing arguments and error behavior remain unchanged.

### Alternatives considered

Keep returning `None` and require a second `get_*` request. This adds an unnecessary round trip and remains inconsistent with the Rust API.

### Contribution

- [ ] I'm willing to submit a pull request to implement this feature

### Good first issue

- [x] I think this could be a good first issue for a new contributor

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.