getstream 3.1.2__tar.gz → 3.2.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.
- {getstream-3.1.2 → getstream-3.2.0}/PKG-INFO +1 -1
- {getstream-3.1.2 → getstream-3.2.0}/getstream/base.py +78 -15
- {getstream-3.1.2 → getstream-3.2.0}/getstream/stream.py +88 -49
- {getstream-3.1.2 → getstream-3.2.0}/.cursor/worktrees.json +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.env.example +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.github/actions/python-uv-setup/action.yml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.github/workflows/ci.yml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.github/workflows/release.yml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.github/workflows/run_tests.yml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.github/workflows/stream-py.code-workspace +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.gitignore +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.gitmodules +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/.pre-commit-config.yaml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/AGENTS.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/CHANGELOG.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/DEVELOPMENT.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/LICENSE.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/MIGRATION_v2_to_v3.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/Makefile +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/README.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/dev.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/01-setup-and-auth.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/02-users.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/03-channels.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/04-messages-and-reactions.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/05-moderation.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/06-devices.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/README.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/generate.sh +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/generate_webrtc.sh +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/async_channel.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/async_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/async_rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/channel.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/chat/rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/async_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/async_rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/common/telemetry.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/config.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/feeds/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/feeds/client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/feeds/feeds.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/feeds/rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/generic.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/meta.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/models/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/moderation/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/moderation/async_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/moderation/async_rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/moderation/client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/moderation/rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/rate_limit.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/stream_response.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/tests/test_webhook.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/utils/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/utils/event_emitter.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/utils/retry.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/version.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/async_call.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/async_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/async_rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/call.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/openai.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rest_client.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/README.md +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/audio_track.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/connection_manager.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/connection_utils.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/coordinator/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/coordinator/backoff.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/coordinator/errors.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/coordinator/ws.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/coordinator_api.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/encoders_patches.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/g711.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/location_discovery.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/models.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/network_monitor.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/participants.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.pyi +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.pyi +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/__init__.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_pb2.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_pb2.pyi +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_twirp.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pc.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/peer_connection.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/reconnection.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/recording.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/signaling.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/stats_reporter.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/stats_tracer.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/tracer.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/track_util.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/tracks.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/twirp_client_wrapper.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/utils.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/getstream/webhook.py +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/pyproject.toml +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/pytest.ini +0 -0
- {getstream-3.1.2 → getstream-3.2.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: getstream
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: GetStream Python SDK - Build scalable activity feeds, chat, and video calling applications
|
|
5
5
|
Author-email: sachaarbonel <sacha.arbonel@hotmail.fr>, tbarbugli <tbarbugli@gmail.com>
|
|
6
6
|
License-File: LICENSE.md
|
|
@@ -158,12 +158,38 @@ class BaseClient(TelemetryEndpointMixin, BaseConfig, ResponseParserMixin, ABC):
|
|
|
158
158
|
timeout=timeout,
|
|
159
159
|
user_agent=user_agent,
|
|
160
160
|
)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
161
|
+
http_client = getattr(self, "_http_client", None)
|
|
162
|
+
if http_client is not None:
|
|
163
|
+
if not isinstance(http_client, httpx.Client):
|
|
164
|
+
raise TypeError(
|
|
165
|
+
f"http_client must be an httpx.Client instance, "
|
|
166
|
+
f"got {type(http_client).__name__}"
|
|
167
|
+
)
|
|
168
|
+
http_client.headers.update(self.headers)
|
|
169
|
+
http_client.params = http_client.params.merge(self.params)
|
|
170
|
+
http_client.base_url = self.base_url or ""
|
|
171
|
+
if self.timeout is not None:
|
|
172
|
+
http_client.timeout = httpx.Timeout(self.timeout)
|
|
173
|
+
self.client = http_client
|
|
174
|
+
self._owns_http_client = False
|
|
175
|
+
else:
|
|
176
|
+
transport = getattr(self, "_transport", None)
|
|
177
|
+
if transport is not None:
|
|
178
|
+
self.client = httpx.Client(
|
|
179
|
+
base_url=self.base_url or "",
|
|
180
|
+
headers=self.headers,
|
|
181
|
+
params=self.params,
|
|
182
|
+
timeout=httpx.Timeout(self.timeout),
|
|
183
|
+
transport=transport,
|
|
184
|
+
)
|
|
185
|
+
else:
|
|
186
|
+
self.client = httpx.Client(
|
|
187
|
+
base_url=self.base_url or "",
|
|
188
|
+
headers=self.headers,
|
|
189
|
+
params=self.params,
|
|
190
|
+
timeout=httpx.Timeout(self.timeout),
|
|
191
|
+
)
|
|
192
|
+
self._owns_http_client = True
|
|
167
193
|
|
|
168
194
|
def __enter__(self):
|
|
169
195
|
return self
|
|
@@ -348,8 +374,13 @@ class BaseClient(TelemetryEndpointMixin, BaseConfig, ResponseParserMixin, ABC):
|
|
|
348
374
|
def close(self):
|
|
349
375
|
"""
|
|
350
376
|
Close HTTPX client.
|
|
377
|
+
|
|
378
|
+
If the client was provided externally via ``http_client``, this is a
|
|
379
|
+
no-op — the caller that created the client is responsible for closing
|
|
380
|
+
it.
|
|
351
381
|
"""
|
|
352
|
-
self
|
|
382
|
+
if getattr(self, "_owns_http_client", True):
|
|
383
|
+
self.client.close()
|
|
353
384
|
|
|
354
385
|
|
|
355
386
|
class AsyncBaseClient(TelemetryEndpointMixin, BaseConfig, ResponseParserMixin, ABC):
|
|
@@ -368,12 +399,38 @@ class AsyncBaseClient(TelemetryEndpointMixin, BaseConfig, ResponseParserMixin, A
|
|
|
368
399
|
timeout=timeout,
|
|
369
400
|
user_agent=user_agent,
|
|
370
401
|
)
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
402
|
+
http_client = getattr(self, "_http_client", None)
|
|
403
|
+
if http_client is not None:
|
|
404
|
+
if not isinstance(http_client, httpx.AsyncClient):
|
|
405
|
+
raise TypeError(
|
|
406
|
+
f"http_client must be an httpx.AsyncClient instance, "
|
|
407
|
+
f"got {type(http_client).__name__}"
|
|
408
|
+
)
|
|
409
|
+
http_client.headers.update(self.headers)
|
|
410
|
+
http_client.params = http_client.params.merge(self.params)
|
|
411
|
+
http_client.base_url = self.base_url or ""
|
|
412
|
+
if self.timeout is not None:
|
|
413
|
+
http_client.timeout = httpx.Timeout(self.timeout)
|
|
414
|
+
self.client = http_client
|
|
415
|
+
self._owns_http_client = False
|
|
416
|
+
else:
|
|
417
|
+
transport = getattr(self, "_transport", None)
|
|
418
|
+
if transport is not None:
|
|
419
|
+
self.client = httpx.AsyncClient(
|
|
420
|
+
base_url=self.base_url or "",
|
|
421
|
+
headers=self.headers,
|
|
422
|
+
params=self.params,
|
|
423
|
+
timeout=httpx.Timeout(self.timeout),
|
|
424
|
+
transport=transport,
|
|
425
|
+
)
|
|
426
|
+
else:
|
|
427
|
+
self.client = httpx.AsyncClient(
|
|
428
|
+
base_url=self.base_url or "",
|
|
429
|
+
headers=self.headers,
|
|
430
|
+
params=self.params,
|
|
431
|
+
timeout=httpx.Timeout(self.timeout),
|
|
432
|
+
)
|
|
433
|
+
self._owns_http_client = True
|
|
377
434
|
|
|
378
435
|
async def __aenter__(self):
|
|
379
436
|
return self
|
|
@@ -382,8 +439,14 @@ class AsyncBaseClient(TelemetryEndpointMixin, BaseConfig, ResponseParserMixin, A
|
|
|
382
439
|
await self.aclose()
|
|
383
440
|
|
|
384
441
|
async def aclose(self):
|
|
385
|
-
"""Close HTTPX async client (closes pools/keep-alives).
|
|
386
|
-
|
|
442
|
+
"""Close HTTPX async client (closes pools/keep-alives).
|
|
443
|
+
|
|
444
|
+
If the client was provided externally via ``http_client``, this is a
|
|
445
|
+
no-op — the caller that created the client is responsible for closing
|
|
446
|
+
it.
|
|
447
|
+
"""
|
|
448
|
+
if getattr(self, "_owns_http_client", True):
|
|
449
|
+
await self.client.aclose()
|
|
387
450
|
|
|
388
451
|
async def _upload_multipart(
|
|
389
452
|
self,
|
|
@@ -6,6 +6,7 @@ import time
|
|
|
6
6
|
from typing import List, Optional
|
|
7
7
|
from uuid import uuid4
|
|
8
8
|
|
|
9
|
+
import httpx
|
|
9
10
|
import jwt
|
|
10
11
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
11
12
|
|
|
@@ -47,7 +48,12 @@ class BaseStream:
|
|
|
47
48
|
timeout: Optional[float] = 6.0,
|
|
48
49
|
base_url: Optional[str] = BASE_URL,
|
|
49
50
|
user_agent: Optional[str] = None,
|
|
51
|
+
transport=None,
|
|
52
|
+
http_client=None,
|
|
50
53
|
):
|
|
54
|
+
if transport is not None and http_client is not None:
|
|
55
|
+
raise ValueError("Cannot specify both 'transport' and 'http_client'")
|
|
56
|
+
|
|
51
57
|
if None in (api_key, api_secret, timeout, base_url):
|
|
52
58
|
s = Settings() # loads from env and optional .env
|
|
53
59
|
api_key = api_key or s.api_key
|
|
@@ -68,10 +74,29 @@ class BaseStream:
|
|
|
68
74
|
|
|
69
75
|
self.base_url = validate_and_clean_url(base_url)
|
|
70
76
|
self.user_agent = user_agent
|
|
77
|
+
self._transport = transport
|
|
78
|
+
self._http_client = http_client
|
|
71
79
|
self.token = self._create_token()
|
|
72
80
|
super().__init__(
|
|
73
81
|
self.api_key, self.base_url, self.token, self.timeout, self.user_agent
|
|
74
82
|
)
|
|
83
|
+
# After super().__init__(), self.client is fully built and configured.
|
|
84
|
+
# When the user provided custom HTTP config, sub-clients share this
|
|
85
|
+
# client instead of each building their own.
|
|
86
|
+
if transport is not None or http_client is not None:
|
|
87
|
+
self._shared_client = self.client
|
|
88
|
+
else:
|
|
89
|
+
self._shared_client = None
|
|
90
|
+
|
|
91
|
+
def _apply_shared_client(self, sub_client):
|
|
92
|
+
"""Replace a sub-client's auto-created httpx client with the shared
|
|
93
|
+
one built from user-provided transport/http_client config."""
|
|
94
|
+
if self._shared_client is not None:
|
|
95
|
+
if isinstance(sub_client.client, httpx.Client):
|
|
96
|
+
sub_client.client.close()
|
|
97
|
+
sub_client.client = self._shared_client
|
|
98
|
+
sub_client._owns_http_client = False
|
|
99
|
+
return sub_client
|
|
75
100
|
|
|
76
101
|
def create_token(
|
|
77
102
|
self,
|
|
@@ -169,13 +194,15 @@ class AsyncStream(BaseStream, AsyncCommonClient):
|
|
|
169
194
|
Video stream client.
|
|
170
195
|
|
|
171
196
|
"""
|
|
172
|
-
return
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
197
|
+
return self._apply_shared_client(
|
|
198
|
+
AsyncVideoClient(
|
|
199
|
+
api_key=self.api_key,
|
|
200
|
+
base_url=self.base_url,
|
|
201
|
+
token=self.token,
|
|
202
|
+
timeout=self.timeout,
|
|
203
|
+
stream=self,
|
|
204
|
+
user_agent=self.user_agent,
|
|
205
|
+
)
|
|
179
206
|
)
|
|
180
207
|
|
|
181
208
|
@cached_property
|
|
@@ -184,13 +211,15 @@ class AsyncStream(BaseStream, AsyncCommonClient):
|
|
|
184
211
|
Chat stream client.
|
|
185
212
|
|
|
186
213
|
"""
|
|
187
|
-
return
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
214
|
+
return self._apply_shared_client(
|
|
215
|
+
AsyncChatClient(
|
|
216
|
+
api_key=self.api_key,
|
|
217
|
+
base_url=self.base_url,
|
|
218
|
+
token=self.token,
|
|
219
|
+
timeout=self.timeout,
|
|
220
|
+
stream=self,
|
|
221
|
+
user_agent=self.user_agent,
|
|
222
|
+
)
|
|
194
223
|
)
|
|
195
224
|
|
|
196
225
|
@cached_property
|
|
@@ -199,13 +228,15 @@ class AsyncStream(BaseStream, AsyncCommonClient):
|
|
|
199
228
|
Moderation stream client.
|
|
200
229
|
|
|
201
230
|
"""
|
|
202
|
-
return
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
231
|
+
return self._apply_shared_client(
|
|
232
|
+
AsyncModerationClient(
|
|
233
|
+
api_key=self.api_key,
|
|
234
|
+
base_url=self.base_url,
|
|
235
|
+
token=self.token,
|
|
236
|
+
timeout=self.timeout,
|
|
237
|
+
stream=self,
|
|
238
|
+
user_agent=self.user_agent,
|
|
239
|
+
)
|
|
209
240
|
)
|
|
210
241
|
|
|
211
242
|
async def aclose(self):
|
|
@@ -291,13 +322,15 @@ class Stream(BaseStream, CommonClient):
|
|
|
291
322
|
Video stream client.
|
|
292
323
|
|
|
293
324
|
"""
|
|
294
|
-
return
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
325
|
+
return self._apply_shared_client(
|
|
326
|
+
VideoClient(
|
|
327
|
+
api_key=self.api_key,
|
|
328
|
+
base_url=self.base_url,
|
|
329
|
+
token=self.token,
|
|
330
|
+
timeout=self.timeout,
|
|
331
|
+
stream=self,
|
|
332
|
+
user_agent=self.user_agent,
|
|
333
|
+
)
|
|
301
334
|
)
|
|
302
335
|
|
|
303
336
|
@cached_property
|
|
@@ -306,13 +339,15 @@ class Stream(BaseStream, CommonClient):
|
|
|
306
339
|
Chat stream client.
|
|
307
340
|
|
|
308
341
|
"""
|
|
309
|
-
return
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
342
|
+
return self._apply_shared_client(
|
|
343
|
+
ChatClient(
|
|
344
|
+
api_key=self.api_key,
|
|
345
|
+
base_url=self.base_url,
|
|
346
|
+
token=self.token,
|
|
347
|
+
timeout=self.timeout,
|
|
348
|
+
stream=self,
|
|
349
|
+
user_agent=self.user_agent,
|
|
350
|
+
)
|
|
316
351
|
)
|
|
317
352
|
|
|
318
353
|
@cached_property
|
|
@@ -321,13 +356,15 @@ class Stream(BaseStream, CommonClient):
|
|
|
321
356
|
Moderation stream client.
|
|
322
357
|
|
|
323
358
|
"""
|
|
324
|
-
return
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
359
|
+
return self._apply_shared_client(
|
|
360
|
+
ModerationClient(
|
|
361
|
+
api_key=self.api_key,
|
|
362
|
+
base_url=self.base_url,
|
|
363
|
+
token=self.token,
|
|
364
|
+
timeout=self.timeout,
|
|
365
|
+
stream=self,
|
|
366
|
+
user_agent=self.user_agent,
|
|
367
|
+
)
|
|
331
368
|
)
|
|
332
369
|
|
|
333
370
|
@cached_property
|
|
@@ -336,13 +373,15 @@ class Stream(BaseStream, CommonClient):
|
|
|
336
373
|
Feeds stream client.
|
|
337
374
|
|
|
338
375
|
"""
|
|
339
|
-
return
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
376
|
+
return self._apply_shared_client(
|
|
377
|
+
FeedsClient(
|
|
378
|
+
api_key=self.api_key,
|
|
379
|
+
base_url=self.base_url,
|
|
380
|
+
token=self.token,
|
|
381
|
+
timeout=self.timeout,
|
|
382
|
+
stream=self,
|
|
383
|
+
user_agent=self.user_agent,
|
|
384
|
+
)
|
|
346
385
|
)
|
|
347
386
|
|
|
348
387
|
@telemetry.operation_name("getstream.api.common.create_user")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/docs/migration-from-stream-chat-python/01-setup-and-auth.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/__init__.py
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.py
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/event/events_pb2.pyi
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/__init__.py
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.py
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/models/models_pb2.pyi
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/__init__.py
RENAMED
|
File without changes
|
{getstream-3.1.2 → getstream-3.2.0}/getstream/video/rtc/pb/stream/video/sfu/signal_rpc/signal_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|