zulip/zerver/lib
Alex Vandiver c13e3dee24 katex: Replace subprocess call with minimal external service.
Replace a separate call to subprocess, starting `node` from scratch,
with an optional standalone node Express service which performs the
rendering.  In benchmarking, this reduces the overhead of a KaTeX call
from 120ms to 2.8ms.  This is notable because enough calls to KaTeX in
a single message would previously time out the whole message
rendering.

The service is optional because he majority of deployments do not use
enough LaTeX to merit the additional memory usage (60Mb).

Fixes: #17425.
2024-03-15 15:34:12 -07:00
..
markdown help: Add "View stream subscribers" page. 2024-03-05 10:22:18 -08:00
upload requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
url_preview ruff: Fix RUF022 __all__ is not sorted. 2024-03-01 09:30:04 -08:00
webhooks mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
__init__.py
addressee.py actions: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
alert_words.py models: Extract zerver.models.alert_words. 2023-12-16 22:08:44 -08:00
async_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
attachments.py models: Move some functions to zerver.lib.attachments. 2023-12-16 22:08:44 -08:00
avatar_hash.py utils: Remove make_safe_digest wrapper. 2023-07-19 10:54:05 -07:00
avatar.py python: Consistently use from…import for urllib.parse. 2023-12-05 13:03:07 -08:00
bot_config.py ruff: Fix UP032 Use f-string instead of format call. 2023-08-02 15:58:55 -07:00
bot_lib.py ruff: Fix PLW0108 Lambda may be unnecessary. 2024-03-01 09:30:04 -08:00
bot_storage.py python: Import F, Q, QuerySet from their canonical module. 2023-03-05 14:46:28 -08:00
bulk_create.py models: Extract zerver.models.groups. 2023-12-16 22:08:44 -08:00
cache_helpers.py caches: Only take the realm_id, not the Realm, as a cache key function. 2024-03-04 16:35:57 -08:00
cache.py caches: Only take the realm_id, not the Realm, as a cache key function. 2024-03-04 16:35:57 -08:00
camo.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
ccache.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
compatibility.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
context_managers.py context_managers: Open file in write mode in lockfile_nonblocking. 2024-03-06 10:35:02 -08:00
create_user.py models: Extract zerver.models.realms. 2023-12-16 22:08:44 -08:00
data_types.py python: Elide unnecessary list wrappers. 2023-09-13 12:41:23 -07:00
db.py test_helpers: Fix logging in cursor_executemany mock. 2023-11-15 15:27:54 -08:00
debug.py black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
default_streams.py streams: Pass stream_weekly_traffic field in stream objects. 2023-08-06 18:06:42 -07:00
dev_ldap_directory.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
digest.py models: Extract zerver.models.streams. 2023-12-16 22:08:44 -08:00
display_recipient.py models: Extract zerver.models.recipients. 2023-12-16 22:08:44 -08:00
domains.py
drafts.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
email_mirror_helpers.py email_mirror: Move ZulipEmailForwardUserError into email_mirror_helpers. 2021-08-31 16:37:54 -07:00
email_mirror.py lib: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
email_notifications.py timezone: Only look up canonical time zones from the system. 2024-03-01 17:38:08 -08:00
email_validation.py email_validation: Merge two implementations of a disposable-email check. 2024-02-27 10:19:23 -08:00
emoji_utils.py emoji: Match emoji sequences in markdown. 2023-08-23 16:18:15 -07:00
emoji.py models: Extract zerver.models.realm_emoji. 2023-12-16 22:08:44 -08:00
event_schema.py events: Change format of authentication_methods realm_update_dict event. 2024-03-05 11:48:58 -08:00
events.py events: Change format of authentication_methods realm_update_dict event. 2024-03-05 11:48:58 -08:00
exceptions.py zilencer: Improve json error when plan doesn't allow push notifs. 2024-02-07 10:36:33 -08:00
export.py ruff: Fix PLR2044 Line with empty comment. 2024-03-01 09:30:04 -08:00
external_accounts.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
fix_unreads.py ruff: Fix PERF401 Use a list comprehension to create a transformed list. 2023-08-07 17:23:55 -07:00
generate_test_data.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
github.py ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
home.py remote_billing: Make "plan management" always available. 2024-03-05 11:53:51 -08:00
hotspots.py banner: Make banner about automatic follow/unmute topics one-time only. 2023-12-06 18:19:20 -08:00
html_diff.py html_diff: Fix lxml import. 2023-03-05 14:46:28 -08:00
html_to_text.py widgets: Rename confusing attribute name in tabbed_sections.py. 2023-08-31 11:55:28 -07:00
i18n.py i18n: Fix default language for users created via API/LDAP. 2023-10-01 21:10:13 +02:00
import_realm.py backends: Implementation of restricting certain backends by plan. 2024-03-05 11:48:58 -08:00
initial_password.py initial_password: Add explicit development environment assertion. 2022-03-21 12:05:59 -07:00
integrations.py integrations: Create incoming webhook for GitHub Sponsors. 2024-02-07 09:52:03 -08:00
logging_util.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
management.py models: Extract zerver.models.clients. 2023-12-16 22:08:44 -08:00
mdiff.py node_tests: Move to web/tests. 2023-02-23 16:04:17 -08:00
mention.py models: Extract zerver.models.streams. 2023-12-16 22:08:44 -08:00
message_cache.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
message.py message: Merge unnecessary cache_transformer step. 2024-02-14 12:27:03 -08:00
migrate.py migration: Make 'rename_indexes_constraints' a lib function. 2023-12-06 18:19:20 -08:00
mobile_auth_otp.py
muted_users.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
name_restrictions.py name_restrictions: Reserve additional subdomains. 2024-02-07 12:10:00 -08:00
narrow_helpers.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
narrow.py narrow: Fix comment. 2024-03-11 14:13:26 -07:00
notes.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
notification_data.py models: Extract zerver.models.scheduled_jobs. 2023-12-16 22:08:44 -08:00
onboarding.py lib: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
outgoing_http.py outgoing_http: Support fractional-second timeouts. 2024-03-15 15:34:12 -07:00
outgoing_webhook.py message: Split MessageDict and friends into its own file. 2024-02-14 12:27:03 -08:00
per_request_cache.py per-request caches: Add per_request_cache library. 2023-08-11 11:09:34 -07:00
presence.py models: Move query_for_ids to zerver.lib.query_helpers. 2023-12-16 22:08:44 -08:00
profile.py profile: Strengthen decorator types using ParamSpec. 2022-04-14 12:44:35 -07:00
push_notifications.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
pysa.py
query_helpers.py models: Move query_for_ids to zerver.lib.query_helpers. 2023-12-16 22:08:44 -08:00
queue.py requirements: Upgrade Python requirements. 2024-01-29 10:41:54 -08:00
rate_limiter.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
realm_description.py markdown: Refactor out additional properties added to Message. 2021-06-24 18:14:53 -07:00
realm_icon.py settings: Make DEFAULT_LOGO_URI/DEFAULT_AVATAR_URI use staticfiles. 2023-02-14 17:17:06 -05:00
realm_logo.py settings: Make DEFAULT_LOGO_URI/DEFAULT_AVATAR_URI use staticfiles. 2023-02-14 17:17:06 -05:00
recipient_parsing.py request: Extract out methods from 'scheduled_messages' to reuse. 2023-10-10 17:15:28 -07:00
recipient_users.py models: Extract zerver.models.recipients. 2023-12-16 22:08:44 -08:00
redis_utils.py
remote_server.py push-bouncer: Exclude LoggingCountStats with partial data. 2024-02-26 17:53:12 -08:00
request.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
response.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
rest.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
retention.py models: Always search Messages with a realm_id or id limit. 2023-09-11 15:00:37 -07:00
safe_session_cached_db.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
scheduled_messages.py models: Extract zerver.models.scheduled_jobs. 2023-12-16 22:08:44 -08:00
scim_filter.py scim: Order Users by id when queried using filter syntax. 2021-11-26 16:06:16 -08:00
scim.py models: Extract zerver.models.realms. 2023-12-16 22:08:44 -08:00
send_email.py send_email: Distinct emails means distinct, case-insensitively. 2024-01-04 10:46:53 -08:00
server_initialization.py backends: Implementation of restricting certain backends by plan. 2024-03-05 11:48:58 -08:00
sessions.py models: Extract zerver.models.users. 2023-12-16 22:08:44 -08:00
singleton_bmemcached.py requirements: Upgrade Python requirements. 2023-04-03 22:39:21 -07:00
soft_deactivation.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
sounds.py actions: Split out zerver.lib.sounds. 2022-04-14 14:26:40 -07:00
sqlalchemy_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
storage.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
stream_color.py streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
stream_subscription.py streams: Send user creation events on adding subscribers. 2023-11-21 23:58:45 -08:00
stream_topic.py message_send: Handle notifications for UNMUTED topic in a muted stream. 2023-03-06 19:15:45 -08:00
stream_traffic.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
streams.py streams: Remove a lie from the docstring. 2024-02-14 12:27:03 -08:00
string_validation.py lib: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
subdomains.py python: Consistently use from…import for urllib.parse. 2023-12-05 13:03:07 -08:00
subscription_info.py models: Extract zerver.models.streams. 2023-12-16 22:08:44 -08:00
templates.py requirements: Upgrade Python requirements. 2023-04-03 22:39:21 -07:00
test_classes.py ruff: Fix PLW0108 Lambda may be unnecessary. 2024-03-01 09:30:04 -08:00
test_console_output.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
test_data.source.txt Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
test_fixtures.py ruff: Fix ANN204 missing return type annotation for __init__. 2022-11-16 09:29:11 -08:00
test_helpers.py test_helpers: Remove /self-hosted-billing/ from exempt_patterns. 2024-03-05 11:53:51 -08:00
test_runner.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
tex.py katex: Replace subprocess call with minimal external service. 2024-03-15 15:34:12 -07:00
thumbnail.py docs: Remove some outdated references to thumbnailing.md doc. 2022-07-12 17:44:24 -07:00
timeout.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
timestamp.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
timezone.py timezone: Improve tzdata parser’s compatibility with zic(8). 2022-09-20 16:58:31 -07:00
topic.py topic: Fix history order for topic moves. 2024-02-20 21:30:32 -08:00
transfer.py uploads: Allow uploads to set storage class. 2023-07-19 16:19:34 -07:00
typed_endpoint.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
types.py python: Consistently use from…import for datetime. 2023-12-05 12:01:18 -08:00
url_encoding.py lib: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
url_redirects.py help: Improve integrations documentation. 2024-02-01 09:45:56 -08:00
user_agent.py
user_counts.py python: Elide unnecessary list wrappers. 2023-09-13 12:41:23 -07:00
user_groups.py ruff: Fix PERF403 Use a dictionary comprehension instead of a for-loop. 2024-03-01 09:30:04 -08:00
user_message.py actions: Split out zerver.lib.user_message. 2022-04-14 17:14:30 -07:00
user_status.py users: Update presence and user status code to support restricted users. 2023-11-21 23:58:45 -08:00
user_topics.py lib: Rename *topic local variables to *topic_name. 2024-01-15 09:40:43 -08:00
users.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
utils.py utils: Remove make_safe_digest wrapper. 2023-07-19 10:54:05 -07:00
validator.py timezone: Only look up canonical time zones from the system. 2024-03-01 17:38:08 -08:00
widget.py widgets: Fix bug where a new line right after /todo broke rendering. 2023-09-08 15:39:07 -07:00
zcommand.py ruff: Fix UP032 Use f-string instead of format call. 2023-08-02 15:58:55 -07:00
zephyr.py