aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Python
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2023-10-03 23:32:21 +0300
committershadchin <shadchin@yandex-team.com>2023-10-03 23:48:51 +0300
commit01ffd024041ac933854c367fb8d1b5682d19883f (patch)
treeb70aa497ba132a133ccece49f7763427dcd0743f /contrib/tools/python3/src/Python
parenta33fdb9a34581fd124e92535153b1f1fdeca6aaf (diff)
downloadydb-01ffd024041ac933854c367fb8d1b5682d19883f.tar.gz
Update Python 3 to 3.11.6
Diffstat (limited to 'contrib/tools/python3/src/Python')
-rw-r--r--contrib/tools/python3/src/Python/ast.c5
-rw-r--r--contrib/tools/python3/src/Python/ceval.c26
-rw-r--r--contrib/tools/python3/src/Python/ceval_gil.h33
-rw-r--r--contrib/tools/python3/src/Python/deepfreeze/deepfreeze.c613
-rw-r--r--contrib/tools/python3/src/Python/fileutils.c4
-rw-r--r--contrib/tools/python3/src/Python/pystate.c44
-rw-r--r--contrib/tools/python3/src/Python/pythonrun.c24
-rw-r--r--contrib/tools/python3/src/Python/symtable.c57
-rw-r--r--contrib/tools/python3/src/Python/sysmodule.c11
-rw-r--r--contrib/tools/python3/src/Python/traceback.c65
10 files changed, 687 insertions, 195 deletions
diff --git a/contrib/tools/python3/src/Python/ast.c b/contrib/tools/python3/src/Python/ast.c
index 95179cb702..8bc3c96237 100644
--- a/contrib/tools/python3/src/Python/ast.c
+++ b/contrib/tools/python3/src/Python/ast.c
@@ -379,6 +379,11 @@ validate_expr(struct validator *state, expr_ty exp, expr_context_ty ctx)
ret = validate_exprs(state, exp->v.Tuple.elts, ctx, 0);
break;
case NamedExpr_kind:
+ if (exp->v.NamedExpr.target->kind != Name_kind) {
+ PyErr_SetString(PyExc_TypeError,
+ "NamedExpr target must be a Name");
+ return 0;
+ }
ret = validate_expr(state, exp->v.NamedExpr.value, Load);
break;
/* This last case doesn't have any checking. */
diff --git a/contrib/tools/python3/src/Python/ceval.c b/contrib/tools/python3/src/Python/ceval.c
index 47df353197..df11de084d 100644
--- a/contrib/tools/python3/src/Python/ceval.c
+++ b/contrib/tools/python3/src/Python/ceval.c
@@ -216,20 +216,6 @@ _PyEvalFrameClearAndPop(PyThreadState *tstate, _PyInterpreterFrame *frame);
"cannot access free variable '%s' where it is not associated with a" \
" value in enclosing scope"
-#ifndef NDEBUG
-/* Ensure that tstate is valid: sanity check for PyEval_AcquireThread() and
- PyEval_RestoreThread(). Detect if tstate memory was freed. It can happen
- when a thread continues to run after Python finalization, especially
- daemon threads. */
-static int
-is_tstate_valid(PyThreadState *tstate)
-{
- assert(!_PyMem_IsPtrFreed(tstate));
- assert(!_PyMem_IsPtrFreed(tstate->interp));
- return 1;
-}
-#endif
-
/* This can set eval_breaker to 0 even though gil_drop_request became
1. We believe this is all right because the eval loop will release
@@ -464,7 +450,7 @@ PyEval_AcquireThread(PyThreadState *tstate)
void
PyEval_ReleaseThread(PyThreadState *tstate)
{
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
_PyRuntimeState *runtime = tstate->interp->runtime;
PyThreadState *new_tstate = _PyThreadState_Swap(&runtime->gilstate, NULL);
@@ -671,7 +657,7 @@ Py_AddPendingCall(int (*func)(void *), void *arg)
static int
handle_signals(PyThreadState *tstate)
{
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
if (!_Py_ThreadCanHandleSignals(tstate->interp)) {
return 0;
}
@@ -739,7 +725,7 @@ void
_Py_FinishPendingCalls(PyThreadState *tstate)
{
assert(PyGILState_Check());
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
struct _pending_calls *pending = &tstate->interp->ceval.pending;
@@ -764,7 +750,7 @@ Py_MakePendingCalls(void)
assert(PyGILState_Check());
PyThreadState *tstate = _PyThreadState_GET();
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
/* Python signal handler doesn't really queue a callback: it only signals
that a signal was received, see _PyEval_SignalReceived(). */
@@ -6947,7 +6933,7 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
int
_PyEval_SetProfile(PyThreadState *tstate, Py_tracefunc func, PyObject *arg)
{
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
/* The caller must hold the GIL */
assert(PyGILState_Check());
@@ -6999,7 +6985,7 @@ PyEval_SetProfile(Py_tracefunc func, PyObject *arg)
int
_PyEval_SetTrace(PyThreadState *tstate, Py_tracefunc func, PyObject *arg)
{
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
/* The caller must hold the GIL */
assert(PyGILState_Check());
diff --git a/contrib/tools/python3/src/Python/ceval_gil.h b/contrib/tools/python3/src/Python/ceval_gil.h
index 476ed7f1a2..94e2df03e0 100644
--- a/contrib/tools/python3/src/Python/ceval_gil.h
+++ b/contrib/tools/python3/src/Python/ceval_gil.h
@@ -171,7 +171,7 @@ drop_gil(struct _ceval_runtime_state *ceval, struct _ceval_state *ceval2,
/* Not switched yet => wait */
if (((PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) == tstate)
{
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
RESET_GIL_DROP_REQUEST(tstate->interp);
/* NOTE: if COND_WAIT does not atomically start waiting when
releasing the mutex, another thread can run through, take
@@ -185,25 +185,6 @@ drop_gil(struct _ceval_runtime_state *ceval, struct _ceval_state *ceval2,
}
-/* Check if a Python thread must exit immediately, rather than taking the GIL
- if Py_Finalize() has been called.
-
- When this function is called by a daemon thread after Py_Finalize() has been
- called, the GIL does no longer exist.
-
- tstate must be non-NULL. */
-static inline int
-tstate_must_exit(PyThreadState *tstate)
-{
- /* bpo-39877: Access _PyRuntime directly rather than using
- tstate->interp->runtime to support calls from Python daemon threads.
- After Py_Finalize() has been called, tstate can be a dangling pointer:
- point to PyThreadState freed memory. */
- PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(&_PyRuntime);
- return (finalizing != NULL && finalizing != tstate);
-}
-
-
/* Take the GIL.
The function saves errno at entry and restores its value at exit.
@@ -216,7 +197,7 @@ take_gil(PyThreadState *tstate)
assert(tstate != NULL);
- if (tstate_must_exit(tstate)) {
+ if (_PyThreadState_MustExit(tstate)) {
/* bpo-39877: If Py_Finalize() has been called and tstate is not the
thread which called Py_Finalize(), exit immediately the thread.
@@ -226,7 +207,7 @@ take_gil(PyThreadState *tstate)
PyThread_exit_thread();
}
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
PyInterpreterState *interp = tstate->interp;
struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
struct _ceval_state *ceval2 = &interp->ceval;
@@ -255,7 +236,7 @@ take_gil(PyThreadState *tstate)
_Py_atomic_load_relaxed(&gil->locked) &&
gil->switch_number == saved_switchnum)
{
- if (tstate_must_exit(tstate)) {
+ if (_PyThreadState_MustExit(tstate)) {
MUTEX_UNLOCK(gil->mutex);
// gh-96387: If the loop requested a drop request in a previous
// iteration, reset the request. Otherwise, drop_gil() can
@@ -268,7 +249,7 @@ take_gil(PyThreadState *tstate)
}
PyThread_exit_thread();
}
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
SET_GIL_DROP_REQUEST(interp);
drop_requested = 1;
@@ -295,7 +276,7 @@ _ready:
MUTEX_UNLOCK(gil->switch_mutex);
#endif
- if (tstate_must_exit(tstate)) {
+ if (_PyThreadState_MustExit(tstate)) {
/* bpo-36475: If Py_Finalize() has been called and tstate is not
the thread which called Py_Finalize(), exit immediately the
thread.
@@ -307,7 +288,7 @@ _ready:
drop_gil(ceval, ceval2, tstate);
PyThread_exit_thread();
}
- assert(is_tstate_valid(tstate));
+ assert(_PyThreadState_CheckConsistency(tstate));
if (_Py_atomic_load_relaxed(&ceval2->gil_drop_request)) {
RESET_GIL_DROP_REQUEST(interp);
diff --git a/contrib/tools/python3/src/Python/deepfreeze/deepfreeze.c b/contrib/tools/python3/src/Python/deepfreeze/deepfreeze.c
index 4c527746a2..10274f6b5b 100644
--- a/contrib/tools/python3/src/Python/deepfreeze/deepfreeze.c
+++ b/contrib/tools/python3/src/Python/deepfreeze/deepfreeze.c
@@ -63328,13 +63328,203 @@ codecs_toplevel_consts_24_consts_10 = {
};
static
struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_24_consts_11_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "can't serialize %s",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & codecs_toplevel_consts_24_consts_11_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+codecs_toplevel_consts_24_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "StreamWriter.__reduce_ex__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+codecs_toplevel_consts_24_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdd\x0e\x17\xd0\x18\x2c\xa8\x74\xac\x7e\xd4\x2f\x46\xd1\x18\x46\xd1\x0e\x47\xd4\x0e\x47\xd0\x08\x47",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_proto = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "proto",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_self._ascii.ob_base,
+ & const_str_proto._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(58)
+codecs_toplevel_consts_24_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_warmup = QUICKENING_INITIAL_WARMUP_VALUE,
+ ._co_linearray_entry_size = 0,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_stacksize = 4,
+ .co_firstlineno = 417,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_nplaincellvars = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_11_linetable.ob_base.ob_base,
+ ._co_code = NULL,
+ ._co_linearray = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
PyObject *ob_item[1];
}_object;
}
-codecs_toplevel_consts_24_consts_13 = {
+codecs_toplevel_consts_24_consts_14 = {
._object = {
.ob_base = {
.ob_base = {
@@ -63353,7 +63543,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[14];
+ PyObject *ob_item[15];
}_object;
}
codecs_toplevel_consts_24_consts = {
@@ -63363,7 +63553,7 @@ codecs_toplevel_consts_24_consts = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 14,
+ .ob_size = 15,
},
.ob_item = {
& const_str_StreamWriter._ascii.ob_base,
@@ -63377,9 +63567,10 @@ codecs_toplevel_consts_24_consts = {
& codecs_toplevel_consts_24_consts_8.ob_base.ob_base,
& codecs_toplevel_consts_24_consts_9.ob_base.ob_base,
& codecs_toplevel_consts_24_consts_10.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_11.ob_base.ob_base,
Py_None,
& codecs_toplevel_consts_14_consts_6._object.ob_base.ob_base,
- & codecs_toplevel_consts_24_consts_13._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_14._object.ob_base.ob_base,
},
},
};
@@ -63388,7 +63579,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[12];
+ PyObject *ob_item[13];
}_object;
}
codecs_toplevel_consts_24_names = {
@@ -63398,7 +63589,7 @@ codecs_toplevel_consts_24_names = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 12,
+ .ob_size = 13,
},
.ob_item = {
&_Py_ID(__name__),
@@ -63413,6 +63604,7 @@ codecs_toplevel_consts_24_names = {
&_Py_ID(__getattr__),
&_Py_ID(__enter__),
&_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
},
},
};
@@ -63420,7 +63612,7 @@ static
struct {
PyObject_VAR_HEAD
Py_hash_t ob_shash;
- char ob_sval[161];
+ char ob_sval[181];
}
codecs_toplevel_consts_24_linetable = {
.ob_base = {
@@ -63428,20 +63620,20 @@ codecs_toplevel_consts_24_linetable = {
.ob_refcnt = 999999999,
.ob_type = &PyBytes_Type,
},
- .ob_size = 160,
+ .ob_size = 180,
},
.ob_shash = -1,
- .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x32\x05\x05\x20\xf0\x00\x05\x05\x20\xf0\x00\x05\x05\x20\xf0\x0e\x05\x05\x22\xf0\x00\x05\x05\x22\xf0\x00\x05\x05\x22\xf0\x0e\x0a\x05\x0d\xf0\x00\x0a\x05\x0d\xf0\x00\x0a\x05\x0d\xf0\x18\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x0c\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c",
+ .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x00\x17\x05\x1d\xf0\x32\x05\x05\x20\xf0\x00\x05\x05\x20\xf0\x00\x05\x05\x20\xf0\x0e\x05\x05\x22\xf0\x00\x05\x05\x22\xf0\x00\x05\x05\x22\xf0\x0e\x0a\x05\x0d\xf0\x00\x0a\x05\x0d\xf0\x00\x0a\x05\x0d\xf0\x18\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x00\x03\x05\x19\xf0\x0c\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x06\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01",
};
static
- struct _PyCode_DEF(70)
+ struct _PyCode_DEF(76)
codecs_toplevel_consts_24 = {
.ob_base = {
.ob_base = {
.ob_refcnt = 999999999,
.ob_type = &PyCode_Type,
},
- .ob_size = 35,
+ .ob_size = 38,
},
.co_consts = & codecs_toplevel_consts_24_consts._object.ob_base.ob_base,
.co_names = & codecs_toplevel_consts_24_names._object.ob_base.ob_base,
@@ -63467,7 +63659,7 @@ codecs_toplevel_consts_24 = {
.co_linetable = & codecs_toplevel_consts_24_linetable.ob_base.ob_base,
._co_code = NULL,
._co_linearray = NULL,
- .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x0c\x64\x02\x84\x01\x5a\x03\x64\x03\x84\x00\x5a\x04\x64\x04\x84\x00\x5a\x05\x64\x05\x84\x00\x5a\x06\x64\x0d\x64\x07\x84\x01\x5a\x07\x65\x08\x66\x01\x64\x08\x84\x01\x5a\x09\x64\x09\x84\x00\x5a\x0a\x64\x0a\x84\x00\x5a\x0b\x64\x0b\x53\x00",
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x0d\x64\x02\x84\x01\x5a\x03\x64\x03\x84\x00\x5a\x04\x64\x04\x84\x00\x5a\x05\x64\x05\x84\x00\x5a\x06\x64\x0e\x64\x07\x84\x01\x5a\x07\x65\x08\x66\x01\x64\x08\x84\x01\x5a\x09\x64\x09\x84\x00\x5a\x0a\x64\x0a\x84\x00\x5a\x0b\x64\x0b\x84\x00\x5a\x0c\x64\x0c\x53\x00",
._co_firsttraceable = 0,
};
static
@@ -63713,7 +63905,7 @@ codecs_toplevel_consts_26_consts_2 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 423,
+ .co_firstlineno = 426,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -63789,7 +63981,7 @@ codecs_toplevel_consts_26_consts_3 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 448,
+ .co_firstlineno = 451,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -64217,7 +64409,7 @@ codecs_toplevel_consts_26_consts_6 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 6,
- .co_firstlineno = 451,
+ .co_firstlineno = 454,
.co_nlocalsplus = 11,
.co_nlocals = 11,
.co_nplaincellvars = 0,
@@ -64583,7 +64775,7 @@ codecs_toplevel_consts_26_consts_9 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 5,
- .co_firstlineno = 531,
+ .co_firstlineno = 534,
.co_nlocalsplus = 9,
.co_nlocals = 9,
.co_nplaincellvars = 0,
@@ -64795,7 +64987,7 @@ codecs_toplevel_consts_26_consts_10 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 606,
+ .co_firstlineno = 609,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -64942,7 +65134,7 @@ codecs_toplevel_consts_26_consts_11 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 621,
+ .co_firstlineno = 624,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -65063,7 +65255,7 @@ codecs_toplevel_consts_26_consts_13 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 634,
+ .co_firstlineno = 637,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -65251,7 +65443,7 @@ codecs_toplevel_consts_26_consts_14 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 642,
+ .co_firstlineno = 645,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -65310,7 +65502,7 @@ codecs_toplevel_consts_26_consts_15 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 650,
+ .co_firstlineno = 653,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -65369,7 +65561,7 @@ codecs_toplevel_consts_26_consts_16 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 653,
+ .co_firstlineno = 656,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -65428,7 +65620,7 @@ codecs_toplevel_consts_26_consts_17 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 660,
+ .co_firstlineno = 663,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -65487,7 +65679,7 @@ codecs_toplevel_consts_26_consts_18 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 663,
+ .co_firstlineno = 666,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -65506,13 +65698,72 @@ codecs_toplevel_consts_26_consts_18 = {
};
static
struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+codecs_toplevel_consts_26_consts_19_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "StreamReader.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(58)
+codecs_toplevel_consts_26_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_warmup = QUICKENING_INITIAL_WARMUP_VALUE,
+ ._co_linearray_entry_size = 0,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_stacksize = 4,
+ .co_firstlineno = 669,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_nplaincellvars = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_19_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_11_linetable.ob_base.ob_base,
+ ._co_code = NULL,
+ ._co_linearray = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
PyObject *ob_item[3];
}_object;
}
-codecs_toplevel_consts_26_consts_20 = {
+codecs_toplevel_consts_26_consts_21 = {
._object = {
.ob_base = {
.ob_base = {
@@ -65533,7 +65784,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[23];
+ PyObject *ob_item[24];
}_object;
}
codecs_toplevel_consts_26_consts = {
@@ -65543,7 +65794,7 @@ codecs_toplevel_consts_26_consts = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 23,
+ .ob_size = 24,
},
.ob_item = {
& const_str_StreamReader._ascii.ob_base,
@@ -65565,10 +65816,11 @@ codecs_toplevel_consts_26_consts = {
& codecs_toplevel_consts_26_consts_16.ob_base.ob_base,
& codecs_toplevel_consts_26_consts_17.ob_base.ob_base,
& codecs_toplevel_consts_26_consts_18.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_19.ob_base.ob_base,
& codecs_toplevel_consts_14_consts_6._object.ob_base.ob_base,
- & codecs_toplevel_consts_26_consts_20._object.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_21._object.ob_base.ob_base,
& importlib__bootstrap_external_toplevel_consts_69_consts_3_consts._object.ob_base.ob_base,
- & codecs_toplevel_consts_24_consts_13._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_14._object.ob_base.ob_base,
},
},
};
@@ -65577,7 +65829,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[18];
+ PyObject *ob_item[19];
}_object;
}
codecs_toplevel_consts_26_names = {
@@ -65587,7 +65839,7 @@ codecs_toplevel_consts_26_names = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 18,
+ .ob_size = 19,
},
.ob_item = {
&_Py_ID(__name__),
@@ -65608,6 +65860,7 @@ codecs_toplevel_consts_26_names = {
&_Py_ID(__getattr__),
&_Py_ID(__enter__),
&_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
},
},
};
@@ -65615,7 +65868,7 @@ static
struct {
PyObject_VAR_HEAD
Py_hash_t ob_shash;
- char ob_sval[256];
+ char ob_sval[276];
}
codecs_toplevel_consts_26_linetable = {
.ob_base = {
@@ -65623,20 +65876,20 @@ codecs_toplevel_consts_26_linetable = {
.ob_refcnt = 999999999,
.ob_type = &PyBytes_Type,
},
- .ob_size = 255,
+ .ob_size = 275,
},
.ob_shash = -1,
- .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xe0\x15\x18\x80\x4e\xf0\x04\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x32\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x06\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x60\x02\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x56\x02\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x1e\x0b\x05\x1f\xf0\x00\x0b\x05\x1f\xf0\x00\x0b\x05\x1f\xf0\x1a\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x10\x06\x05\x1c\xf0\x00\x06\x05\x1c\xf0\x00\x06\x05\x1c\xf0\x10\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x08\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c",
+ .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xe0\x15\x18\x80\x4e\xf0\x04\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x00\x17\x05\x1f\xf0\x32\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x00\x01\x05\x22\xf0\x06\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x00\x4e\x01\x05\x16\xf0\x60\x02\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x00\x49\x01\x05\x14\xf0\x56\x02\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x00\x0d\x05\x29\xf0\x1e\x0b\x05\x1f\xf0\x00\x0b\x05\x1f\xf0\x00\x0b\x05\x1f\xf0\x1a\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x00\x06\x05\x15\xf0\x10\x06\x05\x1c\xf0\x00\x06\x05\x1c\xf0\x00\x06\x05\x1c\xf0\x10\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x08\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x06\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01",
};
static
- struct _PyCode_DEF(106)
+ struct _PyCode_DEF(112)
codecs_toplevel_consts_26 = {
.ob_base = {
.ob_base = {
.ob_refcnt = 999999999,
.ob_type = &PyCode_Type,
},
- .ob_size = 53,
+ .ob_size = 56,
},
.co_consts = & codecs_toplevel_consts_26_consts._object.ob_base.ob_base,
.co_names = & codecs_toplevel_consts_26_names._object.ob_base.ob_base,
@@ -65648,7 +65901,7 @@ codecs_toplevel_consts_26 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 419,
+ .co_firstlineno = 422,
.co_nlocalsplus = 0,
.co_nlocals = 0,
.co_nplaincellvars = 0,
@@ -65662,7 +65915,7 @@ codecs_toplevel_consts_26 = {
.co_linetable = & codecs_toplevel_consts_26_linetable.ob_base.ob_base,
._co_code = NULL,
._co_linearray = NULL,
- .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x5a\x04\x64\x13\x64\x02\x84\x01\x5a\x05\x64\x13\x64\x03\x84\x01\x5a\x06\x64\x14\x64\x06\x84\x01\x5a\x07\x64\x15\x64\x09\x84\x01\x5a\x08\x64\x15\x64\x0a\x84\x01\x5a\x09\x64\x0b\x84\x00\x5a\x0a\x64\x16\x64\x0d\x84\x01\x5a\x0b\x64\x0e\x84\x00\x5a\x0c\x64\x0f\x84\x00\x5a\x0d\x65\x0e\x66\x01\x64\x10\x84\x01\x5a\x0f\x64\x11\x84\x00\x5a\x10\x64\x12\x84\x00\x5a\x11\x64\x07\x53\x00",
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x5a\x04\x64\x14\x64\x02\x84\x01\x5a\x05\x64\x14\x64\x03\x84\x01\x5a\x06\x64\x15\x64\x06\x84\x01\x5a\x07\x64\x16\x64\x09\x84\x01\x5a\x08\x64\x16\x64\x0a\x84\x01\x5a\x09\x64\x0b\x84\x00\x5a\x0a\x64\x17\x64\x0d\x84\x01\x5a\x0b\x64\x0e\x84\x00\x5a\x0c\x64\x0f\x84\x00\x5a\x0d\x65\x0e\x66\x01\x64\x10\x84\x01\x5a\x0f\x64\x11\x84\x00\x5a\x10\x64\x12\x84\x00\x5a\x11\x64\x13\x84\x00\x5a\x12\x64\x07\x53\x00",
._co_firsttraceable = 0,
};
static
@@ -65952,7 +66205,7 @@ codecs_toplevel_consts_28_consts_4 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 681,
+ .co_firstlineno = 687,
.co_nlocalsplus = 5,
.co_nlocals = 5,
.co_nplaincellvars = 0,
@@ -66074,7 +66327,7 @@ codecs_toplevel_consts_28_consts_6 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 699,
+ .co_firstlineno = 705,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -66173,7 +66426,7 @@ codecs_toplevel_consts_28_consts_8 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 703,
+ .co_firstlineno = 709,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -66295,7 +66548,7 @@ codecs_toplevel_consts_28_consts_9 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 707,
+ .co_firstlineno = 713,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -66394,7 +66647,7 @@ codecs_toplevel_consts_28_consts_10 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 711,
+ .co_firstlineno = 717,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -66453,7 +66706,7 @@ codecs_toplevel_consts_28_consts_11 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 716,
+ .co_firstlineno = 722,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -66575,7 +66828,7 @@ codecs_toplevel_consts_28_consts_12 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 719,
+ .co_firstlineno = 725,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -66674,7 +66927,7 @@ codecs_toplevel_consts_28_consts_13 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 723,
+ .co_firstlineno = 729,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -66774,7 +67027,7 @@ codecs_toplevel_consts_28_consts_14 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 727,
+ .co_firstlineno = 733,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -66876,7 +67129,7 @@ codecs_toplevel_consts_28_consts_16 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 732,
+ .co_firstlineno = 738,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -66935,7 +67188,7 @@ codecs_toplevel_consts_28_consts_17 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 738,
+ .co_firstlineno = 744,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -66994,7 +67247,7 @@ codecs_toplevel_consts_28_consts_18 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 747,
+ .co_firstlineno = 753,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -67053,7 +67306,7 @@ codecs_toplevel_consts_28_consts_19 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 750,
+ .co_firstlineno = 756,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -67072,13 +67325,72 @@ codecs_toplevel_consts_28_consts_19 = {
};
static
struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+codecs_toplevel_consts_28_consts_20_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(58)
+codecs_toplevel_consts_28_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_warmup = QUICKENING_INITIAL_WARMUP_VALUE,
+ ._co_linearray_entry_size = 0,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_stacksize = 4,
+ .co_firstlineno = 759,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_nplaincellvars = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_20_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_11_linetable.ob_base.ob_base,
+ ._co_code = NULL,
+ ._co_linearray = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
PyObject *ob_item[1];
}_object;
}
-codecs_toplevel_consts_28_consts_21 = {
+codecs_toplevel_consts_28_consts_22 = {
._object = {
.ob_base = {
.ob_base = {
@@ -67097,7 +67409,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[24];
+ PyObject *ob_item[25];
}_object;
}
codecs_toplevel_consts_28_consts = {
@@ -67107,7 +67419,7 @@ codecs_toplevel_consts_28_consts = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 24,
+ .ob_size = 25,
},
.ob_item = {
& const_str_StreamReaderWriter._ascii.ob_base,
@@ -67130,10 +67442,11 @@ codecs_toplevel_consts_28_consts = {
& codecs_toplevel_consts_28_consts_17.ob_base.ob_base,
& codecs_toplevel_consts_28_consts_18.ob_base.ob_base,
& codecs_toplevel_consts_28_consts_19.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_20.ob_base.ob_base,
& codecs_toplevel_consts_14_consts_6._object.ob_base.ob_base,
- & codecs_toplevel_consts_28_consts_21._object.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_22._object.ob_base.ob_base,
& importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
- & codecs_toplevel_consts_24_consts_13._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_14._object.ob_base.ob_base,
},
},
};
@@ -67142,7 +67455,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[19];
+ PyObject *ob_item[20];
}_object;
}
codecs_toplevel_consts_28_names = {
@@ -67152,7 +67465,7 @@ codecs_toplevel_consts_28_names = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 19,
+ .ob_size = 20,
},
.ob_item = {
&_Py_ID(__name__),
@@ -67174,6 +67487,7 @@ codecs_toplevel_consts_28_names = {
&_Py_ID(__getattr__),
&_Py_ID(__enter__),
&_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
},
},
};
@@ -67181,7 +67495,7 @@ static
struct {
PyObject_VAR_HEAD
Py_hash_t ob_shash;
- char ob_sval[268];
+ char ob_sval[288];
}
codecs_toplevel_consts_28_linetable = {
.ob_base = {
@@ -67189,20 +67503,20 @@ codecs_toplevel_consts_28_linetable = {
.ob_refcnt = 999999999,
.ob_type = &PyBytes_Type,
},
- .ob_size = 267,
+ .ob_size = 287,
},
.ob_shash = -1,
- .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x07\x05\x08\xf0\x00\x07\x05\x08\xf0\x12\x00\x10\x19\x80\x48\xf0\x04\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x24\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x08\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x08\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x08\x03\x05\x21\xf0\x00\x03\x05\x21\xf0\x00\x03\x05\x21\xf0\x0a\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x02\x05\x27\xf0\x00\x02\x05\x27\xf0\x00\x02\x05\x27\xf0\x08\x02\x05\x2c\xf0\x00\x02\x05\x2c\xf0\x00\x02\x05\x2c\xf0\x08\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x0a\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x0e\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x12\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c",
+ .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x07\x05\x08\xf0\x00\x07\x05\x08\xf0\x12\x00\x10\x19\x80\x48\xf0\x04\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x00\x10\x05\x1d\xf0\x24\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x00\x02\x05\x26\xf0\x08\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x00\x02\x05\x2a\xf0\x08\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x00\x02\x05\x2f\xf0\x08\x03\x05\x21\xf0\x00\x03\x05\x21\xf0\x00\x03\x05\x21\xf0\x0a\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x02\x05\x27\xf0\x00\x02\x05\x27\xf0\x00\x02\x05\x27\xf0\x08\x02\x05\x2c\xf0\x00\x02\x05\x2c\xf0\x00\x02\x05\x2c\xf0\x08\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x0a\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x00\x04\x05\x20\xf0\x0e\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x12\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x06\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01",
};
static
- struct _PyCode_DEF(114)
+ struct _PyCode_DEF(120)
codecs_toplevel_consts_28 = {
.ob_base = {
.ob_base = {
.ob_refcnt = 999999999,
.ob_type = &PyCode_Type,
},
- .ob_size = 57,
+ .ob_size = 60,
},
.co_consts = & codecs_toplevel_consts_28_consts._object.ob_base.ob_base,
.co_names = & codecs_toplevel_consts_28_names._object.ob_base.ob_base,
@@ -67214,7 +67528,7 @@ codecs_toplevel_consts_28 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 668,
+ .co_firstlineno = 674,
.co_nlocalsplus = 0,
.co_nlocals = 0,
.co_nplaincellvars = 0,
@@ -67228,7 +67542,7 @@ codecs_toplevel_consts_28 = {
.co_linetable = & codecs_toplevel_consts_28_linetable.ob_base.ob_base,
._co_code = NULL,
._co_linearray = NULL,
- .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x14\x64\x04\x84\x01\x5a\x05\x64\x15\x64\x06\x84\x01\x5a\x06\x64\x16\x64\x08\x84\x01\x5a\x07\x64\x16\x64\x09\x84\x01\x5a\x08\x64\x0a\x84\x00\x5a\x09\x64\x0b\x84\x00\x5a\x0a\x64\x0c\x84\x00\x5a\x0b\x64\x0d\x84\x00\x5a\x0c\x64\x0e\x84\x00\x5a\x0d\x64\x17\x64\x10\x84\x01\x5a\x0e\x65\x0f\x66\x01\x64\x11\x84\x01\x5a\x10\x64\x12\x84\x00\x5a\x11\x64\x13\x84\x00\x5a\x12\x64\x07\x53\x00",
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x15\x64\x04\x84\x01\x5a\x05\x64\x16\x64\x06\x84\x01\x5a\x06\x64\x17\x64\x08\x84\x01\x5a\x07\x64\x17\x64\x09\x84\x01\x5a\x08\x64\x0a\x84\x00\x5a\x09\x64\x0b\x84\x00\x5a\x0a\x64\x0c\x84\x00\x5a\x0b\x64\x0d\x84\x00\x5a\x0c\x64\x0e\x84\x00\x5a\x0d\x64\x18\x64\x10\x84\x01\x5a\x0e\x65\x0f\x66\x01\x64\x11\x84\x01\x5a\x10\x64\x12\x84\x00\x5a\x11\x64\x13\x84\x00\x5a\x12\x64\x14\x84\x00\x5a\x13\x64\x07\x53\x00",
._co_firsttraceable = 0,
};
static
@@ -67412,7 +67726,7 @@ codecs_toplevel_consts_30_consts_4 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 775,
+ .co_firstlineno = 784,
.co_nlocalsplus = 7,
.co_nlocals = 7,
.co_nplaincellvars = 0,
@@ -67560,7 +67874,7 @@ codecs_toplevel_consts_30_consts_6 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 803,
+ .co_firstlineno = 812,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -67661,7 +67975,7 @@ codecs_toplevel_consts_30_consts_8 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 809,
+ .co_firstlineno = 818,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -67812,7 +68126,7 @@ codecs_toplevel_consts_30_consts_9 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 818,
+ .co_firstlineno = 827,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -67937,7 +68251,7 @@ codecs_toplevel_consts_30_consts_10 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 824,
+ .co_firstlineno = 833,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -67996,7 +68310,7 @@ codecs_toplevel_consts_30_consts_11 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 831,
+ .co_firstlineno = 840,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -68143,7 +68457,7 @@ codecs_toplevel_consts_30_consts_12 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 834,
+ .co_firstlineno = 843,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -68270,7 +68584,7 @@ codecs_toplevel_consts_30_consts_13 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 839,
+ .co_firstlineno = 848,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -68329,7 +68643,7 @@ codecs_toplevel_consts_30_consts_14 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 845,
+ .co_firstlineno = 854,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -68429,7 +68743,7 @@ codecs_toplevel_consts_30_consts_16 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 850,
+ .co_firstlineno = 859,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -68488,7 +68802,7 @@ codecs_toplevel_consts_30_consts_17 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 856,
+ .co_firstlineno = 865,
.co_nlocalsplus = 3,
.co_nlocals = 3,
.co_nplaincellvars = 0,
@@ -68547,7 +68861,7 @@ codecs_toplevel_consts_30_consts_18 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 1,
- .co_firstlineno = 863,
+ .co_firstlineno = 872,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -68606,7 +68920,7 @@ codecs_toplevel_consts_30_consts_19 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 866,
+ .co_firstlineno = 875,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -68625,10 +68939,69 @@ codecs_toplevel_consts_30_consts_19 = {
};
static
struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_30_consts_20_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .ready = 1,
+ },
+ },
+ ._data = "StreamRecoder.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(58)
+codecs_toplevel_consts_30_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = 999999999,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_warmup = QUICKENING_INITIAL_WARMUP_VALUE,
+ ._co_linearray_entry_size = 0,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_stacksize = 4,
+ .co_firstlineno = 878,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_nplaincellvars = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_20_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_11_linetable.ob_base.ob_base,
+ ._co_code = NULL,
+ ._co_linearray = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[24];
+ PyObject *ob_item[25];
}_object;
}
codecs_toplevel_consts_30_consts = {
@@ -68638,7 +69011,7 @@ codecs_toplevel_consts_30_consts = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 24,
+ .ob_size = 25,
},
.ob_item = {
& const_str_StreamRecoder._ascii.ob_base,
@@ -68661,10 +69034,11 @@ codecs_toplevel_consts_30_consts = {
& codecs_toplevel_consts_30_consts_17.ob_base.ob_base,
& codecs_toplevel_consts_30_consts_18.ob_base.ob_base,
& codecs_toplevel_consts_30_consts_19.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_20.ob_base.ob_base,
& codecs_toplevel_consts_14_consts_6._object.ob_base.ob_base,
- & codecs_toplevel_consts_28_consts_21._object.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_22._object.ob_base.ob_base,
& importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
- & codecs_toplevel_consts_24_consts_13._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_14._object.ob_base.ob_base,
},
},
};
@@ -68717,7 +69091,7 @@ static
PyGC_Head _gc_head;
struct {
PyObject_VAR_HEAD
- PyObject *ob_item[20];
+ PyObject *ob_item[21];
}_object;
}
codecs_toplevel_consts_30_names = {
@@ -68727,7 +69101,7 @@ codecs_toplevel_consts_30_names = {
.ob_refcnt = 999999999,
.ob_type = &PyTuple_Type,
},
- .ob_size = 20,
+ .ob_size = 21,
},
.ob_item = {
&_Py_ID(__name__),
@@ -68750,6 +69124,7 @@ codecs_toplevel_consts_30_names = {
&_Py_ID(__getattr__),
&_Py_ID(__enter__),
&_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
},
},
};
@@ -68757,7 +69132,7 @@ static
struct {
PyObject_VAR_HEAD
Py_hash_t ob_shash;
- char ob_sval[278];
+ char ob_sval[298];
}
codecs_toplevel_consts_30_linetable = {
.ob_base = {
@@ -68765,20 +69140,20 @@ codecs_toplevel_consts_30_linetable = {
.ob_refcnt = 999999999,
.ob_type = &PyBytes_Type,
},
- .ob_size = 277,
+ .ob_size = 297,
},
.ob_shash = -1,
- .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x0d\x05\x08\xf0\x00\x0d\x05\x08\xf0\x1e\x00\x15\x1e\x80\x4d\xd8\x14\x1d\x80\x4d\xf0\x06\x00\x19\x21\xf0\x03\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x38\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x0c\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x12\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x0c\x05\x05\x14\xf0\x00\x05\x05\x14\xf0\x00\x05\x05\x14\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x03\x05\x27\xf0\x00\x03\x05\x27\xf0\x00\x03\x05\x27\xf0\x0a\x04\x05\x27\xf0\x00\x04\x05\x27\xf0\x00\x04\x05\x27\xf0\x0c\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x0a\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x0e\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c",
+ .ob_sval = "\x80\x00\x80\x00\x80\x00\x80\x00\x80\x00\xf0\x04\x0d\x05\x08\xf0\x00\x0d\x05\x08\xf0\x1e\x00\x15\x1e\x80\x4d\xd8\x14\x1d\x80\x4d\xf0\x06\x00\x19\x21\xf0\x03\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x00\x1a\x05\x1d\xf0\x38\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x00\x04\x05\x14\xf0\x0c\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x00\x07\x05\x14\xf0\x12\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x00\x04\x05\x2e\xf0\x0c\x05\x05\x14\xf0\x00\x05\x05\x14\xf0\x00\x05\x05\x14\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x03\x05\x27\xf0\x00\x03\x05\x27\xf0\x00\x03\x05\x27\xf0\x0a\x04\x05\x27\xf0\x00\x04\x05\x27\xf0\x00\x04\x05\x27\xf0\x0c\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x00\x03\x05\x1c\xf0\x0a\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x00\x04\x05\x29\xf0\x0e\x00\x1d\x24\xf0\x03\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x00\x05\x05\x2a\xf0\x0e\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x00\x01\x05\x14\xf0\x06\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x00\x01\x05\x1c\xf0\x06\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01\xf0\x00\x01\x05\x48\x01",
};
static
- struct _PyCode_DEF(120)
+ struct _PyCode_DEF(126)
codecs_toplevel_consts_30 = {
.ob_base = {
.ob_base = {
.ob_refcnt = 999999999,
.ob_type = &PyCode_Type,
},
- .ob_size = 60,
+ .ob_size = 63,
},
.co_consts = & codecs_toplevel_consts_30_consts._object.ob_base.ob_base,
.co_names = & codecs_toplevel_consts_30_names._object.ob_base.ob_base,
@@ -68790,7 +69165,7 @@ codecs_toplevel_consts_30 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 755,
+ .co_firstlineno = 764,
.co_nlocalsplus = 0,
.co_nlocals = 0,
.co_nplaincellvars = 0,
@@ -68804,7 +69179,7 @@ codecs_toplevel_consts_30 = {
.co_linetable = & codecs_toplevel_consts_30_linetable.ob_base.ob_base,
._co_code = NULL,
._co_linearray = NULL,
- .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x02\x5a\x05\x09\x00\x64\x14\x64\x04\x84\x01\x5a\x06\x64\x15\x64\x06\x84\x01\x5a\x07\x64\x16\x64\x08\x84\x01\x5a\x08\x64\x16\x64\x09\x84\x01\x5a\x09\x64\x0a\x84\x00\x5a\x0a\x64\x0b\x84\x00\x5a\x0b\x64\x0c\x84\x00\x5a\x0c\x64\x0d\x84\x00\x5a\x0d\x64\x0e\x84\x00\x5a\x0e\x64\x17\x64\x10\x84\x01\x5a\x0f\x65\x10\x66\x01\x64\x11\x84\x01\x5a\x11\x64\x12\x84\x00\x5a\x12\x64\x13\x84\x00\x5a\x13\x64\x07\x53\x00",
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x02\x5a\x05\x09\x00\x64\x15\x64\x04\x84\x01\x5a\x06\x64\x16\x64\x06\x84\x01\x5a\x07\x64\x17\x64\x08\x84\x01\x5a\x08\x64\x17\x64\x09\x84\x01\x5a\x09\x64\x0a\x84\x00\x5a\x0a\x64\x0b\x84\x00\x5a\x0b\x64\x0c\x84\x00\x5a\x0c\x64\x0d\x84\x00\x5a\x0d\x64\x0e\x84\x00\x5a\x0e\x64\x18\x64\x10\x84\x01\x5a\x0f\x65\x10\x66\x01\x64\x11\x84\x01\x5a\x11\x64\x12\x84\x00\x5a\x12\x64\x13\x84\x00\x5a\x13\x64\x14\x84\x00\x5a\x14\x64\x07\x53\x00",
._co_firsttraceable = 0,
};
static
@@ -69031,7 +69406,7 @@ codecs_toplevel_consts_35 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 6,
- .co_firstlineno = 871,
+ .co_firstlineno = 883,
.co_nlocalsplus = 8,
.co_nlocals = 8,
.co_nplaincellvars = 0,
@@ -69252,7 +69627,7 @@ codecs_toplevel_consts_36 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 8,
- .co_firstlineno = 920,
+ .co_firstlineno = 932,
.co_nlocalsplus = 7,
.co_nlocals = 7,
.co_nplaincellvars = 0,
@@ -69395,7 +69770,7 @@ codecs_toplevel_consts_37 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 958,
+ .co_firstlineno = 970,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -69499,7 +69874,7 @@ codecs_toplevel_consts_38 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 968,
+ .co_firstlineno = 980,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -69688,7 +70063,7 @@ codecs_toplevel_consts_39 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 978,
+ .co_firstlineno = 990,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -69838,7 +70213,7 @@ codecs_toplevel_consts_40 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 992,
+ .co_firstlineno = 1004,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -69959,7 +70334,7 @@ codecs_toplevel_consts_41 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 1006,
+ .co_firstlineno = 1018,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -70063,7 +70438,7 @@ codecs_toplevel_consts_42 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 3,
- .co_firstlineno = 1016,
+ .co_firstlineno = 1028,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -70259,7 +70634,7 @@ codecs_toplevel_consts_43 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 5,
- .co_firstlineno = 1026,
+ .co_firstlineno = 1038,
.co_nlocalsplus = 7,
.co_nlocals = 7,
.co_nplaincellvars = 0,
@@ -70411,7 +70786,7 @@ codecs_toplevel_consts_44 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 5,
- .co_firstlineno = 1044,
+ .co_firstlineno = 1056,
.co_nlocalsplus = 7,
.co_nlocals = 7,
.co_nplaincellvars = 0,
@@ -70532,7 +70907,7 @@ codecs_toplevel_consts_45_consts_1 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 1072,
+ .co_firstlineno = 1084,
.co_nlocalsplus = 2,
.co_nlocals = 2,
.co_nplaincellvars = 0,
@@ -70675,7 +71050,7 @@ codecs_toplevel_consts_45 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 2,
- .co_firstlineno = 1064,
+ .co_firstlineno = 1076,
.co_nlocalsplus = 1,
.co_nlocals = 1,
.co_nplaincellvars = 0,
@@ -70909,7 +71284,7 @@ codecs_toplevel_consts_46 = {
.co_posonlyargcount = 0,
.co_kwonlyargcount = 0,
.co_stacksize = 4,
- .co_firstlineno = 1074,
+ .co_firstlineno = 1086,
.co_nlocalsplus = 4,
.co_nlocals = 4,
.co_nplaincellvars = 0,
@@ -71358,7 +71733,7 @@ static
struct {
PyObject_VAR_HEAD
Py_hash_t ob_shash;
- char ob_sval[1189];
+ char ob_sval[1221];
}
codecs_toplevel_linetable = {
.ob_base = {
@@ -71366,10 +71741,10 @@ codecs_toplevel_linetable = {
.ob_refcnt = 999999999,
.ob_type = &PyBytes_Type,
},
- .ob_size = 1188,
+ .ob_size = 1220,
},
.ob_shash = -1,
- .ob_sval = "\xf0\x03\x01\x01\x01\xf0\x02\x07\x01\x04\xf0\x00\x07\x01\x04\xf0\x12\x00\x01\x10\x80\x0f\x80\x0f\x80\x0f\xd8\x00\x0a\x80\x0a\x80\x0a\x80\x0a\xf0\x08\x03\x01\x45\x01\xd8\x04\x19\xd0\x04\x19\xd0\x04\x19\xd0\x04\x19\xd0\x04\x19\xf8\xd8\x07\x12\xf0\x00\x01\x01\x45\x01\xf0\x00\x01\x01\x45\x01\xf0\x00\x01\x01\x45\x01\xd8\x0a\x15\x88\x2b\xd0\x16\x3d\xc0\x03\xd1\x16\x43\xd1\x0a\x44\xd4\x0a\x44\xd0\x04\x44\xf8\xf8\xf8\xf8\xf0\x03\x01\x01\x45\x01\xf8\xf8\xf8\xf0\x06\x0d\x0b\x2d\xf0\x00\x0d\x0b\x2d\xf0\x00\x0d\x0b\x2d\x80\x07\xf0\x30\x00\x0c\x1b\x80\x08\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x10\x23\x80\x0c\xf0\x06\x00\x10\x23\x80\x0c\xe0\x03\x06\x84\x3d\x90\x48\xd2\x03\x1c\xd0\x03\x1c\xf0\x06\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x80\x49\x80\x49\xf0\x0a\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x80\x49\xf0\x06\x00\x0c\x18\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xf0\x0a\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\x90\x05\xf1\x00\x1d\x01\x26\xf4\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x3e\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf1\x00\x40\x01\x01\x22\xf4\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x44\x02\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\x98\x16\xf1\x00\x26\x01\x0c\xf4\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x50\x01\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xd0\x21\x33\xf1\x00\x20\x01\x22\xf4\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x44\x01\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\x98\x16\xf1\x00\x2f\x01\x0c\xf4\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x62\x01\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xd0\x21\x33\xf1\x00\x22\x01\x1f\xf4\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x56\x01\x45\x01\x01\x1c\xf0\x00\x45\x01\x01\x1c\xf0\x00\x45\x01\x01\x1c\xf0\x00\x45\x01\x01\x1c\xf0\x00\x45\x01\x01\x1c\x90\x35\xf1\x00\x45\x01\x01\x1c\xf4\x00\x45\x01\x01\x1c\xf0\x00\x45\x01\x01\x1c\xf0\x52\x02\x75\x03\x01\x1c\xf0\x00\x75\x03\x01\x1c\xf0\x00\x75\x03\x01\x1c\xf0\x00\x75\x03\x01\x1c\xf0\x00\x75\x03\x01\x1c\x90\x35\xf1\x00\x75\x03\x01\x1c\xf4\x00\x75\x03\x01\x1c\xf0\x00\x75\x03\x01\x1c\xf0\x72\x07\x53\x01\x01\x1c\xf0\x00\x53\x01\x01\x1c\xf0\x00\x53\x01\x01\x1c\xf0\x00\x53\x01\x01\x1c\xf0\x00\x53\x01\x01\x1c\xf1\x00\x53\x01\x01\x1c\xf4\x00\x53\x01\x01\x1c\xf0\x00\x53\x01\x01\x1c\xf0\x6e\x02\x70\x01\x01\x1c\xf0\x00\x70\x01\x01\x1c\xf0\x00\x70\x01\x01\x1c\xf0\x00\x70\x01\x01\x1c\xf0\x00\x70\x01\x01\x1c\xf1\x00\x70\x01\x01\x1c\xf4\x00\x70\x01\x01\x1c\xf0\x00\x70\x01\x01\x1c\xf0\x68\x03\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x62\x01\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x4c\x01\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x14\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x14\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x1c\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x1c\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x14\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x14\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x24\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x28\x08\x01\x1e\xf0\x00\x08\x01\x1e\xf0\x00\x08\x01\x1e\xf0\x14\x13\x01\x0d\xf0\x00\x13\x01\x0d\xf0\x00\x13\x01\x0d\xf0\x2e\x0e\x01\x1e\xd8\x14\x20\x90\x4c\xa0\x18\xd1\x14\x2a\xd4\x14\x2a\x80\x4d\xd8\x14\x20\x90\x4c\xa0\x18\xd1\x14\x2a\xd4\x14\x2a\x80\x4d\xd8\x15\x21\x90\x5c\xa0\x29\xd1\x15\x2c\xd4\x15\x2c\x80\x4e\xd8\x1f\x2b\x98\x7c\xd0\x2c\x3f\xd1\x1f\x40\xd4\x1f\x40\xd0\x04\x1c\xd8\x1e\x2a\x98\x6c\xd0\x2b\x3d\xd1\x1e\x3e\xd4\x1e\x3e\xd0\x04\x1b\xd8\x19\x25\x98\x1c\xa0\x6d\xd1\x19\x34\xd4\x19\x34\xd0\x04\x16\xd0\x04\x16\xf8\xd8\x07\x12\xf0\x00\x07\x01\x1e\xf0\x00\x07\x01\x1e\xf0\x00\x07\x01\x1e\xe0\x14\x18\x80\x4d\xd8\x14\x18\x80\x4d\xd8\x15\x19\x80\x4e\xd8\x1f\x23\xd0\x04\x1c\xd8\x1e\x22\xd0\x04\x1b\xd8\x19\x1d\xd0\x04\x16\xd0\x04\x16\xd0\x04\x16\xf0\x0f\x07\x01\x1e\xf8\xf8\xf8\xf0\x16\x00\x0a\x0b\x80\x06\xd8\x03\x09\xf0\x00\x01\x01\x15\xd8\x04\x14\xd0\x04\x14\xd0\x04\x14\xd0\x04\x14\xf0\x08\x00\x04\x0c\x88\x7a\xd2\x03\x19\xd0\x03\x19\xf0\x06\x00\x12\x1d\x90\x1b\x98\x53\x9c\x5a\xa8\x19\xb0\x47\xd1\x11\x3c\xd4\x11\x3c\x80\x43\x84\x4a\xf0\x06\x00\x11\x1c\x90\x0b\x98\x43\x9c\x49\xa0\x77\xb0\x09\xd1\x10\x3a\xd4\x10\x3a\x80\x43\x84\x49\x80\x49\x80\x49\xf0\x0d\x00\x04\x1a\xd0\x03\x19",
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf0\x02\x07\x01\x04\xf0\x00\x07\x01\x04\xf0\x12\x00\x01\x10\x80\x0f\x80\x0f\x80\x0f\xd8\x00\x0a\x80\x0a\x80\x0a\x80\x0a\xf0\x08\x03\x01\x45\x01\xd8\x04\x19\xd0\x04\x19\xd0\x04\x19\xd0\x04\x19\xd0\x04\x19\xf8\xd8\x07\x12\xf0\x00\x01\x01\x45\x01\xf0\x00\x01\x01\x45\x01\xf0\x00\x01\x01\x45\x01\xd8\x0a\x15\x88\x2b\xd0\x16\x3d\xc0\x03\xd1\x16\x43\xd1\x0a\x44\xd4\x0a\x44\xd0\x04\x44\xf8\xf8\xf8\xf8\xf0\x03\x01\x01\x45\x01\xf8\xf8\xf8\xf0\x06\x0d\x0b\x2d\xf0\x00\x0d\x0b\x2d\xf0\x00\x0d\x0b\x2d\x80\x07\xf0\x30\x00\x0c\x1b\x80\x08\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x10\x23\x80\x0c\xf0\x06\x00\x10\x23\x80\x0c\xe0\x03\x06\x84\x3d\x90\x48\xd2\x03\x1c\xd0\x03\x1c\xf0\x06\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x80\x49\x80\x49\xf0\x0a\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x80\x49\xf0\x06\x00\x0c\x18\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xf0\x0a\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\x90\x05\xf1\x00\x1d\x01\x26\xf4\x00\x1d\x01\x26\xf0\x00\x1d\x01\x26\xf0\x3e\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf1\x00\x40\x01\x01\x22\xf4\x00\x40\x01\x01\x22\xf0\x00\x40\x01\x01\x22\xf0\x44\x02\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\x98\x16\xf1\x00\x26\x01\x0c\xf4\x00\x26\x01\x0c\xf0\x00\x26\x01\x0c\xf0\x50\x01\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xd0\x21\x33\xf1\x00\x20\x01\x22\xf4\x00\x20\x01\x22\xf0\x00\x20\x01\x22\xf0\x44\x01\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\x98\x16\xf1\x00\x2f\x01\x0c\xf4\x00\x2f\x01\x0c\xf0\x00\x2f\x01\x0c\xf0\x62\x01\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xd0\x21\x33\xf1\x00\x22\x01\x1f\xf4\x00\x22\x01\x1f\xf0\x00\x22\x01\x1f\xf0\x56\x01\x48\x01\x01\x48\x01\xf0\x00\x48\x01\x01\x48\x01\xf0\x00\x48\x01\x01\x48\x01\xf0\x00\x48\x01\x01\x48\x01\xf0\x00\x48\x01\x01\x48\x01\x90\x35\xf1\x00\x48\x01\x01\x48\x01\xf4\x00\x48\x01\x01\x48\x01\xf0\x00\x48\x01\x01\x48\x01\xf0\x58\x02\x78\x03\x01\x48\x01\xf0\x00\x78\x03\x01\x48\x01\xf0\x00\x78\x03\x01\x48\x01\xf0\x00\x78\x03\x01\x48\x01\xf0\x00\x78\x03\x01\x48\x01\x90\x35\xf1\x00\x78\x03\x01\x48\x01\xf4\x00\x78\x03\x01\x48\x01\xf0\x00\x78\x03\x01\x48\x01\xf0\x78\x07\x56\x01\x01\x48\x01\xf0\x00\x56\x01\x01\x48\x01\xf0\x00\x56\x01\x01\x48\x01\xf0\x00\x56\x01\x01\x48\x01\xf0\x00\x56\x01\x01\x48\x01\xf1\x00\x56\x01\x01\x48\x01\xf4\x00\x56\x01\x01\x48\x01\xf0\x00\x56\x01\x01\x48\x01\xf0\x74\x02\x73\x01\x01\x48\x01\xf0\x00\x73\x01\x01\x48\x01\xf0\x00\x73\x01\x01\x48\x01\xf0\x00\x73\x01\x01\x48\x01\xf0\x00\x73\x01\x01\x48\x01\xf1\x00\x73\x01\x01\x48\x01\xf4\x00\x73\x01\x01\x48\x01\xf0\x00\x73\x01\x01\x48\x01\xf0\x6e\x03\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x00\x2f\x01\x0e\xf0\x62\x01\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x00\x22\x01\x0e\xf0\x4c\x01\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x14\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x00\x08\x01\x23\xf0\x14\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x1c\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x00\x0c\x01\x13\xf0\x1c\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x14\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x00\x08\x01\x29\xf0\x14\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x24\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x00\x10\x01\x15\xf0\x28\x08\x01\x1e\xf0\x00\x08\x01\x1e\xf0\x00\x08\x01\x1e\xf0\x14\x13\x01\x0d\xf0\x00\x13\x01\x0d\xf0\x00\x13\x01\x0d\xf0\x2e\x0e\x01\x1e\xd8\x14\x20\x90\x4c\xa0\x18\xd1\x14\x2a\xd4\x14\x2a\x80\x4d\xd8\x14\x20\x90\x4c\xa0\x18\xd1\x14\x2a\xd4\x14\x2a\x80\x4d\xd8\x15\x21\x90\x5c\xa0\x29\xd1\x15\x2c\xd4\x15\x2c\x80\x4e\xd8\x1f\x2b\x98\x7c\xd0\x2c\x3f\xd1\x1f\x40\xd4\x1f\x40\xd0\x04\x1c\xd8\x1e\x2a\x98\x6c\xd0\x2b\x3d\xd1\x1e\x3e\xd4\x1e\x3e\xd0\x04\x1b\xd8\x19\x25\x98\x1c\xa0\x6d\xd1\x19\x34\xd4\x19\x34\xd0\x04\x16\xd0\x04\x16\xf8\xd8\x07\x12\xf0\x00\x07\x01\x1e\xf0\x00\x07\x01\x1e\xf0\x00\x07\x01\x1e\xe0\x14\x18\x80\x4d\xd8\x14\x18\x80\x4d\xd8\x15\x19\x80\x4e\xd8\x1f\x23\xd0\x04\x1c\xd8\x1e\x22\xd0\x04\x1b\xd8\x19\x1d\xd0\x04\x16\xd0\x04\x16\xd0\x04\x16\xf0\x0f\x07\x01\x1e\xf8\xf8\xf8\xf0\x16\x00\x0a\x0b\x80\x06\xd8\x03\x09\xf0\x00\x01\x01\x15\xd8\x04\x14\xd0\x04\x14\xd0\x04\x14\xd0\x04\x14\xf0\x08\x00\x04\x0c\x88\x7a\xd2\x03\x19\xd0\x03\x19\xf0\x06\x00\x12\x1d\x90\x1b\x98\x53\x9c\x5a\xa8\x19\xb0\x47\xd1\x11\x3c\xd4\x11\x3c\x80\x43\x84\x4a\xf0\x06\x00\x11\x1c\x90\x0b\x98\x43\x9c\x49\xa0\x77\xb0\x09\xd1\x10\x3a\xd4\x10\x3a\x80\x43\x84\x49\x80\x49\x80\x49\xf0\x0d\x00\x04\x1a\xd0\x03\x19",
};
static
struct {
@@ -92094,7 +92469,7 @@ _collections_abc_toplevel_consts_70_consts = {
& _collections_abc_toplevel_consts_70_consts_12.ob_base.ob_base,
& _collections_abc_toplevel_consts_70_consts_13.ob_base.ob_base,
Py_None,
- & codecs_toplevel_consts_28_consts_21._object.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_22._object.ob_base.ob_base,
},
},
};
@@ -149349,6 +149724,10 @@ _Py_Deepfreeze_Fini(void) {
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_24_consts_10_qualname);
_PyStaticUnicode_Dealloc((PyObject *)&const_str_tb);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_24_consts_10);
+ _PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_24_consts_11_consts_1);
+ _PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_24_consts_11_qualname);
+ _PyStaticUnicode_Dealloc((PyObject *)&const_str_proto);
+ _PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_24_consts_11);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_24);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_26_consts_2_consts_0);
_PyStaticUnicode_Dealloc((PyObject *)&const_str_bytebuffer);
@@ -149403,6 +149782,8 @@ _Py_Deepfreeze_Fini(void) {
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_26_consts_17);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_26_consts_18_qualname);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_26_consts_18);
+ _PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_26_consts_19_qualname);
+ _PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_26_consts_19);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_26);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_28_consts_1);
_PyStaticUnicode_Dealloc((PyObject *)&const_str_unknown);
@@ -149437,6 +149818,8 @@ _Py_Deepfreeze_Fini(void) {
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_28_consts_18);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_28_consts_19_qualname);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_28_consts_19);
+ _PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_28_consts_20_qualname);
+ _PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_28_consts_20);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_28);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_30_consts_1);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_30_consts_4_consts_0);
@@ -149468,6 +149851,8 @@ _Py_Deepfreeze_Fini(void) {
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_30_consts_18);
_PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_30_consts_19_qualname);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_30_consts_19);
+ _PyStaticUnicode_Dealloc((PyObject *)&codecs_toplevel_consts_30_consts_20_qualname);
+ _PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_30_consts_20);
_PyStaticUnicode_Dealloc((PyObject *)&const_str_data_encoding);
_PyStaticUnicode_Dealloc((PyObject *)&const_str_file_encoding);
_PyStaticCode_Dealloc((PyCodeObject *)&codecs_toplevel_consts_30);
@@ -152148,6 +152533,9 @@ _Py_Deepfreeze_Init(void) {
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_24_consts_10) < 0) {
return -1;
}
+ if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_24_consts_11) < 0) {
+ return -1;
+ }
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_24) < 0) {
return -1;
}
@@ -152187,6 +152575,9 @@ _Py_Deepfreeze_Init(void) {
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_26_consts_18) < 0) {
return -1;
}
+ if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_26_consts_19) < 0) {
+ return -1;
+ }
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_26) < 0) {
return -1;
}
@@ -152229,6 +152620,9 @@ _Py_Deepfreeze_Init(void) {
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_28_consts_19) < 0) {
return -1;
}
+ if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_28_consts_20) < 0) {
+ return -1;
+ }
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_28) < 0) {
return -1;
}
@@ -152271,6 +152665,9 @@ _Py_Deepfreeze_Init(void) {
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_30_consts_19) < 0) {
return -1;
}
+ if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_30_consts_20) < 0) {
+ return -1;
+ }
if (_PyStaticCode_InternStrings((PyCodeObject *)&codecs_toplevel_consts_30) < 0) {
return -1;
}
diff --git a/contrib/tools/python3/src/Python/fileutils.c b/contrib/tools/python3/src/Python/fileutils.c
index e1af39ddf0..79ce20bd72 100644
--- a/contrib/tools/python3/src/Python/fileutils.c
+++ b/contrib/tools/python3/src/Python/fileutils.c
@@ -1687,6 +1687,7 @@ _Py_fopen_obj(PyObject *path, const char *mode)
Py_END_ALLOW_THREADS
} while (f == NULL
&& errno == EINTR && !(async_err = PyErr_CheckSignals()));
+ int saved_errno = errno;
#if !USE_UNICODE_WCHAR_CACHE
PyMem_Free(wpath);
#endif /* USE_UNICODE_WCHAR_CACHE */
@@ -1711,13 +1712,14 @@ _Py_fopen_obj(PyObject *path, const char *mode)
Py_END_ALLOW_THREADS
} while (f == NULL
&& errno == EINTR && !(async_err = PyErr_CheckSignals()));
-
+ int saved_errno = errno;
Py_DECREF(bytes);
#endif
if (async_err)
return NULL;
if (f == NULL) {
+ errno = saved_errno;
PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path);
return NULL;
}
diff --git a/contrib/tools/python3/src/Python/pystate.c b/contrib/tools/python3/src/Python/pystate.c
index dfca3f5fd7..db2ce878af 100644
--- a/contrib/tools/python3/src/Python/pystate.c
+++ b/contrib/tools/python3/src/Python/pystate.c
@@ -882,6 +882,10 @@ _PyThreadState_Init(PyThreadState *tstate)
void
_PyThreadState_SetCurrent(PyThreadState *tstate)
{
+ // gh-104690: If Python is being finalized and PyInterpreterState_Delete()
+ // was called, tstate becomes a dangling pointer.
+ assert(_PyThreadState_CheckConsistency(tstate));
+
_PyGILState_NoteThreadState(&tstate->interp->runtime->gilstate, tstate);
}
@@ -2237,6 +2241,46 @@ _PyThreadState_PopFrame(PyThreadState *tstate, _PyInterpreterFrame * frame)
}
+#ifndef NDEBUG
+// Check that a Python thread state valid. In practice, this function is used
+// on a Python debug build to check if 'tstate' is a dangling pointer, if the
+// PyThreadState memory has been freed.
+//
+// Usage:
+//
+// assert(_PyThreadState_CheckConsistency(tstate));
+int
+_PyThreadState_CheckConsistency(PyThreadState *tstate)
+{
+ assert(!_PyMem_IsPtrFreed(tstate));
+ assert(!_PyMem_IsPtrFreed(tstate->interp));
+ return 1;
+}
+#endif
+
+
+// Check if a Python thread must exit immediately, rather than taking the GIL
+// if Py_Finalize() has been called.
+//
+// When this function is called by a daemon thread after Py_Finalize() has been
+// called, the GIL does no longer exist.
+//
+// tstate can be a dangling pointer (point to freed memory): only tstate value
+// is used, the pointer is not deferenced.
+//
+// tstate must be non-NULL.
+int
+_PyThreadState_MustExit(PyThreadState *tstate)
+{
+ /* bpo-39877: Access _PyRuntime directly rather than using
+ tstate->interp->runtime to support calls from Python daemon threads.
+ After Py_Finalize() has been called, tstate can be a dangling pointer:
+ point to PyThreadState freed memory. */
+ PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(&_PyRuntime);
+ return (finalizing != NULL && finalizing != tstate);
+}
+
+
#ifdef __cplusplus
}
#endif
diff --git a/contrib/tools/python3/src/Python/pythonrun.c b/contrib/tools/python3/src/Python/pythonrun.c
index 03e366a8d0..91c2ad3a13 100644
--- a/contrib/tools/python3/src/Python/pythonrun.c
+++ b/contrib/tools/python3/src/Python/pythonrun.c
@@ -1130,21 +1130,16 @@ error:
}
static int
-print_exception_notes(struct exception_print_context *ctx, PyObject *value)
+print_exception_notes(struct exception_print_context *ctx, PyObject *notes)
{
PyObject *f = ctx->file;
- if (!PyExceptionInstance_Check(value)) {
+ if (notes == NULL) {
return 0;
}
- PyObject *notes;
- int res = _PyObject_LookupAttr(value, &_Py_ID(__notes__), &notes);
- if (res <= 0) {
- return res;
- }
if (!PySequence_Check(notes)) {
- res = 0;
+ int res = 0;
if (write_indented_margin(ctx, f) < 0) {
res = -1;
}
@@ -1157,7 +1152,6 @@ print_exception_notes(struct exception_print_context *ctx, PyObject *value)
res = PyFile_WriteObject(s, f, Py_PRINT_RAW);
Py_DECREF(s);
}
- Py_DECREF(notes);
return res;
}
Py_ssize_t num_notes = PySequence_Length(notes);
@@ -1199,17 +1193,16 @@ print_exception_notes(struct exception_print_context *ctx, PyObject *value)
}
}
- Py_DECREF(notes);
return 0;
error:
Py_XDECREF(lines);
- Py_DECREF(notes);
return -1;
}
static int
print_exception(struct exception_print_context *ctx, PyObject *value)
{
+ PyObject *notes = NULL;
PyObject *f = ctx->file;
if (!PyExceptionInstance_Check(value)) {
@@ -1223,8 +1216,11 @@ print_exception(struct exception_print_context *ctx, PyObject *value)
goto error;
}
- /* grab the type now because value can change below */
+ /* grab the type and notes now because value can change below */
PyObject *type = (PyObject *) Py_TYPE(value);
+ if (_PyObject_LookupAttr(value, &_Py_ID(__notes__), &notes) < 0) {
+ goto error;
+ }
if (print_exception_file_and_line(ctx, &value) < 0) {
goto error;
@@ -1238,14 +1234,16 @@ print_exception(struct exception_print_context *ctx, PyObject *value)
if (PyFile_WriteString("\n", f) < 0) {
goto error;
}
- if (print_exception_notes(ctx, value) < 0) {
+ if (print_exception_notes(ctx, notes) < 0) {
goto error;
}
+ Py_XDECREF(notes);
Py_DECREF(value);
assert(!PyErr_Occurred());
return 0;
error:
+ Py_XDECREF(notes);
Py_DECREF(value);
return -1;
}
diff --git a/contrib/tools/python3/src/Python/symtable.c b/contrib/tools/python3/src/Python/symtable.c
index 0b259b08b6..37e5c69740 100644
--- a/contrib/tools/python3/src/Python/symtable.c
+++ b/contrib/tools/python3/src/Python/symtable.c
@@ -128,9 +128,8 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block,
static PyObject *
ste_repr(PySTEntryObject *ste)
{
- return PyUnicode_FromFormat("<symtable entry %U(%ld), line %d>",
- ste->ste_name,
- PyLong_AS_LONG(ste->ste_id), ste->ste_lineno);
+ return PyUnicode_FromFormat("<symtable entry %U(%R), line %d>",
+ ste->ste_name, ste->ste_id, ste->ste_lineno);
}
static void
@@ -502,6 +501,7 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
PyObject *bound, PyObject *local, PyObject *free,
PyObject *global)
{
+ int contains;
if (flags & DEF_GLOBAL) {
if (flags & DEF_NONLOCAL) {
PyErr_Format(PyExc_SyntaxError,
@@ -522,7 +522,11 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
"nonlocal declaration not allowed at module level");
return error_at_directive(ste, name);
}
- if (!PySet_Contains(bound, name)) {
+ contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (!contains) {
PyErr_Format(PyExc_SyntaxError,
"no binding for nonlocal '%U' found",
name);
@@ -546,17 +550,29 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
Note that having a non-NULL bound implies that the block
is nested.
*/
- if (bound && PySet_Contains(bound, name)) {
- SET_SCOPE(scopes, name, FREE);
- ste->ste_free = 1;
- return PySet_Add(free, name) >= 0;
+ if (bound) {
+ contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ SET_SCOPE(scopes, name, FREE);
+ ste->ste_free = 1;
+ return PySet_Add(free, name) >= 0;
+ }
}
/* If a parent has a global statement, then call it global
explicit? It could also be global implicit.
*/
- if (global && PySet_Contains(global, name)) {
- SET_SCOPE(scopes, name, GLOBAL_IMPLICIT);
- return 1;
+ if (global) {
+ contains = PySet_Contains(global, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ SET_SCOPE(scopes, name, GLOBAL_IMPLICIT);
+ return 1;
+ }
}
if (ste->ste_nested)
ste->ste_free = 1;
@@ -590,8 +606,13 @@ analyze_cells(PyObject *scopes, PyObject *free)
scope = PyLong_AS_LONG(v);
if (scope != LOCAL)
continue;
- if (!PySet_Contains(free, name))
+ int contains = PySet_Contains(free, name);
+ if (contains < 0) {
+ goto error;
+ }
+ if (!contains) {
continue;
+ }
/* Replace LOCAL with CELL for this name, and remove
from free. It is safe to replace the value of name
in the dict, because it will not cause a resize.
@@ -691,9 +712,15 @@ update_symbols(PyObject *symbols, PyObject *scopes,
goto error;
}
/* Handle global symbol */
- if (bound && !PySet_Contains(bound, name)) {
- Py_DECREF(name);
- continue; /* it's a global */
+ if (bound) {
+ int contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ goto error;
+ }
+ if (!contains) {
+ Py_DECREF(name);
+ continue; /* it's a global */
+ }
}
/* Propagate new free symbol up the lexical stack */
if (PyDict_SetItem(symbols, name, v_free) < 0) {
diff --git a/contrib/tools/python3/src/Python/sysmodule.c b/contrib/tools/python3/src/Python/sysmodule.c
index 5da1381bbc..25fcd4aecf 100644
--- a/contrib/tools/python3/src/Python/sysmodule.c
+++ b/contrib/tools/python3/src/Python/sysmodule.c
@@ -3113,7 +3113,9 @@ _PySys_UpdateConfig(PyThreadState *tstate)
if (config->pycache_prefix != NULL) {
SET_SYS_FROM_WSTR("pycache_prefix", config->pycache_prefix);
} else {
- PyDict_SetItemString(sysdict, "pycache_prefix", Py_None);
+ if (PyDict_SetItemString(sysdict, "pycache_prefix", Py_None) < 0) {
+ return -1;
+ }
}
COPY_LIST("argv", config->argv);
@@ -3127,7 +3129,9 @@ _PySys_UpdateConfig(PyThreadState *tstate)
SET_SYS_FROM_WSTR("_stdlib_dir", stdlibdir);
}
else {
- PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None);
+ if (PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None) < 0) {
+ return -1;
+ }
}
#undef SET_SYS_FROM_WSTR
@@ -3137,6 +3141,9 @@ _PySys_UpdateConfig(PyThreadState *tstate)
// sys.flags
PyObject *flags = _PySys_GetObject(interp, "flags"); // borrowed ref
if (flags == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError, "lost sys.flags");
+ }
return -1;
}
if (set_flags_from_config(interp, flags) < 0) {
diff --git a/contrib/tools/python3/src/Python/traceback.c b/contrib/tools/python3/src/Python/traceback.c
index 7f47349a27..c4f5ec877b 100644
--- a/contrib/tools/python3/src/Python/traceback.c
+++ b/contrib/tools/python3/src/Python/traceback.c
@@ -12,6 +12,7 @@
#include "pycore_parser.h" // _PyParser_ASTFromString
#include "pycore_pyarena.h" // _PyArena_Free()
#include "pycore_pyerrors.h" // _PyErr_Fetch()
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_traceback.h" // EXCEPTION_TB_HEADER
@@ -621,6 +622,11 @@ extract_anchors_from_expr(const char *segment_str, expr_ty expr, Py_ssize_t *lef
++*right_anchor;
}
+ // Keep going if the current char is not ')'
+ if (i+1 < right->col_offset && (segment_str[i] == ')')) {
+ continue;
+ }
+
// Set the error characters
*primary_error_char = "~";
*secondary_error_char = "^";
@@ -631,6 +637,18 @@ extract_anchors_from_expr(const char *segment_str, expr_ty expr, Py_ssize_t *lef
case Subscript_kind: {
*left_anchor = expr->v.Subscript.value->end_col_offset;
*right_anchor = expr->v.Subscript.slice->end_col_offset + 1;
+ Py_ssize_t str_len = strlen(segment_str);
+
+ // Move right_anchor and left_anchor forward to the first non-whitespace character that is not ']' and '['
+ while (*left_anchor < str_len && (IS_WHITESPACE(segment_str[*left_anchor]) || segment_str[*left_anchor] != '[')) {
+ ++*left_anchor;
+ }
+ while (*right_anchor < str_len && (IS_WHITESPACE(segment_str[*right_anchor]) || segment_str[*right_anchor] != ']')) {
+ ++*right_anchor;
+ }
+ if (*right_anchor < str_len){
+ *right_anchor += 1;
+ }
// Set the error characters
*primary_error_char = "~";
@@ -1217,23 +1235,45 @@ dump_frame(int fd, _PyInterpreterFrame *frame)
PUTS(fd, "\n");
}
+static int
+tstate_is_freed(PyThreadState *tstate)
+{
+ if (_PyMem_IsPtrFreed(tstate)) {
+ return 1;
+ }
+ if (_PyMem_IsPtrFreed(tstate->interp)) {
+ return 1;
+ }
+ return 0;
+}
+
+
+static int
+interp_is_freed(PyInterpreterState *interp)
+{
+ return _PyMem_IsPtrFreed(interp);
+}
+
+
static void
dump_traceback(int fd, PyThreadState *tstate, int write_header)
{
- _PyInterpreterFrame *frame;
- unsigned int depth;
-
if (write_header) {
PUTS(fd, "Stack (most recent call first):\n");
}
- frame = tstate->cframe->current_frame;
+ if (tstate_is_freed(tstate)) {
+ PUTS(fd, " <tstate is freed>\n");
+ return;
+ }
+
+ _PyInterpreterFrame *frame = tstate->cframe->current_frame;
if (frame == NULL) {
PUTS(fd, " <no Python frame>\n");
return;
}
- depth = 0;
+ unsigned int depth = 0;
while (1) {
if (MAX_FRAME_DEPTH <= depth) {
PUTS(fd, " ...\n");
@@ -1288,9 +1328,6 @@ const char*
_Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
PyThreadState *current_tstate)
{
- PyThreadState *tstate;
- unsigned int nthreads;
-
if (current_tstate == NULL) {
/* _Py_DumpTracebackThreads() is called from signal handlers by
faulthandler.
@@ -1306,6 +1343,10 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
current_tstate = PyGILState_GetThisThreadState();
}
+ if (current_tstate != NULL && tstate_is_freed(current_tstate)) {
+ return "tstate is freed";
+ }
+
if (interp == NULL) {
if (current_tstate == NULL) {
interp = _PyGILState_GetInterpreterStateUnsafe();
@@ -1320,14 +1361,18 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
}
assert(interp != NULL);
+ if (interp_is_freed(interp)) {
+ return "interp is freed";
+ }
+
/* Get the current interpreter from the current thread */
- tstate = PyInterpreterState_ThreadHead(interp);
+ PyThreadState *tstate = PyInterpreterState_ThreadHead(interp);
if (tstate == NULL)
return "unable to get the thread head state";
/* Dump the traceback of each thread */
tstate = PyInterpreterState_ThreadHead(interp);
- nthreads = 0;
+ unsigned int nthreads = 0;
_Py_BEGIN_SUPPRESS_IPH
do
{