zulip/zerver/lib
Zixuan James Li b65401ed47 tests: Tighten signature of the wrapped test client helpers.
We wrap methods of the django test client for the test suite, and
type keyword variadic arguments as `ClientArg` as it might called
with a mix of `bool` and `str`.

This is problematic when we call the original methods on the test
client as we attempt to unpack the dictionary of keyword arguments,
which has no type guarantee that certain keys that the test client
requires to be bool will certainly be bool.

For example, you can call
`self.client_post(url, info, follow="invalid")` without getting a
mypy error while the django test client requires `follow: bool`.

The unsafely typed keyword variadic arguments leads to error within
the body the wrapped test client functions as we call
`django_client.post` with `**kwargs` when django-stubs gets added,
making it necessary to refactor these wrappers for type safety.

The approach here minimizes the need to refactor callers, as we
keep `kwargs` being variadic while change its type from `ClientArg`
to `str` after defining all the possible `bool` arguments that might
previously appear in `kwargs`. We also copy the defaults from the
django test client as they are unlikely to change.

The tornado test cases are also refactored due to the change of
the signature of `set_http_headers` with the `skip_user_agent` being
added as a keyword argument. We want to unconditionally set this flag to
`True` because the `HTTP_USER_AGENT` is not supported. It also removes a
unnecessary duplication of an argument.

This is a part of the django-stubs refactorings.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2022-06-28 16:12:00 -07:00
..
markdown markdown: Parse included blocks in a new parser state. 2022-06-27 17:37:00 -07:00
url_preview python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
webhooks mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
__init__.py
addressee.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
alert_words.py docs: Remove highlight parameters from links. 2022-02-16 13:15:39 -08:00
async_utils.py requirements: Upgrade Python requirements. 2022-05-03 10:10:06 -07:00
attachments.py python: Fix mypy no_implicit_reexport errors. 2021-07-16 14:02:31 -07:00
avatar_hash.py typing: Improve typing with assertions. 2021-08-20 05:54:19 -07:00
avatar.py avatar: Remove ?x=x kludge. 2021-10-14 12:47:43 -07:00
bot_config.py bot_config: Placate mypy 0.930. 2021-12-28 09:31:55 -08:00
bot_lib.py actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
bot_storage.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
bulk_create.py bulk_create: Copy realm-level defaults in bulk_create_users. 2022-05-04 12:52:43 -07:00
cache_helpers.py session: Enforce that changes cannot happen in a transaction. 2022-03-15 13:52:15 -07:00
cache.py decorator: Type cache_info, cache_clear for ignore_unhashable_lru_cache. 2022-06-27 10:20:05 -07:00
camo.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
ccache.py python: Remove default "utf8" argument for encode(), decode(). 2021-08-02 15:53:52 -07:00
compatibility.py compatibility: Shift functions to new module. 2021-06-05 07:33:25 -07:00
context_managers.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
create_user.py user_profile: Fallback to "" for timezone upon creation. 2022-06-28 16:05:24 -07:00
data_types.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
db.py db: Fix types. 2022-03-24 19:16:52 -07:00
debug.py python: Accept Optional[FrameType] in signal handlers. 2021-12-28 09:31:55 -08:00
dev_ldap_directory.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
digest.py digest: Don't send emails to deactivated users, even if queued. 2022-04-15 14:32:55 -07:00
display_recipient.py python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
domains.py python: Convert deprecated Django ugettext alias to gettext. 2021-04-15 18:01:34 -07:00
drafts.py actions: Split out zerver.lib.recipient_users. 2022-04-14 17:14:30 -07:00
email_mirror_helpers.py email_mirror: Move ZulipEmailForwardUserError into email_mirror_helpers. 2021-08-31 16:37:54 -07:00
email_mirror.py email_mirror: Handle invalid charset="..." values. 2022-05-16 12:04:38 -07:00
email_notifications.py email_notifications: Run html2text as a subprocess. 2022-06-26 17:32:59 -07:00
email_validation.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
emoji.py emoji: Add backend changes to support still image for animated emojis. 2021-09-12 07:13:04 +00:00
error_notify.py actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
event_schema.py user_groups: Rename subgroups fields to direct_subgroup_ids. 2022-05-17 14:51:45 -07:00
events.py user_groups: Rename subgroups fields to direct_subgroup_ids. 2022-05-17 14:51:45 -07:00
exceptions.py streams: Update error message returned for administrative access. 2022-06-07 09:36:24 -07:00
export.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
external_accounts.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
fix_unreads.py models: Use default db table name for UserTopic. 2021-09-17 12:14:28 -07:00
generate_test_data.py populate_db: Generate resolved topics for testing. 2021-08-03 16:42:09 -07:00
github.py fetch-contributor-data: Use builtin backoff. 2021-09-01 05:34:13 -07:00
home.py home: Prevent mypy from inferring the type of page_params. 2022-06-23 22:09:05 -07:00
hotspots.py hotspots: Remove intro_reply hotspot. 2021-12-07 21:55:59 -08:00
html_diff.py html_diff: Handle empty differences between empty strings. 2021-10-18 18:27:40 -07:00
html_to_text.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
i18n.py django: Use HttpRequest.headers. 2022-05-13 20:42:20 -07:00
import_realm.py typing: Add none-checks for db queries. 2022-05-31 09:43:55 -07:00
initial_password.py initial_password: Add explicit development environment assertion. 2022-03-21 12:05:59 -07:00
integrations.py typing: Add none-check for WebhookIntegration. 2022-06-23 19:25:48 -07:00
logging_util.py logging_util: Save an assertion with __getitem__. 2022-06-28 16:05:24 -07:00
management.py management: Remove unnecessary default=SUPPRESS logic. 2022-03-21 12:05:59 -07:00
mdiff.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
mention.py mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
message.py python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
migrate.py typing: Replace CursorObj by CursorWrapper. 2021-08-20 05:54:19 -07:00
mobile_auth_otp.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
name_restrictions.py name_restrictions: Add your-org.zulipchat.com as a reserved name. 2022-05-17 14:58:31 -07:00
narrow.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
notes.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
notification_data.py notifications: Move user group mentions helpers together. 2022-04-27 16:43:54 -07:00
onboarding.py onboarding: Override the language of welcome bot PMs with user setting. 2022-04-28 15:03:26 -07:00
outgoing_http.py python: Replace requests.packages.urllib3 alias with urllib3. 2022-01-23 22:14:17 -08:00
outgoing_webhook.py actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
presence.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
profile.py profile: Strengthen decorator types using ParamSpec. 2022-04-14 12:44:35 -07:00
push_notifications.py push_notifications: Soft reactivate mentioned users. 2022-04-27 16:43:54 -07:00
pysa.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
queue.py requirements: Upgrade to Tornado 6. 2022-05-02 17:41:49 -07:00
rate_limiter.py upload: Allow rate limited access to spectators for uploaded files. 2022-03-24 10:50:00 -07:00
realm_description.py markdown: Refactor out additional properties added to Message. 2021-06-24 18:14:53 -07:00
realm_icon.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
realm_logo.py realm: Rename plan type constants to be more descriptive. 2021-10-19 12:20:39 -07:00
recipient_users.py actions: Split out zerver.lib.recipient_users. 2022-04-14 17:14:30 -07:00
redis_utils.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
remote_server.py push_notifs: Log the number of devices notification was sent to. 2021-09-29 15:50:06 -07:00
request.py python: Unquote some unnecessarily quoted type annotations. 2022-06-26 17:37:41 -07:00
response.py response: Replace response.asynchronous attribute with new class. 2022-05-27 14:27:34 -07:00
rest.py decorator: Only URL-decode application/x-www-form-urlencoded requests. 2022-06-25 08:36:16 -07:00
retention.py retention: Guarantee type-safeness when calling move_rows. 2022-06-28 16:01:35 -07:00
safe_session_cached_db.py session: Enforce that changes cannot happen in a transaction. 2022-03-15 13:52:15 -07:00
scim_filter.py scim: Order Users by id when queried using filter syntax. 2021-11-26 16:06:16 -08:00
scim.py mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
send_email.py send_email: Define variable typed as a Union. 2022-06-23 19:25:48 -07:00
server_initialization.py actions: Split out zerver.actions.users. 2022-04-14 17:14:34 -07:00
sessions.py typing: Add none-checks for miscellaneous cases. 2022-05-31 09:43:55 -07:00
singleton_bmemcached.py cache: Instantiate only one BMemcached cache backend. 2022-05-02 17:41:49 -07:00
soft_deactivation.py typing: Fix type annotation for missing messages in soft reactivation. 2022-06-28 16:05:24 -07:00
sounds.py actions: Split out zerver.lib.sounds. 2022-04-14 14:26:40 -07:00
sqlalchemy_utils.py sqlalchemy_utils: Remove NonClosingPool.recreate override. 2022-02-10 11:59:41 -08:00
storage.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
stream_color.py streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
stream_subscription.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
stream_topic.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
stream_traffic.py streams: Extract stream_traffic library. 2022-03-14 18:01:36 -07:00
streams.py python: Unquote some unnecessarily quoted type annotations. 2022-06-26 17:37:41 -07:00
string_validation.py string_validation: Prohibit non-printable characters in stream names. 2022-02-01 16:04:34 -08:00
subdomains.py python: Reformat with Black 22 (stable). 2022-02-18 18:03:13 -08:00
subscription_info.py actions: Move part into zerver.lib.subscription_info. 2022-04-14 17:14:33 -07:00
templates.py templates: Fix Python-Markdown extension type. 2022-06-26 17:37:14 -07:00
test_classes.py tests: Tighten signature of the wrapped test client helpers. 2022-06-28 16:12:00 -07:00
test_console_output.py requirements: Upgrade Python requirements. 2022-05-03 10:10:06 -07:00
test_data.source.txt Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
test_fixtures.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
test_helpers.py tests: Tighten signature of the wrapped test client helpers. 2022-06-28 16:12:00 -07:00
test_runner.py typing: Add none-checks for miscellaneous cases. 2022-05-31 09:43:55 -07:00
tex.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
thumbnail.py thumbnail: Remove unused is_camo_url parameter. 2021-08-19 01:51:37 -07:00
timeout.py timeout: Minor comment cleanups. 2022-04-07 17:26:01 -07:00
timestamp.py docs: Add missing space in “time zone”. 2022-02-24 14:05:12 -08:00
timezone.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
topic.py python: Unquote some unnecessarily quoted type annotations. 2022-06-26 17:37:41 -07:00
transfer.py typing: Add appropriate none-checks for LOCAL_UPLOADS_DIR. 2022-05-31 09:43:55 -07:00
type_debug.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
types.py types: Better types for API fields. 2022-05-27 14:43:00 -07:00
unminify.py unminify: Fix lookup if source map does not exist in disk. 2021-03-16 14:46:18 -07:00
upload.py emoji: Add none checks for uploaded file name. 2022-06-23 19:25:48 -07:00
url_encoding.py hash_util: Move enc/decodeHashComponent to shared. 2022-03-01 18:14:31 -08:00
user_agent.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
user_counts.py actions: Split out zerver.lib.user_counts. 2022-04-14 17:14:30 -07:00
user_groups.py typing: Tighten type annotation for serialized user groups. 2022-06-28 16:05:24 -07:00
user_message.py actions: Split out zerver.lib.user_message. 2022-04-14 17:14:30 -07:00
user_mutes.py typing: Use assertions for function arguments. 2021-07-26 14:48:45 -07:00
user_status.py status: Extract format_user_status helper. 2021-09-02 16:50:25 -07:00
user_topics.py typing: Add none-checks for stream.recipient_id. 2022-06-23 19:25:48 -07:00
users.py python: Unquote some unnecessarily quoted type annotations. 2022-06-26 17:37:41 -07:00
utils.py utils: Remove unused split_by function. 2021-08-19 01:51:37 -07:00
validator.py python: Unquote some unnecessarily quoted type annotations. 2022-06-26 17:37:41 -07:00
widget.py poll widget: Add server validation. 2021-06-14 17:46:16 -07:00
zcommand.py actions: Split out zerver.actions.user_settings. 2022-04-14 17:14:34 -07:00
zephyr.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00