Skip to content

Commit 7223c04

Browse files
committed
Merge branch 'master' into tkdodo/ref/decouple-button-tracking
2 parents 36114d9 + e559d20 commit 7223c04

File tree

350 files changed

+6289
-2884
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

350 files changed

+6289
-2884
lines changed

migrations_lockfile.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ ahead of you.
55
To resolve this, rebase against latest master and regenerate your migration. This file
66
will then be regenerated, and you should be able to merge without conflicts.
77

8+
discover: 0001_move_discover_models
9+
810
explore: 0005_explore_django_json_field
911

1012
feedback: 0001_squashed_0004_index_together
@@ -25,7 +27,7 @@ preprod: 0010_actual_drop_preprod_artifact_analysis_file_id_col
2527

2628
replays: 0006_add_bulk_delete_job
2729

28-
sentry: 0943_create_data_access_grant
30+
sentry: 0945_move_discover_models
2931

3032
social_auth: 0003_social_auth_json_field
3133

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@mdx-js/loader": "^3.1.0",
2828
"@mdx-js/mdx": "^3.1.0",
2929
"@popperjs/core": "^2.11.5",
30+
"@r4ai/remark-callout": "^0.6.2",
3031
"@react-aria/button": "^3.13.1",
3132
"@react-aria/combobox": "^3.12.3",
3233
"@react-aria/focus": "^3.20.3",
@@ -163,6 +164,10 @@
163164
"react-textarea-autosize": "8.5.7",
164165
"react-virtualized": "^9.22.6",
165166
"reflux": "0.4.1",
167+
"rehype-expressive-code": "^0.41.2",
168+
"remark-frontmatter": "^5.0.0",
169+
"remark-gfm": "^4.0.1",
170+
"remark-mdx-frontmatter": "^5.2.0",
166171
"screenfull": "^6.0.2",
167172
"scroll-to-element": "^2.0.0",
168173
"sprintf-js": "1.0.3",

pnpm-lock.yaml

Lines changed: 592 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,6 @@ module = [
427427
"sentry.utils.math",
428428
"sentry.utils.memory",
429429
"sentry.utils.metrics",
430-
"sentry.utils.migrations",
431430
"sentry.utils.numbers",
432431
"sentry.utils.otp",
433432
"sentry.utils.projectflags",

requirements-base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ rfc3986-validator>=0.1.1
6666
sentry-arroyo>=2.26.0
6767
sentry-kafka-schemas>=1.3.14
6868
sentry-ophio>=1.1.3
69-
sentry-protos==0.2.1
69+
sentry-protos==0.3.1
7070
sentry-redis-tools>=0.5.0
7171
sentry-relay>=0.9.10
7272
sentry-sdk[http2]>=2.29.1

requirements-dev-frozen.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ sentry-forked-djangorestframework-stubs==3.16.0.post1
188188
sentry-forked-email-reply-parser==0.5.12.post1
189189
sentry-kafka-schemas==1.3.14
190190
sentry-ophio==1.1.3
191-
sentry-protos==0.2.1
191+
sentry-protos==0.3.1
192192
sentry-redis-tools==0.5.0
193193
sentry-relay==0.9.10
194194
sentry-sdk==2.29.1

requirements-frozen.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ sentry-arroyo==2.26.0
125125
sentry-forked-email-reply-parser==0.5.12.post1
126126
sentry-kafka-schemas==1.3.14
127127
sentry-ophio==1.1.3
128-
sentry-protos==0.2.1
128+
sentry-protos==0.3.1
129129
sentry-redis-tools==0.5.0
130130
sentry-relay==0.9.10
131131
sentry-sdk==2.29.1

rspack.config.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-env node */
22
/* eslint import/no-nodejs-modules:0 */
3-
3+
import remarkCallout from '@r4ai/remark-callout';
44
import {RsdoctorRspackPlugin} from '@rsdoctor/rspack-plugin';
55
import type {
66
Configuration,
@@ -16,6 +16,10 @@ import HtmlWebpackPlugin from 'html-webpack-plugin';
1616
import fs from 'node:fs';
1717
import {createRequire} from 'node:module';
1818
import path from 'node:path';
19+
import rehypeExpressiveCode from 'rehype-expressive-code';
20+
import remarkFrontmatter from 'remark-frontmatter';
21+
import remarkGfm from 'remark-gfm';
22+
import remarkMdxFrontmatter from 'remark-mdx-frontmatter';
1923
import {TsCheckerRspackPlugin} from 'ts-checker-rspack-plugin';
2024

2125
// @ts-expect-error: ts(5097) importing `.ts` extension is required for resolution, but not enabled until `allowImportingTsExtensions` is added to tsconfig
@@ -290,6 +294,22 @@ const appConfig: Configuration = {
290294
},
291295
{
292296
loader: '@mdx-js/loader',
297+
options: {
298+
remarkPlugins: [
299+
remarkFrontmatter,
300+
remarkMdxFrontmatter,
301+
remarkGfm,
302+
remarkCallout,
303+
],
304+
rehypePlugins: [
305+
[
306+
rehypeExpressiveCode,
307+
{
308+
useDarkModeMediaQuery: false,
309+
},
310+
],
311+
],
312+
},
293313
},
294314
],
295315
},

src/sentry/analytics/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33

44
from .attribute import Attribute
55
from .base import Analytics
6-
from .event import Event
6+
from .event import Event, eventclass
77
from .event_manager import default_manager
88
from .map import Map
99

1010
__all__ = (
1111
"Analytics",
1212
"Attribute",
13+
"eventclass",
1314
"Event",
1415
"Map",
1516
"record",

src/sentry/analytics/base.py

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,58 @@
11
from __future__ import annotations
22

3-
__all__ = ("Analytics",)
4-
53
import abc
6-
from typing import Any
4+
from typing import Any, overload
5+
from warnings import deprecated
76

87
from sentry.analytics.event import Event
98
from sentry.utils.services import Service
109

1110
from .event_manager import default_manager
1211

12+
__all__ = ("Analytics",)
13+
1314

1415
class Analytics(Service, abc.ABC):
1516
__all__ = ("record", "validate")
1617

1718
event_manager = default_manager
1819

19-
def record(
20-
self, event_or_event_type: str | Event | Any, instance: Any | None = None, **kwargs: Any
21-
) -> None:
22-
if isinstance(event_or_event_type, str):
23-
event = self.event_manager.get(event_or_event_type).from_instance(instance, **kwargs)
24-
elif isinstance(event_or_event_type, Event):
25-
event = event_or_event_type.from_instance(instance, **kwargs)
20+
@overload
21+
def record(self, event_or_type: Event) -> None:
22+
"""
23+
Record an event. Must be an instance of a subclass of `Event`.
24+
25+
>>> analytics.record(
26+
... MyEvent(
27+
... some_id=123,
28+
... some_prop="abc"
29+
... )
30+
... )
31+
"""
32+
...
33+
34+
@overload
35+
@deprecated("Use the `record` method with an event class instead.")
36+
def record(self, event_or_type: str, instance: Any | None = None, **kwargs: Any) -> None:
37+
"""
38+
Record an event, using its `type` name and kwargs. Deprecated, the version of this function
39+
where an event is directly passed is preferred, as it is more type-safe.
40+
41+
>>> analytics.record(
42+
... "my-event",
43+
... some_id=123,
44+
... some_prop="abc"
45+
... )
46+
"""
47+
...
48+
49+
def record(self, event_or_type: Event | str, instance: Any = None, **kwargs: Any) -> None:
50+
if isinstance(event_or_type, str):
51+
event_cls = self.event_manager.get(event_or_type)
52+
event = event_cls.from_instance(instance, **kwargs)
2653
else:
27-
return
54+
event = event_or_type
55+
2856
self.record_event(event)
2957

3058
def record_event(self, event: Event) -> None:

0 commit comments

Comments
 (0)