Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8081e81

Browse files
committed
Sentry errors from python in pyodide
1 parent588ce2a commit8081e81

File tree

7 files changed

+45
-14
lines changed

7 files changed

+45
-14
lines changed

‎core/core_imports.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pkg_resources
1313
pure_eval
1414
pyflakes
1515
pygments
16+
sentry_sdk
1617
six.py
1718
snoop
1819
stack_data

‎core/generate_static_files.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
importtarfile
2525
frompathlibimportPath
2626

27+
importsentry_sdk# noqa imported lazily
2728
fromlittleutilsimportstrip_required_prefix,json_to_file
2829

2930
fromcore.textimportpages,get_pages,chapters

‎core/utils.py‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
fromioimportStringIO
1010
fromitertoolsimportcombinations
1111
fromrandomimportshuffle
12+
fromtypesimportModuleType
1213

1314
importpygments
1415
fromlittleutilsimportstrip_required_prefix,strip_required_suffix,withattrs
@@ -21,6 +22,16 @@
2122

2223
fromdidyoumean.didyoumean_internalimportget_suggestions_for_exception# noqa
2324

25+
defstub_module(name):
26+
assertnamenotinsys.modules
27+
sys.modules[name]=ModuleType(name)
28+
29+
stub_module("urllib3")
30+
stub_module("certifi")
31+
stub_module("friendly.theme.friendly_rich")
32+
33+
importfriendly.source_cache# noqa
34+
importfriendly.core# noqa
2435

2536
lexer=get_lexer_by_name("python3")
2637
monokai=get_style_by_name("monokai")

‎core/workers/tracebacks.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
importtraceback
66
fromcollectionsimportCounter
77
fromtypingimportUnion,Iterable,List
8+
89
importpygments
910
fromcheap_reprimportcheap_repr
10-
fromfriendly.coreimportFriendlyTraceback
1111
frompygments.formatters.htmlimportHtmlFormatter
1212
fromstack_dataimport (
1313
style_with_executing_node,
@@ -18,7 +18,7 @@
1818
RepeatedFrames,
1919
)
2020

21-
fromcore.utilsimportis_valid_syntax,lexer,get_suggestions_for_exception
21+
fromcore.utilsimportis_valid_syntax,lexer,get_suggestions_for_exception,friendly
2222

2323
pygments_style=style_with_executing_node("monokai","bg:#005080")
2424
pygments_formatter=HtmlFormatter(
@@ -31,7 +31,7 @@
3131

3232
deffriendly_message(e,double_newline:bool):
3333
try:
34-
fr=FriendlyTraceback(type(e),e,e.__traceback__)
34+
fr=friendly.core.FriendlyTraceback(type(e),e,e.__traceback__)
3535
fr.assign_generic()
3636
fr.assign_cause()
3737

‎core/workers/utils.py‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importos
12
importsys
23
importtraceback
34

@@ -72,6 +73,25 @@ def make_result(
7273
returnresult
7374

7475

76+
defget_exception_event():
77+
importsentry_sdk
78+
79+
os.environ["SENTRY_RELEASE"]="stubbed"# TODO get git commit?
80+
81+
event= {}
82+
83+
deftransport(e):
84+
nonlocalevent
85+
event=e
86+
87+
client=sentry_sdk.Client(transport=transport)
88+
hub=sentry_sdk.Hub(client)
89+
hub.capture_exception()
90+
91+
assertevent
92+
returnevent
93+
94+
7595
definternal_error_result():
7696
fromsnoop.utilsimporttruncate
7797

@@ -86,5 +106,6 @@ def internal_error_result():
86106
error=dict(
87107
details=tb,
88108
title=f"Error running Python code:{truncate(exception_string,100,'...')}",
109+
sentry_event=get_exception_event(),
89110
),
90111
)

‎core/workers/worker.py‎

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,14 @@
33
importlogging
44
importsys
55
fromcodeimportInteractiveConsole
6-
fromtypesimportModuleType
76

87
importstack_data
98

109
fromcore.exercisesimportassert_equal
1110
fromcore.textimportpages
12-
fromcore.utilsimporthighlighted_markdown
13-
fromcore.workers.utilsimportinternal_error_result,make_result,output_buffer
14-
15-
friendly_rich="friendly.theme.friendly_rich"
16-
assertfriendly_richnotinsys.modules
17-
sys.modules[friendly_rich]=ModuleType(friendly_rich)
18-
19-
importfriendly.source_cache
11+
fromcore.utilsimporthighlighted_markdown,friendly
2012
fromcore.workers.tracebacksimportTracebackSerializer,print_friendly_syntax_error
13+
fromcore.workers.utilsimportinternal_error_result,make_result,output_buffer
2114

2215
log=logging.getLogger(__name__)
2316

‎frontend/src/RunCode.js‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import _ from "lodash";
66
importlocalforagefrom"localforage";
77
import{animateScroll}from"react-scroll";
88
importReactfrom"react";
9+
import*asSentryfrom"@sentry/react";
910

1011
constRunner=Comlink.wrap(newWorker());
1112

@@ -61,8 +62,11 @@ export const runCode = ({code, source}) => {
6162
constentry={input:code, source,page_slug:bookState.user.pageSlug,step_name:currentStepName()};
6263

6364
constonSuccess=(data)=>{
64-
if(data.error){
65-
bookSetState("error",{...data.error});
65+
const{error}=data;
66+
if(error){
67+
Sentry.captureEvent(error.sentry_event);
68+
deleteerror.sentry_event;
69+
bookSetState("error",{...error});
6670
return;
6771
}
6872
awaitingInput=data.awaiting_input;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp