zulip/zerver/lib
Zixuan James Li c9f54766c3 rate_limiter: Extract rate limit related functions.
This refactors rate limit related functions from `zerver.decorator` to
zerver.lib.rate_limiter.

We conditionally import `RemoteZulipServer`, `RequestNotes`, and
`RateLimitedRemoteZulipServer` to avoid circular dependency.

Most instances of importing these functions from `zerver.decorator` got
updated, with a few exceptions in `zerver.tests.test_decorators`, where
we do want to mock the rate limiting functions imported in
`zerver.decorator`. The same goes with the mocking example in the
"testing-with-django" documentation.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2022-08-12 16:51:55 -07:00
..
markdown markdown: Update characters allowed before @ and stream mentions. 2022-08-06 19:29:39 -07:00
url_preview python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
webhooks integrations: Add RhodeCode webhook integration. 2022-07-13 14:10:00 -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.py avatar: Remove ?x=x kludge. 2021-10-14 12:47:43 -07:00
avatar_hash.py typing: Improve typing with assertions. 2021-08-20 05:54:19 -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
bulk_create.py user_groups: Add MEMBERS_GROUP_NAME constant. 2022-08-11 04:38:36 -07:00
cache.py typing: Avoid redefinition of incompatible QuerySets. 2022-07-07 11:27:43 -07:00
cache_helpers.py cache: Fix type annotation for session_cache_items. 2022-08-06 16:16:17 -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 requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -07:00
context_managers.py
create_user.py python: Use a real parser for email addresses. 2022-07-29 15:47:33 -07:00
data_types.py
db.py db: Use cursor_factory psycopg2 option. 2022-07-05 17:54:17 -07:00
debug.py python: Accept Optional[FrameType] in signal handlers. 2021-12-28 09:31:55 -08:00
dev_ldap_directory.py python: Use a real parser for email addresses. 2022-07-29 15:47:33 -07:00
digest.py typing: Broaden type annotations for QuerySet compatibility. 2022-07-07 11:27:42 -07:00
display_recipient.py display_recipient: Tighten function signatures with ValuesQuerySet. 2022-07-07 11:28:13 -07:00
domains.py
drafts.py actions: Split out zerver.lib.recipient_users. 2022-04-14 17:14:30 -07:00
email_mirror.py python: Use a real parser for email addresses. 2022-07-29 15:47:33 -07:00
email_mirror_helpers.py email_mirror: Move ZulipEmailForwardUserError into email_mirror_helpers. 2021-08-31 16:37:54 -07:00
email_notifications.py email_notifications: Fix type annotation for tuples. 2022-07-26 18:00:24 -07:00
email_validation.py python: Use a real parser for email addresses. 2022-07-29 15:47:33 -07:00
emoji.py emoji: Update emoji validation error messages with more information. 2022-07-12 16:43:29 -07:00
error_notify.py error_notify: Fix type narrowing of settings.ERROR_BOT. 2022-07-15 14:00:56 -07:00
event_schema.py user_topic: Add user_topic event. 2022-08-04 17:44:00 -07:00
events.py user_topic: Add user_topic event. 2022-08-04 17:44:00 -07:00
exceptions.py exceptions: Guard validation error conversion with message_dict. 2022-07-26 14:17:46 -07:00
export.py realm_reactivation: Prevent realm reactivation link reuse. 2022-07-26 17:14:26 -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
i18n.py django: Use HttpRequest.headers. 2022-05-13 20:42:20 -07:00
import_realm.py import: Remove dead do_import_system_bots code. 2022-08-11 13:59:50 -07:00
initial_password.py initial_password: Add explicit development environment assertion. 2022-03-21 12:05:59 -07:00
integrations.py integrations: Fix misleading import. 2022-08-10 16:28:38 -07:00
logging_util.py logging_util: Save an assertion with __getitem__. 2022-06-28 16:05:24 -07:00
management.py typing: Avoid redefinition of incompatible QuerySets. 2022-07-07 11:27:43 -07:00
mdiff.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
mention.py markdown: Update characters allowed before @ and stream mentions. 2022-08-06 19:29:39 -07:00
message.py message_send: Add service_queue_events to SendMessageRequest. 2022-07-30 18:03:56 -07:00
migrate.py typing: Replace CursorObj by CursorWrapper. 2021-08-20 05:54:19 -07:00
mobile_auth_otp.py
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: Use dictionary comprehension for dict initialization. 2022-08-06 16:21:12 -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 typing: Avoid redefinition of incompatible QuerySets. 2022-07-07 11:27:43 -07: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
queue.py requirements: Upgrade to Tornado 6. 2022-05-02 17:41:49 -07:00
rate_limiter.py rate_limiter: Extract rate limit related functions. 2022-08-12 16:51:55 -07:00
realm_description.py markdown: Refactor out additional properties added to Message. 2021-06-24 18:14:53 -07:00
realm_icon.py
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
remote_server.py push_notifs: Log the number of devices notification was sent to. 2021-09-29 15:50:06 -07:00
request.py request: Refactor has_request_variables with ParamSpec. 2022-08-06 16:19:48 -07:00
response.py response: Replace json_unauthorized with UnauthorizedError. 2022-07-18 18:01:42 -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: Inline move_rows query arguments. 2022-07-30 06:46:34 -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.py mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
scim_filter.py scim: Order Users by id when queried using filter syntax. 2021-11-26 16:06:16 -08:00
send_email.py typing: Broaden type annotations for QuerySet compatibility. 2022-07-07 11:27:42 -07:00
server_initialization.py realms: Create default system user groups for internal realm. 2022-08-11 04:38:36 -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 soft_deactivation: Tighten function signatures with generic QuerySet. 2022-07-07 11:28:13 -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 storage: Fix type annotation of content. 2022-07-27 13:46:13 -07:00
stream_color.py streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
stream_subscription.py stream_subscription: Tighten function signatures with generic QuerySet. 2022-07-07 11:28:13 -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 streams: Extract stream access checks in a function. 2022-07-26 17:25:52 -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 models: Remove "role" field from Subscription. 2022-07-13 17:07:44 -07:00
templates.py templates: Narrow the type of jinjia to Jinja2. 2022-07-26 18:00:24 -07:00
test_classes.py requirements: Upgrade Python requirements. 2022-07-05 17:54:17 -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 test_fixtures: Rebuild database when create_realm.py changes. 2022-08-12 13:16:35 -07:00
test_helpers.py upload: Replace boto3.Session with boto3.session.Session. 2022-07-30 06:46:34 -07:00
test_runner.py settings: Remove settings.BACKEND_DATABASE_TEMPLATE. 2022-08-11 13:45:28 -07:00
tex.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
thumbnail.py docs: Remove some outdated references to thumbnailing.md doc. 2022-07-12 17:44:24 -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 requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -07:00
topic.py topic: Tighten function signatures with generic QuerySet. 2022-07-07 11:28:13 -07:00
transfer.py transfer: Migrate from multiprocessing to ProcessPoolExecutor. 2022-07-29 15:27:09 -07:00
type_debug.py
types.py user_topic: Use get_user_topics to build muted topics tuples. 2022-08-04 17:44:00 -07:00
unminify.py
upload.py upload: Remove `mimetype` url parameter in `get_file_info`. 2022-08-08 16:06:09 -07:00
url_encoding.py python: Use a real parser for email addresses. 2022-07-29 15:47:33 -07:00
user_agent.py
user_counts.py actions: Split out zerver.lib.user_counts. 2022-04-14 17:14:30 -07:00
user_groups.py user_groups: Add EVERYONE_ON_INTERNET_GROUP_NAME constant. 2022-08-11 04:38:36 -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 user_status: Add UserInfoDict. 2022-07-22 16:31:18 -07:00
user_topics.py user_topics: Refactor the construction loop for UserTopicDict. 2022-08-11 13:45:54 -07:00
users.py 2fa: Refactor is_2fa_verified to require type narrowing. 2022-07-27 14:28:31 -07:00
utils.py utils: Remove unused split_by function. 2021-08-19 01:51:37 -07:00
validator.py requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -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