|
1 | | -from datetime import timedelta |
| 1 | +from datetime import datetime, timedelta |
| 2 | +from typing import Any |
2 | 3 |
|
3 | 4 | class StorageType: |
4 | 5 | FILE: "StorageType" |
@@ -90,45 +91,101 @@ class Republish: |
90 | 91 | ) -> None: ... |
91 | 92 |
|
92 | 93 | class StreamConfig: |
| 94 | + name: str |
| 95 | + subjects: list[str] |
| 96 | + max_bytes: int | None |
| 97 | + max_messages: int | None |
| 98 | + max_messages_per_subject: int | None |
| 99 | + discard: DiscardPolicy | None |
| 100 | + discard_new_per_subject: bool | None |
| 101 | + retention: RetentionPolicy | None |
| 102 | + max_consumers: int | None |
| 103 | + max_age: timedelta | None |
| 104 | + max_message_size: int | None |
| 105 | + storage: StorageType | None |
| 106 | + num_replicas: int | None |
| 107 | + no_ack: bool | None |
| 108 | + duplicate_window: timedelta | None |
| 109 | + template_owner: str | None |
| 110 | + sealed: bool | None |
| 111 | + description: str | None |
| 112 | + allow_rollup: bool | None |
| 113 | + deny_delete: bool | None |
| 114 | + deny_purge: bool | None |
| 115 | + republish: Republish | None |
| 116 | + allow_direct: bool | None |
| 117 | + mirror_direct: bool | None |
| 118 | + mirror: Source | None |
| 119 | + sources: list[Source] | None |
| 120 | + metadata: dict[str, str] | None |
| 121 | + subject_transform: SubjectTransform | None |
| 122 | + compression: Compression | None |
| 123 | + consumer_limits: ConsumerLimits | None |
| 124 | + first_sequence: int | None |
| 125 | + placement: Placement | None |
| 126 | + persist_mode: PersistenceMode | None |
| 127 | + pause_until: int | None |
| 128 | + allow_message_ttl: bool | None |
| 129 | + subject_delete_marker_ttl: timedelta | None |
| 130 | + allow_atomic_publish: bool | None |
| 131 | + allow_message_schedules: bool | None |
| 132 | + allow_message_counter: bool | None |
| 133 | + |
93 | 134 | def __init__( |
94 | 135 | self, |
95 | 136 | name: str, |
96 | | - subjects, |
97 | | - max_bytes=None, |
98 | | - max_messages=None, |
99 | | - max_messages_per_subject=None, |
100 | | - discard=None, |
101 | | - discard_new_per_subject=None, |
102 | | - retention=None, |
103 | | - max_consumers=None, |
104 | | - max_age=None, |
105 | | - max_message_size=None, |
106 | | - storage=None, |
107 | | - num_replicas=None, |
108 | | - no_ack=None, |
109 | | - duplicate_window=None, |
110 | | - template_owner=None, |
111 | | - sealed=None, |
112 | | - description=None, |
113 | | - allow_rollup=None, |
114 | | - deny_delete=None, |
115 | | - deny_purge=None, |
116 | | - republish=None, |
117 | | - allow_direct=None, |
118 | | - mirror_direct=None, |
119 | | - mirror=None, |
120 | | - sources=None, |
121 | | - metadata=None, |
122 | | - subject_transform=None, |
123 | | - compression=None, |
124 | | - consumer_limits=None, |
125 | | - first_sequence=None, |
126 | | - placement=None, |
127 | | - persist_mode=None, |
128 | | - pause_until=None, |
129 | | - allow_message_ttl=None, |
130 | | - subject_delete_marker_ttl=None, |
131 | | - allow_atomic_publish=None, |
132 | | - allow_message_schedules=None, |
133 | | - allow_message_counter=None, |
| 137 | + subjects: list[str], |
| 138 | + max_bytes: int | None = None, |
| 139 | + max_messages: int | None = None, |
| 140 | + max_messages_per_subject: int | None = None, |
| 141 | + discard: DiscardPolicy | None = None, |
| 142 | + discard_new_per_subject: bool | None = None, |
| 143 | + retention: RetentionPolicy | None = None, |
| 144 | + max_consumers: int | None = None, |
| 145 | + max_age: timedelta | None = None, |
| 146 | + max_message_size: int | None = None, |
| 147 | + storage: StorageType | None = None, |
| 148 | + num_replicas: int | None = None, |
| 149 | + no_ack: bool | None = None, |
| 150 | + duplicate_window: timedelta | None = None, |
| 151 | + template_owner: str | None = None, |
| 152 | + sealed: bool | None = None, |
| 153 | + description: str | None = None, |
| 154 | + allow_rollup: bool | None = None, |
| 155 | + deny_delete: bool | None = None, |
| 156 | + deny_purge: bool | None = None, |
| 157 | + republish: Republish | None = None, |
| 158 | + allow_direct: bool | None = None, |
| 159 | + mirror_direct: bool | None = None, |
| 160 | + mirror: Source | None = None, |
| 161 | + sources: list[Source] | None = None, |
| 162 | + metadata: dict[str, str] | None = None, |
| 163 | + subject_transform: SubjectTransform | None = None, |
| 164 | + compression: Compression | None = None, |
| 165 | + consumer_limits: ConsumerLimits | None = None, |
| 166 | + first_sequence: int | None = None, |
| 167 | + placement: Placement | None = None, |
| 168 | + persist_mode: PersistenceMode | None = None, |
| 169 | + pause_until: int | None = None, |
| 170 | + allow_message_ttl: bool | None = None, |
| 171 | + subject_delete_marker_ttl: timedelta | None = None, |
| 172 | + allow_atomic_publish: bool | None = None, |
| 173 | + allow_message_schedules: bool | None = None, |
| 174 | + allow_message_counter: bool | None = None, |
134 | 175 | ) -> None: ... |
| 176 | + |
| 177 | +class StreamMessage: |
| 178 | + subject: str |
| 179 | + sequence: int |
| 180 | + headers: dict[str, Any] |
| 181 | + payload: bytes |
| 182 | + time: datetime |
| 183 | + |
| 184 | +class Stream: |
| 185 | + async def direct_get(self, sequence: int) -> StreamMessage: |
| 186 | + """ |
| 187 | + Get direct message from a stream. |
| 188 | +
|
| 189 | + Please note, that this method will throw an error |
| 190 | + in case of stream being configured without `allow_direct=True`. |
| 191 | + """ |
0 commit comments