mirror of https://github.com/zulip/zulip.git
mypy: Add types-defusedxml.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
532aee926c
commit
c48ef926e1
|
@ -56,7 +56,6 @@ module = [
|
||||||
"bitfield.*",
|
"bitfield.*",
|
||||||
"bmemcached.*",
|
"bmemcached.*",
|
||||||
"circuitbreaker.*",
|
"circuitbreaker.*",
|
||||||
"defusedxml.*", # https://github.com/tiran/defusedxml/issues/46
|
|
||||||
"digitalocean.*",
|
"digitalocean.*",
|
||||||
"django_auth_ldap.*",
|
"django_auth_ldap.*",
|
||||||
"django_bmemcached.*",
|
"django_bmemcached.*",
|
||||||
|
|
|
@ -3236,6 +3236,10 @@ types-decorator==5.1.8.20240310 \
|
||||||
--hash=sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757 \
|
--hash=sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757 \
|
||||||
--hash=sha256:52e316b03783886a8a2abdc228f7071680ba65894545cd2085ebe3cf88684a0e
|
--hash=sha256:52e316b03783886a8a2abdc228f7071680ba65894545cd2085ebe3cf88684a0e
|
||||||
# via -r requirements/mypy.in
|
# via -r requirements/mypy.in
|
||||||
|
types-defusedxml==0.7.0.20240218 \
|
||||||
|
--hash=sha256:05688a7724dc66ea74c4af5ca0efc554a150c329cb28c13a64902cab878d06ed \
|
||||||
|
--hash=sha256:2b7f3c5ca14fdbe728fab0b846f5f7eb98c4bd4fd2b83d25f79e923caa790ced
|
||||||
|
# via -r requirements/mypy.in
|
||||||
types-docutils==0.21.0.20241005 \
|
types-docutils==0.21.0.20241005 \
|
||||||
--hash=sha256:48f804a2b50da3a1b1681c4ca1b6184416a6e4129e302d15c44e9d97c59b3365 \
|
--hash=sha256:48f804a2b50da3a1b1681c4ca1b6184416a6e4129e302d15c44e9d97c59b3365 \
|
||||||
--hash=sha256:4d9021422f2f3fca8b0726fb8949395f66a06c0d951479eb3b1387d75b134430
|
--hash=sha256:4d9021422f2f3fca8b0726fb8949395f66a06c0d951479eb3b1387d75b134430
|
||||||
|
|
|
@ -11,6 +11,7 @@ types-beautifulsoup4
|
||||||
types-boto
|
types-boto
|
||||||
types-chardet
|
types-chardet
|
||||||
types-decorator
|
types-decorator
|
||||||
|
types-defusedxml
|
||||||
types-jsonschema
|
types-jsonschema
|
||||||
types-Markdown
|
types-Markdown
|
||||||
types-oauthlib
|
types-oauthlib
|
||||||
|
|
|
@ -51,4 +51,4 @@ API_FEATURE_LEVEL = (
|
||||||
# historical commits sharing the same major version, in which case a
|
# historical commits sharing the same major version, in which case a
|
||||||
# minor version bump suffices.
|
# minor version bump suffices.
|
||||||
|
|
||||||
PROVISION_VERSION = (302, 0) # bumped 2024-11-18 to upgrade Python requirements
|
PROVISION_VERSION = (303, 0) # bumped 2024-11-18 for types-defusedxml
|
||||||
|
|
|
@ -32,6 +32,7 @@ from zerver.lib.response import json_success
|
||||||
from zerver.lib.subdomains import get_subdomain
|
from zerver.lib.subdomains import get_subdomain
|
||||||
from zerver.lib.typed_endpoint import typed_endpoint, typed_endpoint_without_parameters
|
from zerver.lib.typed_endpoint import typed_endpoint, typed_endpoint_without_parameters
|
||||||
from zerver.lib.url_encoding import append_url_query_string
|
from zerver.lib.url_encoding import append_url_query_string
|
||||||
|
from zerver.lib.utils import assert_is_not_none
|
||||||
from zerver.models import UserProfile
|
from zerver.models import UserProfile
|
||||||
from zerver.models.realms import get_realm
|
from zerver.models.realms import get_realm
|
||||||
|
|
||||||
|
@ -276,10 +277,10 @@ def join_bigbluebutton(request: HttpRequest, *, bigbluebutton: str) -> HttpRespo
|
||||||
raise JsonableError(_("Error connecting to the BigBlueButton server."))
|
raise JsonableError(_("Error connecting to the BigBlueButton server."))
|
||||||
|
|
||||||
payload = ElementTree.fromstring(response.text)
|
payload = ElementTree.fromstring(response.text)
|
||||||
if payload.find("messageKey").text == "checksumError":
|
if assert_is_not_none(payload.find("messageKey")).text == "checksumError":
|
||||||
raise JsonableError(_("Error authenticating to the BigBlueButton server."))
|
raise JsonableError(_("Error authenticating to the BigBlueButton server."))
|
||||||
|
|
||||||
if payload.find("returncode").text != "SUCCESS":
|
if assert_is_not_none(payload.find("returncode")).text != "SUCCESS":
|
||||||
raise JsonableError(_("BigBlueButton server returned an unexpected error."))
|
raise JsonableError(_("BigBlueButton server returned an unexpected error."))
|
||||||
|
|
||||||
join_params = urlencode(
|
join_params = urlencode(
|
||||||
|
@ -297,7 +298,7 @@ def join_bigbluebutton(request: HttpRequest, *, bigbluebutton: str) -> HttpRespo
|
||||||
# createTime parameter will be created, as the meeting on
|
# createTime parameter will be created, as the meeting on
|
||||||
# the BigBlueButton server has to be recreated. (after a
|
# the BigBlueButton server has to be recreated. (after a
|
||||||
# few minutes)
|
# few minutes)
|
||||||
"createTime": payload.find("createTime").text,
|
"createTime": assert_is_not_none(payload.find("createTime")).text,
|
||||||
},
|
},
|
||||||
quote_via=quote,
|
quote_via=quote,
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,6 +12,7 @@ from zerver.decorator import webhook_view
|
||||||
from zerver.lib.exceptions import JsonableError, UnsupportedWebhookEventTypeError
|
from zerver.lib.exceptions import JsonableError, UnsupportedWebhookEventTypeError
|
||||||
from zerver.lib.response import json_success
|
from zerver.lib.response import json_success
|
||||||
from zerver.lib.typed_endpoint import typed_endpoint_without_parameters
|
from zerver.lib.typed_endpoint import typed_endpoint_without_parameters
|
||||||
|
from zerver.lib.utils import assert_is_not_none
|
||||||
from zerver.lib.webhooks.common import check_send_webhook_message
|
from zerver.lib.webhooks.common import check_send_webhook_message
|
||||||
from zerver.models import UserProfile
|
from zerver.models import UserProfile
|
||||||
|
|
||||||
|
@ -21,16 +22,18 @@ def api_pivotal_webhook_v3(request: HttpRequest, user_profile: UserProfile) -> t
|
||||||
|
|
||||||
def get_text(attrs: list[str]) -> str:
|
def get_text(attrs: list[str]) -> str:
|
||||||
start = payload
|
start = payload
|
||||||
try:
|
for attr in attrs:
|
||||||
for attr in attrs:
|
child = start.find(attr)
|
||||||
start = start.find(attr)
|
if child is None:
|
||||||
return start.text
|
return ""
|
||||||
except AttributeError:
|
start = child
|
||||||
return ""
|
assert start.text is not None
|
||||||
|
return start.text
|
||||||
|
|
||||||
event_type = payload.find("event_type").text
|
event_type = assert_is_not_none(payload.find("event_type")).text
|
||||||
description = payload.find("description").text
|
description = assert_is_not_none(payload.find("description")).text
|
||||||
project_id = payload.find("project_id").text
|
assert description is not None
|
||||||
|
project_id = assert_is_not_none(payload.find("project_id")).text
|
||||||
story_id = get_text(["stories", "story", "id"])
|
story_id = get_text(["stories", "story", "id"])
|
||||||
# Ugh, the URL in the XML data is not a clickable URL that works for the user
|
# Ugh, the URL in the XML data is not a clickable URL that works for the user
|
||||||
# so we try to build one that the user can actually click on
|
# so we try to build one that the user can actually click on
|
||||||
|
|
Loading…
Reference in New Issue