api: Fetch server_settings when initializing Client.
We store the information about the version of the server and the feature
level for transparent compatibility handling.
MODIFY
zulip/zulip/__init__.py
zulip/zulip/__init__.py
@@ -486,6 +486,11 @@ class Client:
self.has_connected = False
+ server_settings = self.get_server_settings()
+ self.zulip_version: Optional[str] = server_settings.get("zulip_version")
+ self.feature_level: int = server_settings.get("zulip_feature_level", 0)
+ assert self.zulip_version is not None
+
def ensure_session(self) -> None:
# Check if the session has been created already, and return

MODIFY
zulip_botserver/tests/test_server.py
zulip_botserver/tests/test_server.py
@@ -25,6 +25,13 @@ class BotServerTests(BotServerTestCase):
def handler_class(self) -> Any:
return BotServerTests.MockMessageHandler()
+ def setUp(self) -> None:
+ # Since initializing Client invokes `get_server_settings` that fails in the test
+ # environment, we need to mock it to pretend that there exists a backend.
+ super().setUp()
+ self.patch = mock.patch("zulip.Client.get_server_settings", return_value=mock.Mock())
+ self.patch.start()
+
def test_successful_request(self) -> None:
available_bots = ["helloworld"]
bots_config = {

api: Fetch server_settings when initializing Client.

We store the information about the version of the server and the feature
level for transparent compatibility handling.