update
This commit is contained in:
6
.CondaPkg/env/include/Python.h
vendored
6
.CondaPkg/env/include/Python.h
vendored
@@ -49,6 +49,9 @@
|
||||
#include "bytearrayobject.h"
|
||||
#include "bytesobject.h"
|
||||
#include "unicodeobject.h"
|
||||
#include "cpython/initconfig.h"
|
||||
#include "pystate.h"
|
||||
#include "pyerrors.h"
|
||||
#include "longobject.h"
|
||||
#include "cpython/longintrepr.h"
|
||||
#include "boolobject.h"
|
||||
@@ -74,8 +77,6 @@
|
||||
#include "sliceobject.h"
|
||||
#include "cpython/cellobject.h"
|
||||
#include "iterobject.h"
|
||||
#include "cpython/initconfig.h"
|
||||
#include "pystate.h"
|
||||
#include "cpython/genobject.h"
|
||||
#include "descrobject.h"
|
||||
#include "genericaliasobject.h"
|
||||
@@ -85,7 +86,6 @@
|
||||
#include "cpython/picklebufobject.h"
|
||||
#include "cpython/pytime.h"
|
||||
#include "codecs.h"
|
||||
#include "pyerrors.h"
|
||||
#include "pythread.h"
|
||||
#include "cpython/context.h"
|
||||
#include "modsupport.h"
|
||||
|
||||
2
.CondaPkg/env/include/boolobject.h
vendored
2
.CondaPkg/env/include/boolobject.h
vendored
@@ -7,7 +7,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyBool_Type;
|
||||
// PyBool_Type is declared by object.h
|
||||
|
||||
#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
|
||||
|
||||
|
||||
3
.CondaPkg/env/include/compile.h
vendored
3
.CondaPkg/env/include/compile.h
vendored
@@ -10,9 +10,6 @@ extern "C" {
|
||||
#define Py_eval_input 258
|
||||
#define Py_func_type_input 345
|
||||
|
||||
/* This doesn't need to match anything */
|
||||
#define Py_fstring_input 800
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
# define Py_CPYTHON_COMPILE_H
|
||||
# include "cpython/compile.h"
|
||||
|
||||
4
.CondaPkg/env/include/cpython/code.h
vendored
4
.CondaPkg/env/include/cpython/code.h
vendored
@@ -75,7 +75,7 @@ typedef struct {
|
||||
PyObject *_co_freevars;
|
||||
} _PyCoCached;
|
||||
|
||||
/* Ancilliary data structure used for instrumentation.
|
||||
/* Ancillary data structure used for instrumentation.
|
||||
Line instrumentation creates an array of
|
||||
these. One entry per code unit.*/
|
||||
typedef struct {
|
||||
@@ -207,7 +207,7 @@ struct PyCodeObject _PyCode_DEF(1);
|
||||
*/
|
||||
#define PY_PARSER_REQUIRES_FUTURE_KEYWORD
|
||||
|
||||
#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
|
||||
#define CO_MAXBLOCKS 21 /* Max static block nesting within a function */
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyCode_Type;
|
||||
|
||||
|
||||
8
.CondaPkg/env/include/cpython/funcobject.h
vendored
8
.CondaPkg/env/include/cpython/funcobject.h
vendored
@@ -8,7 +8,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#define COMMON_FIELDS(PREFIX) \
|
||||
#define _Py_COMMON_FIELDS(PREFIX) \
|
||||
PyObject *PREFIX ## globals; \
|
||||
PyObject *PREFIX ## builtins; \
|
||||
PyObject *PREFIX ## name; \
|
||||
@@ -19,7 +19,7 @@ extern "C" {
|
||||
PyObject *PREFIX ## closure; /* NULL or a tuple of cell objects */
|
||||
|
||||
typedef struct {
|
||||
COMMON_FIELDS(fc_)
|
||||
_Py_COMMON_FIELDS(fc_)
|
||||
} PyFrameConstructor;
|
||||
|
||||
/* Function objects and code objects should not be confused with each other:
|
||||
@@ -35,7 +35,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
COMMON_FIELDS(func_)
|
||||
_Py_COMMON_FIELDS(func_)
|
||||
PyObject *func_doc; /* The __doc__ attribute, can be anything */
|
||||
PyObject *func_dict; /* The __dict__ attribute, a dict or NULL */
|
||||
PyObject *func_weakreflist; /* List of weak references */
|
||||
@@ -60,6 +60,8 @@ typedef struct {
|
||||
*/
|
||||
} PyFunctionObject;
|
||||
|
||||
#undef _Py_COMMON_FIELDS
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyFunction_Type;
|
||||
|
||||
#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
|
||||
|
||||
3
.CondaPkg/env/include/cpython/longintrepr.h
vendored
3
.CondaPkg/env/include/cpython/longintrepr.h
vendored
@@ -116,9 +116,10 @@ _PyLong_IsCompact(const PyLongObject* op) {
|
||||
static inline Py_ssize_t
|
||||
_PyLong_CompactValue(const PyLongObject *op)
|
||||
{
|
||||
Py_ssize_t sign;
|
||||
assert(PyType_HasFeature((op)->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
|
||||
assert(PyUnstable_Long_IsCompact(op));
|
||||
Py_ssize_t sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
|
||||
sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
|
||||
return sign * (Py_ssize_t)op->long_value.ob_digit[0];
|
||||
}
|
||||
|
||||
|
||||
22
.CondaPkg/env/include/cpython/pystate.h
vendored
22
.CondaPkg/env/include/cpython/pystate.h
vendored
@@ -251,12 +251,24 @@ struct _ts {
|
||||
/* WASI has limited call stack. Python's recursion limit depends on code
|
||||
layout, optimization, and WASI runtime. Wasmtime can handle about 700
|
||||
recursions, sometimes less. 500 is a more conservative limit. */
|
||||
#ifndef C_RECURSION_LIMIT
|
||||
# ifdef __wasi__
|
||||
# define C_RECURSION_LIMIT 500
|
||||
#ifdef Py_DEBUG
|
||||
# if defined(__wasi__)
|
||||
# define C_RECURSION_LIMIT 150
|
||||
# else
|
||||
// This value is duplicated in Lib/test/support/__init__.py
|
||||
# define C_RECURSION_LIMIT 1500
|
||||
# define C_RECURSION_LIMIT 500
|
||||
# endif
|
||||
#else
|
||||
# if defined(__wasi__)
|
||||
# define C_RECURSION_LIMIT 500
|
||||
# elif defined(__s390x__)
|
||||
# define C_RECURSION_LIMIT 800
|
||||
# elif defined(_WIN32)
|
||||
# define C_RECURSION_LIMIT 3000
|
||||
# elif defined(_Py_ADDRESS_SANITIZER)
|
||||
# define C_RECURSION_LIMIT 4000
|
||||
# else
|
||||
// This value is duplicated in Lib/test/support/__init__.py
|
||||
# define C_RECURSION_LIMIT 10000
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -140,9 +140,11 @@ typedef struct {
|
||||
and the kind is PyUnicode_1BYTE_KIND. If ascii is set and compact is
|
||||
set, use the PyASCIIObject structure. */
|
||||
unsigned int ascii:1;
|
||||
/* The object is statically allocated. */
|
||||
unsigned int statically_allocated:1;
|
||||
/* Padding to ensure that PyUnicode_DATA() is always aligned to
|
||||
4 bytes (see issue #19537 on m68k). */
|
||||
unsigned int :25;
|
||||
unsigned int :24;
|
||||
} state;
|
||||
} PyASCIIObject;
|
||||
|
||||
|
||||
38
.CondaPkg/env/include/errcode.h
vendored
38
.CondaPkg/env/include/errcode.h
vendored
@@ -4,7 +4,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Error codes passed around between file input, tokenizer, parser and
|
||||
interpreter. This is necessary so we can turn them into Python
|
||||
exceptions at a higher level. Note that some errors have a
|
||||
@@ -13,24 +12,25 @@ extern "C" {
|
||||
the parser only returns E_EOF when it hits EOF immediately, and it
|
||||
never returns E_OK. */
|
||||
|
||||
#define E_OK 10 /* No error */
|
||||
#define E_EOF 11 /* End Of File */
|
||||
#define E_INTR 12 /* Interrupted */
|
||||
#define E_TOKEN 13 /* Bad token */
|
||||
#define E_SYNTAX 14 /* Syntax error */
|
||||
#define E_NOMEM 15 /* Ran out of memory */
|
||||
#define E_DONE 16 /* Parsing complete */
|
||||
#define E_ERROR 17 /* Execution error */
|
||||
#define E_TABSPACE 18 /* Inconsistent mixing of tabs and spaces */
|
||||
#define E_OVERFLOW 19 /* Node had too many children */
|
||||
#define E_TOODEEP 20 /* Too many indentation levels */
|
||||
#define E_DEDENT 21 /* No matching outer block for dedent */
|
||||
#define E_DECODE 22 /* Error in decoding into Unicode */
|
||||
#define E_EOFS 23 /* EOF in triple-quoted string */
|
||||
#define E_EOLS 24 /* EOL in single-quoted string */
|
||||
#define E_LINECONT 25 /* Unexpected characters after a line continuation */
|
||||
#define E_BADSINGLE 27 /* Ill-formed single statement input */
|
||||
#define E_INTERACT_STOP 28 /* Interactive mode stopped tokenization */
|
||||
#define E_OK 10 /* No error */
|
||||
#define E_EOF 11 /* End Of File */
|
||||
#define E_INTR 12 /* Interrupted */
|
||||
#define E_TOKEN 13 /* Bad token */
|
||||
#define E_SYNTAX 14 /* Syntax error */
|
||||
#define E_NOMEM 15 /* Ran out of memory */
|
||||
#define E_DONE 16 /* Parsing complete */
|
||||
#define E_ERROR 17 /* Execution error */
|
||||
#define E_TABSPACE 18 /* Inconsistent mixing of tabs and spaces */
|
||||
#define E_OVERFLOW 19 /* Node had too many children */
|
||||
#define E_TOODEEP 20 /* Too many indentation levels */
|
||||
#define E_DEDENT 21 /* No matching outer block for dedent */
|
||||
#define E_DECODE 22 /* Error in decoding into Unicode */
|
||||
#define E_EOFS 23 /* EOF in triple-quoted string */
|
||||
#define E_EOLS 24 /* EOL in single-quoted string */
|
||||
#define E_LINECONT 25 /* Unexpected characters after a line continuation */
|
||||
#define E_BADSINGLE 27 /* Ill-formed single statement input */
|
||||
#define E_INTERACT_STOP 28 /* Interactive mode stopped tokenization */
|
||||
#define E_COLUMNOVERFLOW 29 /* Column offset overflow */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
2
.CondaPkg/env/include/floatobject.h
vendored
2
.CondaPkg/env/include/floatobject.h
vendored
@@ -2,7 +2,7 @@
|
||||
/* Float object interface */
|
||||
|
||||
/*
|
||||
PyFloatObject represents a (double precision) floating point number.
|
||||
PyFloatObject represents a (double precision) floating-point number.
|
||||
*/
|
||||
|
||||
#ifndef Py_FLOATOBJECT_H
|
||||
|
||||
@@ -12,8 +12,8 @@ extern "C" {
|
||||
|
||||
struct ast_state {
|
||||
int initialized;
|
||||
int recursion_depth;
|
||||
int recursion_limit;
|
||||
int unused_recursion_depth;
|
||||
int unused_recursion_limit;
|
||||
PyObject *AST_type;
|
||||
PyObject *Add_singleton;
|
||||
PyObject *Add_type;
|
||||
|
||||
@@ -74,6 +74,7 @@ extern int _PyPerfTrampoline_SetCallbacks(_PyPerf_Callbacks *);
|
||||
extern void _PyPerfTrampoline_GetCallbacks(_PyPerf_Callbacks *);
|
||||
extern int _PyPerfTrampoline_Init(int activate);
|
||||
extern int _PyPerfTrampoline_Fini(void);
|
||||
extern void _PyPerfTrampoline_FreeArenas(void);
|
||||
extern int _PyIsPerfTrampolineActive(void);
|
||||
extern PyStatus _PyPerfTrampoline_AfterFork_Child(void);
|
||||
#ifdef PY_HAVE_PERF_TRAMPOLINE
|
||||
|
||||
22
.CondaPkg/env/include/internal/pycore_code.h
vendored
22
.CondaPkg/env/include/internal/pycore_code.h
vendored
@@ -359,27 +359,29 @@ write_varint(uint8_t *ptr, unsigned int val)
|
||||
val >>= 6;
|
||||
written++;
|
||||
}
|
||||
*ptr = val;
|
||||
*ptr = (uint8_t)val;
|
||||
return written;
|
||||
}
|
||||
|
||||
static inline int
|
||||
write_signed_varint(uint8_t *ptr, int val)
|
||||
{
|
||||
unsigned int uval;
|
||||
if (val < 0) {
|
||||
val = ((-val)<<1) | 1;
|
||||
// (unsigned int)(-val) has an undefined behavior for INT_MIN
|
||||
uval = ((0 - (unsigned int)val) << 1) | 1;
|
||||
}
|
||||
else {
|
||||
val = val << 1;
|
||||
uval = (unsigned int)val << 1;
|
||||
}
|
||||
return write_varint(ptr, val);
|
||||
return write_varint(ptr, uval);
|
||||
}
|
||||
|
||||
static inline int
|
||||
write_location_entry_start(uint8_t *ptr, int code, int length)
|
||||
{
|
||||
assert((code & 15) == code);
|
||||
*ptr = 128 | (code << 3) | (length - 1);
|
||||
*ptr = 128 | (uint8_t)(code << 3) | (uint8_t)(length - 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -419,9 +421,9 @@ write_location_entry_start(uint8_t *ptr, int code, int length)
|
||||
|
||||
|
||||
static inline uint16_t
|
||||
adaptive_counter_bits(int value, int backoff) {
|
||||
return (value << ADAPTIVE_BACKOFF_BITS) |
|
||||
(backoff & ((1<<ADAPTIVE_BACKOFF_BITS)-1));
|
||||
adaptive_counter_bits(uint16_t value, uint16_t backoff) {
|
||||
return ((value << ADAPTIVE_BACKOFF_BITS)
|
||||
| (backoff & ((1 << ADAPTIVE_BACKOFF_BITS) - 1)));
|
||||
}
|
||||
|
||||
static inline uint16_t
|
||||
@@ -438,12 +440,12 @@ adaptive_counter_cooldown(void) {
|
||||
|
||||
static inline uint16_t
|
||||
adaptive_counter_backoff(uint16_t counter) {
|
||||
unsigned int backoff = counter & ((1<<ADAPTIVE_BACKOFF_BITS)-1);
|
||||
uint16_t backoff = counter & ((1 << ADAPTIVE_BACKOFF_BITS) - 1);
|
||||
backoff++;
|
||||
if (backoff > MAX_BACKOFF_VALUE) {
|
||||
backoff = MAX_BACKOFF_VALUE;
|
||||
}
|
||||
unsigned int value = (1 << backoff) - 1;
|
||||
uint16_t value = (uint16_t)(1 << backoff) - 1;
|
||||
return adaptive_counter_bits(value, backoff);
|
||||
}
|
||||
|
||||
|
||||
10
.CondaPkg/env/include/internal/pycore_dtoa.h
vendored
10
.CondaPkg/env/include/internal/pycore_dtoa.h
vendored
@@ -11,8 +11,6 @@ extern "C" {
|
||||
#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
|
||||
|
||||
|
||||
#if _PY_SHORT_FLOAT_REPR == 1
|
||||
|
||||
typedef uint32_t ULong;
|
||||
|
||||
struct
|
||||
@@ -22,15 +20,15 @@ Bigint {
|
||||
ULong x[1];
|
||||
};
|
||||
|
||||
#ifdef Py_USING_MEMORY_DEBUGGER
|
||||
#if defined(Py_USING_MEMORY_DEBUGGER) || _PY_SHORT_FLOAT_REPR == 0
|
||||
|
||||
struct _dtoa_state {
|
||||
int _not_used;
|
||||
};
|
||||
#define _dtoa_interp_state_INIT(INTERP) \
|
||||
#define _dtoa_state_INIT(INTERP) \
|
||||
{0}
|
||||
|
||||
#else // !Py_USING_MEMORY_DEBUGGER
|
||||
#else // !Py_USING_MEMORY_DEBUGGER && _PY_SHORT_FLOAT_REPR != 0
|
||||
|
||||
/* The size of the Bigint freelist */
|
||||
#define Bigint_Kmax 7
|
||||
@@ -65,8 +63,6 @@ PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits,
|
||||
int *decpt, int *sign, char **rve);
|
||||
PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
|
||||
|
||||
#endif // _PY_SHORT_FLOAT_REPR == 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -26,7 +26,7 @@ typedef struct {
|
||||
|
||||
|
||||
typedef struct {
|
||||
struct _PyCfgBasicblock_ *handlers[CO_MAXBLOCKS+1];
|
||||
struct _PyCfgBasicblock_ *handlers[CO_MAXBLOCKS+2];
|
||||
int depth;
|
||||
} _PyCfgExceptStack;
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ typedef enum _framestate {
|
||||
FRAME_CLEARED = 4
|
||||
} PyFrameState;
|
||||
|
||||
#define FRAME_STATE_FINISHED(S) ((S) >= FRAME_COMPLETED)
|
||||
|
||||
enum _frameowner {
|
||||
FRAME_OWNED_BY_THREAD = 0,
|
||||
FRAME_OWNED_BY_GENERATOR = 1,
|
||||
@@ -198,7 +200,7 @@ _PyFrame_MakeAndSetFrameObject(_PyInterpreterFrame *frame);
|
||||
|
||||
/* Gets the PyFrameObject for this frame, lazily
|
||||
* creating it if necessary.
|
||||
* Returns a borrowed referennce */
|
||||
* Returns a borrowed reference */
|
||||
static inline PyFrameObject *
|
||||
_PyFrame_GetFrameObject(_PyInterpreterFrame *frame)
|
||||
{
|
||||
|
||||
@@ -8,6 +8,7 @@ extern "C" {
|
||||
# error "this header requires Py_BUILD_CORE define"
|
||||
#endif
|
||||
|
||||
#include "pycore_hashtable.h" // _Py_hashtable_t
|
||||
#include "pycore_gc.h" // PyGC_Head
|
||||
#include "pycore_global_strings.h" // struct _Py_global_strings
|
||||
#include "pycore_hamt.h" // PyHamtNode_Bitmap
|
||||
@@ -28,6 +29,11 @@ extern "C" {
|
||||
#define _Py_SINGLETON(NAME) \
|
||||
_Py_GLOBAL_OBJECT(singletons.NAME)
|
||||
|
||||
struct _Py_cached_objects {
|
||||
// XXX We could statically allocate the hashtable.
|
||||
_Py_hashtable_t *interned_strings;
|
||||
};
|
||||
|
||||
struct _Py_static_objects {
|
||||
struct {
|
||||
/* Small integers are preallocated in this array so that they
|
||||
|
||||
@@ -550,21 +550,16 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(anon_setcomp));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(anon_string));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(anon_unknown));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(close_br));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dbl_close_br));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dbl_open_br));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dbl_percent));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(defaults));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dot));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dot_locals));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(empty));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(generic_base));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(json_decoder));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(kwdefaults));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(list_err));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(newline));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(open_br));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(percent));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(shim_name));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(type_params));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(utf_8));
|
||||
@@ -577,7 +572,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(TextIOWrapper));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(True));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(WarningMessage));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_WindowsConsoleIO));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(__IOBase_closed));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(__abc_tpflags__));
|
||||
@@ -766,6 +760,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_lock_unlock_module));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_loop));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_needs_com_addref_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_only_immortal));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_pack_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_restype_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_showwarnmsg));
|
||||
@@ -777,7 +772,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_uninitialized_submodules));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_warn_unawaited_coroutine));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_xoptions));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(a));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(abs_tol));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(access));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(add));
|
||||
@@ -797,7 +791,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(attribute));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(authorizer_callback));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(autocommit));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(b));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(backtick));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(base));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(before));
|
||||
@@ -815,7 +808,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(byteorder));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(bytes));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(bytes_per_sep));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(c));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(c_call));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(c_exception));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(c_return));
|
||||
@@ -868,7 +860,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(count));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(covariant));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(cwd));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(d));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(data));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(database));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(decode));
|
||||
@@ -896,7 +887,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(dst));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(dst_dir_fd));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(duration));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(e));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(eager_start));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(effective_ids));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(element_factory));
|
||||
@@ -1057,7 +1047,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(mro));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(msg));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(mycmp));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(n));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(n_arg));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(n_fields));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(n_sequence_fields));
|
||||
@@ -1102,7 +1091,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(outgoing));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(overlapped));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(owner));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(p));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(pages));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(parent));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(password));
|
||||
@@ -1130,7 +1118,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(ps2));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(query));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(quotetabs));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(r));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(raw));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(read));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(read1));
|
||||
@@ -1154,7 +1141,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(return));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(reverse));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(reversed));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(s));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(salt));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(sched_priority));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(scheduler));
|
||||
@@ -1186,6 +1172,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(sound));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(source));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(source_traceback));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(spam));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(src));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(src_dir_fd));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(stacklevel));
|
||||
@@ -1256,7 +1243,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(writable));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(write));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(write_through));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(x));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(year));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(zdict));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_SINGLETON(strings).ascii[0]);
|
||||
|
||||
@@ -36,21 +36,16 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_STR(anon_setcomp, "<setcomp>")
|
||||
STRUCT_FOR_STR(anon_string, "<string>")
|
||||
STRUCT_FOR_STR(anon_unknown, "<unknown>")
|
||||
STRUCT_FOR_STR(close_br, "}")
|
||||
STRUCT_FOR_STR(dbl_close_br, "}}")
|
||||
STRUCT_FOR_STR(dbl_open_br, "{{")
|
||||
STRUCT_FOR_STR(dbl_percent, "%%")
|
||||
STRUCT_FOR_STR(defaults, ".defaults")
|
||||
STRUCT_FOR_STR(dot, ".")
|
||||
STRUCT_FOR_STR(dot_locals, ".<locals>")
|
||||
STRUCT_FOR_STR(empty, "")
|
||||
STRUCT_FOR_STR(generic_base, ".generic_base")
|
||||
STRUCT_FOR_STR(json_decoder, "json.decoder")
|
||||
STRUCT_FOR_STR(kwdefaults, ".kwdefaults")
|
||||
STRUCT_FOR_STR(list_err, "list index out of range")
|
||||
STRUCT_FOR_STR(newline, "\n")
|
||||
STRUCT_FOR_STR(open_br, "{")
|
||||
STRUCT_FOR_STR(percent, "%")
|
||||
STRUCT_FOR_STR(shim_name, "<shim>")
|
||||
STRUCT_FOR_STR(type_params, ".type_params")
|
||||
STRUCT_FOR_STR(utf_8, "utf-8")
|
||||
@@ -66,7 +61,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(TextIOWrapper)
|
||||
STRUCT_FOR_ID(True)
|
||||
STRUCT_FOR_ID(WarningMessage)
|
||||
STRUCT_FOR_ID(_)
|
||||
STRUCT_FOR_ID(_WindowsConsoleIO)
|
||||
STRUCT_FOR_ID(__IOBase_closed)
|
||||
STRUCT_FOR_ID(__abc_tpflags__)
|
||||
@@ -255,6 +249,7 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(_lock_unlock_module)
|
||||
STRUCT_FOR_ID(_loop)
|
||||
STRUCT_FOR_ID(_needs_com_addref_)
|
||||
STRUCT_FOR_ID(_only_immortal)
|
||||
STRUCT_FOR_ID(_pack_)
|
||||
STRUCT_FOR_ID(_restype_)
|
||||
STRUCT_FOR_ID(_showwarnmsg)
|
||||
@@ -266,7 +261,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(_uninitialized_submodules)
|
||||
STRUCT_FOR_ID(_warn_unawaited_coroutine)
|
||||
STRUCT_FOR_ID(_xoptions)
|
||||
STRUCT_FOR_ID(a)
|
||||
STRUCT_FOR_ID(abs_tol)
|
||||
STRUCT_FOR_ID(access)
|
||||
STRUCT_FOR_ID(add)
|
||||
@@ -286,7 +280,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(attribute)
|
||||
STRUCT_FOR_ID(authorizer_callback)
|
||||
STRUCT_FOR_ID(autocommit)
|
||||
STRUCT_FOR_ID(b)
|
||||
STRUCT_FOR_ID(backtick)
|
||||
STRUCT_FOR_ID(base)
|
||||
STRUCT_FOR_ID(before)
|
||||
@@ -304,7 +297,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(byteorder)
|
||||
STRUCT_FOR_ID(bytes)
|
||||
STRUCT_FOR_ID(bytes_per_sep)
|
||||
STRUCT_FOR_ID(c)
|
||||
STRUCT_FOR_ID(c_call)
|
||||
STRUCT_FOR_ID(c_exception)
|
||||
STRUCT_FOR_ID(c_return)
|
||||
@@ -357,7 +349,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(count)
|
||||
STRUCT_FOR_ID(covariant)
|
||||
STRUCT_FOR_ID(cwd)
|
||||
STRUCT_FOR_ID(d)
|
||||
STRUCT_FOR_ID(data)
|
||||
STRUCT_FOR_ID(database)
|
||||
STRUCT_FOR_ID(decode)
|
||||
@@ -385,7 +376,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(dst)
|
||||
STRUCT_FOR_ID(dst_dir_fd)
|
||||
STRUCT_FOR_ID(duration)
|
||||
STRUCT_FOR_ID(e)
|
||||
STRUCT_FOR_ID(eager_start)
|
||||
STRUCT_FOR_ID(effective_ids)
|
||||
STRUCT_FOR_ID(element_factory)
|
||||
@@ -546,7 +536,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(mro)
|
||||
STRUCT_FOR_ID(msg)
|
||||
STRUCT_FOR_ID(mycmp)
|
||||
STRUCT_FOR_ID(n)
|
||||
STRUCT_FOR_ID(n_arg)
|
||||
STRUCT_FOR_ID(n_fields)
|
||||
STRUCT_FOR_ID(n_sequence_fields)
|
||||
@@ -591,7 +580,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(outgoing)
|
||||
STRUCT_FOR_ID(overlapped)
|
||||
STRUCT_FOR_ID(owner)
|
||||
STRUCT_FOR_ID(p)
|
||||
STRUCT_FOR_ID(pages)
|
||||
STRUCT_FOR_ID(parent)
|
||||
STRUCT_FOR_ID(password)
|
||||
@@ -619,7 +607,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(ps2)
|
||||
STRUCT_FOR_ID(query)
|
||||
STRUCT_FOR_ID(quotetabs)
|
||||
STRUCT_FOR_ID(r)
|
||||
STRUCT_FOR_ID(raw)
|
||||
STRUCT_FOR_ID(read)
|
||||
STRUCT_FOR_ID(read1)
|
||||
@@ -643,7 +630,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(return)
|
||||
STRUCT_FOR_ID(reverse)
|
||||
STRUCT_FOR_ID(reversed)
|
||||
STRUCT_FOR_ID(s)
|
||||
STRUCT_FOR_ID(salt)
|
||||
STRUCT_FOR_ID(sched_priority)
|
||||
STRUCT_FOR_ID(scheduler)
|
||||
@@ -675,6 +661,7 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(sound)
|
||||
STRUCT_FOR_ID(source)
|
||||
STRUCT_FOR_ID(source_traceback)
|
||||
STRUCT_FOR_ID(spam)
|
||||
STRUCT_FOR_ID(src)
|
||||
STRUCT_FOR_ID(src_dir_fd)
|
||||
STRUCT_FOR_ID(stacklevel)
|
||||
@@ -745,7 +732,6 @@ struct _Py_global_strings {
|
||||
STRUCT_FOR_ID(writable)
|
||||
STRUCT_FOR_ID(write)
|
||||
STRUCT_FOR_ID(write_through)
|
||||
STRUCT_FOR_ID(x)
|
||||
STRUCT_FOR_ID(year)
|
||||
STRUCT_FOR_ID(zdict)
|
||||
} identifiers;
|
||||
@@ -768,6 +754,10 @@ struct _Py_global_strings {
|
||||
(_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
|
||||
#define _Py_STR(NAME) \
|
||||
(_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
|
||||
#define _Py_LATIN1_CHR(CH) \
|
||||
((CH) < 128 \
|
||||
? (PyObject*)&_Py_SINGLETON(strings).ascii[(CH)] \
|
||||
: (PyObject*)&_Py_SINGLETON(strings).latin1[(CH) - 128])
|
||||
|
||||
/* _Py_DECLARE_STR() should precede all uses of _Py_STR() in a function.
|
||||
|
||||
|
||||
@@ -106,6 +106,7 @@ PyAPI_FUNC(int) _Py_hashtable_foreach(
|
||||
void *user_data);
|
||||
|
||||
PyAPI_FUNC(size_t) _Py_hashtable_size(const _Py_hashtable_t *ht);
|
||||
PyAPI_FUNC(size_t) _Py_hashtable_len(const _Py_hashtable_t *ht);
|
||||
|
||||
/* Add a new entry to the hash. The key must not be present in the hash table.
|
||||
Return 0 on success, -1 on memory error. */
|
||||
|
||||
@@ -40,7 +40,7 @@ extern "C" {
|
||||
#define PY_MONITORING_EVENT_RERAISE 14
|
||||
|
||||
|
||||
/* Ancilliary events */
|
||||
/* Ancillary events */
|
||||
|
||||
#define PY_MONITORING_EVENT_C_RETURN 15
|
||||
#define PY_MONITORING_EVENT_C_RAISE 16
|
||||
|
||||
63
.CondaPkg/env/include/internal/pycore_interp.h
vendored
63
.CondaPkg/env/include/internal/pycore_interp.h
vendored
@@ -39,6 +39,32 @@ struct _Py_long_state {
|
||||
int max_str_digits;
|
||||
};
|
||||
|
||||
|
||||
/* cross-interpreter data registry */
|
||||
|
||||
/* For now we use a global registry of shareable classes. An
|
||||
alternative would be to add a tp_* slot for a class's
|
||||
crossinterpdatafunc. It would be simpler and more efficient. */
|
||||
|
||||
struct _xidregitem;
|
||||
|
||||
struct _xidregitem {
|
||||
struct _xidregitem *prev;
|
||||
struct _xidregitem *next;
|
||||
/* This can be a dangling pointer, but only if weakref is set. */
|
||||
PyTypeObject *cls;
|
||||
/* This is NULL for builtin types. */
|
||||
PyObject *weakref;
|
||||
size_t refcount;
|
||||
crossinterpdatafunc getdata;
|
||||
};
|
||||
|
||||
struct _xidregistry {
|
||||
PyThread_type_lock mutex;
|
||||
struct _xidregitem *head;
|
||||
};
|
||||
|
||||
|
||||
/* interpreter state */
|
||||
|
||||
/* PyInterpreterState holds the global state for one of the runtime's
|
||||
@@ -194,6 +220,14 @@ struct _is {
|
||||
struct _Py_interp_cached_objects cached_objects;
|
||||
struct _Py_interp_static_objects static_objects;
|
||||
|
||||
// XXX Remove this field once we have a tp_* slot.
|
||||
struct _xidregistry xidregistry;
|
||||
/* The thread currently executing in the __main__ module, if any. */
|
||||
PyThreadState *threads_main;
|
||||
/* The ID of the OS thread in which we are finalizing.
|
||||
We use _Py_atomic_address instead of adding a new _Py_atomic_ulong. */
|
||||
_Py_atomic_address _finalizing_id;
|
||||
|
||||
/* the initial PyInterpreterState.threads.head */
|
||||
PyThreadState _initial_thread;
|
||||
};
|
||||
@@ -209,27 +243,26 @@ _PyInterpreterState_GetFinalizing(PyInterpreterState *interp) {
|
||||
return (PyThreadState*)_Py_atomic_load_relaxed(&interp->_finalizing);
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
_PyInterpreterState_GetFinalizingID(PyInterpreterState *interp) {
|
||||
return (unsigned long)_Py_atomic_load_relaxed(&interp->_finalizing_id);
|
||||
}
|
||||
|
||||
static inline void
|
||||
_PyInterpreterState_SetFinalizing(PyInterpreterState *interp, PyThreadState *tstate) {
|
||||
_Py_atomic_store_relaxed(&interp->_finalizing, (uintptr_t)tstate);
|
||||
if (tstate == NULL) {
|
||||
_Py_atomic_store_relaxed(&interp->_finalizing_id, 0);
|
||||
}
|
||||
else {
|
||||
// XXX Re-enable this assert once gh-109860 is fixed.
|
||||
//assert(tstate->thread_id == PyThread_get_thread_ident());
|
||||
_Py_atomic_store_relaxed(&interp->_finalizing_id,
|
||||
(uintptr_t)tstate->thread_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* cross-interpreter data registry */
|
||||
|
||||
/* For now we use a global registry of shareable classes. An
|
||||
alternative would be to add a tp_* slot for a class's
|
||||
crossinterpdatafunc. It would be simpler and more efficient. */
|
||||
|
||||
struct _xidregitem;
|
||||
|
||||
struct _xidregitem {
|
||||
struct _xidregitem *prev;
|
||||
struct _xidregitem *next;
|
||||
PyObject *cls; // weakref to a PyTypeObject
|
||||
crossinterpdatafunc getdata;
|
||||
};
|
||||
|
||||
PyAPI_FUNC(PyInterpreterState*) _PyInterpreterState_LookUpID(int64_t);
|
||||
|
||||
PyAPI_FUNC(int) _PyInterpreterState_IDInitref(PyInterpreterState *);
|
||||
|
||||
@@ -70,6 +70,13 @@ static inline void _Py_RefcntAdd(PyObject* op, Py_ssize_t n)
|
||||
|
||||
static inline void _Py_SetImmortal(PyObject *op)
|
||||
{
|
||||
#ifdef Py_DEBUG
|
||||
// For strings, use _PyUnicode_InternImmortal instead.
|
||||
if (PyUnicode_CheckExact(op)) {
|
||||
assert(PyUnicode_CHECK_INTERNED(op) == SSTATE_INTERNED_IMMORTAL
|
||||
|| PyUnicode_CHECK_INTERNED(op) == SSTATE_INTERNED_IMMORTAL_STATIC);
|
||||
}
|
||||
#endif
|
||||
if (op) {
|
||||
op->ob_refcnt = _Py_IMMORTAL_REFCNT;
|
||||
}
|
||||
@@ -80,7 +87,7 @@ static inline void _Py_SetImmortal(PyObject *op)
|
||||
static inline void _Py_ClearImmortal(PyObject *op)
|
||||
{
|
||||
if (op) {
|
||||
assert(op->ob_refcnt == _Py_IMMORTAL_REFCNT);
|
||||
assert(_Py_IsImmortal(op));
|
||||
op->ob_refcnt = 1;
|
||||
Py_DECREF(op);
|
||||
}
|
||||
|
||||
@@ -665,7 +665,9 @@ struct _obmalloc_global_state {
|
||||
struct _obmalloc_state {
|
||||
struct _obmalloc_pools pools;
|
||||
struct _obmalloc_mgmt mgmt;
|
||||
#if WITH_PYMALLOC_RADIX_TREE
|
||||
struct _obmalloc_usage usage;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
21
.CondaPkg/env/include/internal/pycore_pystate.h
vendored
21
.CondaPkg/env/include/internal/pycore_pystate.h
vendored
@@ -36,10 +36,19 @@ _Py_IsMainInterpreter(PyInterpreterState *interp)
|
||||
static inline int
|
||||
_Py_IsMainInterpreterFinalizing(PyInterpreterState *interp)
|
||||
{
|
||||
return (_PyRuntimeState_GetFinalizing(interp->runtime) != NULL &&
|
||||
interp == &interp->runtime->_main_interpreter);
|
||||
/* 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. */
|
||||
return (_PyRuntimeState_GetFinalizing(&_PyRuntime) != NULL &&
|
||||
interp == &_PyRuntime._main_interpreter);
|
||||
}
|
||||
|
||||
// Export for _xxsubinterpreters module.
|
||||
PyAPI_FUNC(int) _PyInterpreterState_SetRunningMain(PyInterpreterState *);
|
||||
PyAPI_FUNC(void) _PyInterpreterState_SetNotRunningMain(PyInterpreterState *);
|
||||
PyAPI_FUNC(int) _PyInterpreterState_IsRunningMain(PyInterpreterState *);
|
||||
|
||||
|
||||
static inline const PyConfig *
|
||||
_Py_GetMainConfig(void)
|
||||
@@ -68,6 +77,12 @@ extern _Py_thread_local PyThreadState *_Py_tss_tstate;
|
||||
#endif
|
||||
PyAPI_DATA(PyThreadState *) _PyThreadState_GetCurrent(void);
|
||||
|
||||
#ifndef NDEBUG
|
||||
extern int _PyThreadState_CheckConsistency(PyThreadState *tstate);
|
||||
#endif
|
||||
|
||||
extern int _PyThreadState_MustExit(PyThreadState *tstate);
|
||||
|
||||
/* Get the current Python thread state.
|
||||
|
||||
This function is unsafe: it does not check for error and it can return NULL.
|
||||
@@ -142,6 +157,8 @@ extern PyStatus _PyInterpreterState_DeleteExceptMain(_PyRuntimeState *runtime);
|
||||
extern void _PySignal_AfterFork(void);
|
||||
#endif
|
||||
|
||||
PyAPI_FUNC(int) _PyCrossInterpreterData_ReleaseAndRawFree(_PyCrossInterpreterData *);
|
||||
|
||||
|
||||
PyAPI_FUNC(int) _PyState_AddModule(
|
||||
PyThreadState *tstate,
|
||||
|
||||
28
.CondaPkg/env/include/internal/pycore_runtime.h
vendored
28
.CondaPkg/env/include/internal/pycore_runtime.h
vendored
@@ -111,10 +111,7 @@ typedef struct pyruntimestate {
|
||||
tools. */
|
||||
|
||||
// XXX Remove this field once we have a tp_* slot.
|
||||
struct _xidregistry {
|
||||
PyThread_type_lock mutex;
|
||||
struct _xidregitem *head;
|
||||
} xidregistry;
|
||||
struct _xidregistry xidregistry;
|
||||
|
||||
struct _pymem_allocators allocators;
|
||||
struct _obmalloc_global_state obmalloc;
|
||||
@@ -161,6 +158,15 @@ typedef struct pyruntimestate {
|
||||
|
||||
/* All the objects that are shared by the runtime's interpreters. */
|
||||
struct _Py_static_objects static_objects;
|
||||
struct _Py_cached_objects cached_objects;
|
||||
|
||||
/* The ID of the OS thread in which we are finalizing.
|
||||
We use _Py_atomic_address instead of adding a new _Py_atomic_ulong. */
|
||||
_Py_atomic_address _finalizing_id;
|
||||
/* The value to use for sys.path[0] in new subinterpreters.
|
||||
Normally this would be part of the PyConfig struct. However,
|
||||
we cannot add it there in 3.12 since that's an ABI change. */
|
||||
wchar_t *sys_path_0;
|
||||
|
||||
/* The following fields are here to avoid allocation during init.
|
||||
The data is exposed through _PyRuntimeState pointer fields.
|
||||
@@ -204,9 +210,23 @@ _PyRuntimeState_GetFinalizing(_PyRuntimeState *runtime) {
|
||||
return (PyThreadState*)_Py_atomic_load_relaxed(&runtime->_finalizing);
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
_PyRuntimeState_GetFinalizingID(_PyRuntimeState *runtime) {
|
||||
return (unsigned long)_Py_atomic_load_relaxed(&runtime->_finalizing_id);
|
||||
}
|
||||
|
||||
static inline void
|
||||
_PyRuntimeState_SetFinalizing(_PyRuntimeState *runtime, PyThreadState *tstate) {
|
||||
_Py_atomic_store_relaxed(&runtime->_finalizing, (uintptr_t)tstate);
|
||||
if (tstate == NULL) {
|
||||
_Py_atomic_store_relaxed(&runtime->_finalizing_id, 0);
|
||||
}
|
||||
else {
|
||||
// XXX Re-enable this assert once gh-109860 is fixed.
|
||||
//assert(tstate->thread_id == PyThread_get_thread_ident());
|
||||
_Py_atomic_store_relaxed(&runtime->_finalizing_id,
|
||||
(uintptr_t)tstate->thread_id);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -119,6 +119,7 @@ extern PyTypeObject _PyExc_MemoryError;
|
||||
}, \
|
||||
.last_resort_memory_error = { \
|
||||
_PyObject_HEAD_INIT(&_PyExc_MemoryError) \
|
||||
.args = (PyObject*)&_Py_SINGLETON(tuple_empty) \
|
||||
}, \
|
||||
}, \
|
||||
}, \
|
||||
@@ -164,6 +165,7 @@ extern PyTypeObject _PyExc_MemoryError;
|
||||
.kind = 1, \
|
||||
.compact = 1, \
|
||||
.ascii = (ASCII), \
|
||||
.statically_allocated = 1, \
|
||||
}, \
|
||||
}
|
||||
#define _PyASCIIObject_INIT(LITERAL) \
|
||||
|
||||
@@ -542,21 +542,16 @@ extern "C" {
|
||||
INIT_STR(anon_setcomp, "<setcomp>"), \
|
||||
INIT_STR(anon_string, "<string>"), \
|
||||
INIT_STR(anon_unknown, "<unknown>"), \
|
||||
INIT_STR(close_br, "}"), \
|
||||
INIT_STR(dbl_close_br, "}}"), \
|
||||
INIT_STR(dbl_open_br, "{{"), \
|
||||
INIT_STR(dbl_percent, "%%"), \
|
||||
INIT_STR(defaults, ".defaults"), \
|
||||
INIT_STR(dot, "."), \
|
||||
INIT_STR(dot_locals, ".<locals>"), \
|
||||
INIT_STR(empty, ""), \
|
||||
INIT_STR(generic_base, ".generic_base"), \
|
||||
INIT_STR(json_decoder, "json.decoder"), \
|
||||
INIT_STR(kwdefaults, ".kwdefaults"), \
|
||||
INIT_STR(list_err, "list index out of range"), \
|
||||
INIT_STR(newline, "\n"), \
|
||||
INIT_STR(open_br, "{"), \
|
||||
INIT_STR(percent, "%"), \
|
||||
INIT_STR(shim_name, "<shim>"), \
|
||||
INIT_STR(type_params, ".type_params"), \
|
||||
INIT_STR(utf_8, "utf-8"), \
|
||||
@@ -572,7 +567,6 @@ extern "C" {
|
||||
INIT_ID(TextIOWrapper), \
|
||||
INIT_ID(True), \
|
||||
INIT_ID(WarningMessage), \
|
||||
INIT_ID(_), \
|
||||
INIT_ID(_WindowsConsoleIO), \
|
||||
INIT_ID(__IOBase_closed), \
|
||||
INIT_ID(__abc_tpflags__), \
|
||||
@@ -761,6 +755,7 @@ extern "C" {
|
||||
INIT_ID(_lock_unlock_module), \
|
||||
INIT_ID(_loop), \
|
||||
INIT_ID(_needs_com_addref_), \
|
||||
INIT_ID(_only_immortal), \
|
||||
INIT_ID(_pack_), \
|
||||
INIT_ID(_restype_), \
|
||||
INIT_ID(_showwarnmsg), \
|
||||
@@ -772,7 +767,6 @@ extern "C" {
|
||||
INIT_ID(_uninitialized_submodules), \
|
||||
INIT_ID(_warn_unawaited_coroutine), \
|
||||
INIT_ID(_xoptions), \
|
||||
INIT_ID(a), \
|
||||
INIT_ID(abs_tol), \
|
||||
INIT_ID(access), \
|
||||
INIT_ID(add), \
|
||||
@@ -792,7 +786,6 @@ extern "C" {
|
||||
INIT_ID(attribute), \
|
||||
INIT_ID(authorizer_callback), \
|
||||
INIT_ID(autocommit), \
|
||||
INIT_ID(b), \
|
||||
INIT_ID(backtick), \
|
||||
INIT_ID(base), \
|
||||
INIT_ID(before), \
|
||||
@@ -810,7 +803,6 @@ extern "C" {
|
||||
INIT_ID(byteorder), \
|
||||
INIT_ID(bytes), \
|
||||
INIT_ID(bytes_per_sep), \
|
||||
INIT_ID(c), \
|
||||
INIT_ID(c_call), \
|
||||
INIT_ID(c_exception), \
|
||||
INIT_ID(c_return), \
|
||||
@@ -863,7 +855,6 @@ extern "C" {
|
||||
INIT_ID(count), \
|
||||
INIT_ID(covariant), \
|
||||
INIT_ID(cwd), \
|
||||
INIT_ID(d), \
|
||||
INIT_ID(data), \
|
||||
INIT_ID(database), \
|
||||
INIT_ID(decode), \
|
||||
@@ -891,7 +882,6 @@ extern "C" {
|
||||
INIT_ID(dst), \
|
||||
INIT_ID(dst_dir_fd), \
|
||||
INIT_ID(duration), \
|
||||
INIT_ID(e), \
|
||||
INIT_ID(eager_start), \
|
||||
INIT_ID(effective_ids), \
|
||||
INIT_ID(element_factory), \
|
||||
@@ -1052,7 +1042,6 @@ extern "C" {
|
||||
INIT_ID(mro), \
|
||||
INIT_ID(msg), \
|
||||
INIT_ID(mycmp), \
|
||||
INIT_ID(n), \
|
||||
INIT_ID(n_arg), \
|
||||
INIT_ID(n_fields), \
|
||||
INIT_ID(n_sequence_fields), \
|
||||
@@ -1097,7 +1086,6 @@ extern "C" {
|
||||
INIT_ID(outgoing), \
|
||||
INIT_ID(overlapped), \
|
||||
INIT_ID(owner), \
|
||||
INIT_ID(p), \
|
||||
INIT_ID(pages), \
|
||||
INIT_ID(parent), \
|
||||
INIT_ID(password), \
|
||||
@@ -1125,7 +1113,6 @@ extern "C" {
|
||||
INIT_ID(ps2), \
|
||||
INIT_ID(query), \
|
||||
INIT_ID(quotetabs), \
|
||||
INIT_ID(r), \
|
||||
INIT_ID(raw), \
|
||||
INIT_ID(read), \
|
||||
INIT_ID(read1), \
|
||||
@@ -1149,7 +1136,6 @@ extern "C" {
|
||||
INIT_ID(return), \
|
||||
INIT_ID(reverse), \
|
||||
INIT_ID(reversed), \
|
||||
INIT_ID(s), \
|
||||
INIT_ID(salt), \
|
||||
INIT_ID(sched_priority), \
|
||||
INIT_ID(scheduler), \
|
||||
@@ -1181,6 +1167,7 @@ extern "C" {
|
||||
INIT_ID(sound), \
|
||||
INIT_ID(source), \
|
||||
INIT_ID(source_traceback), \
|
||||
INIT_ID(spam), \
|
||||
INIT_ID(src), \
|
||||
INIT_ID(src_dir_fd), \
|
||||
INIT_ID(stacklevel), \
|
||||
@@ -1251,7 +1238,6 @@ extern "C" {
|
||||
INIT_ID(writable), \
|
||||
INIT_ID(write), \
|
||||
INIT_ID(write_through), \
|
||||
INIT_ID(x), \
|
||||
INIT_ID(year), \
|
||||
INIT_ID(zdict), \
|
||||
}
|
||||
|
||||
26
.CondaPkg/env/include/internal/pycore_symtable.h
vendored
26
.CondaPkg/env/include/internal/pycore_symtable.h
vendored
@@ -87,6 +87,7 @@ typedef struct _symtable_entry {
|
||||
int ste_opt_lineno; /* lineno of last exec or import * */
|
||||
int ste_opt_col_offset; /* offset of last exec or import * */
|
||||
struct symtable *ste_table;
|
||||
PyObject *ste_mangled_names; /* set of names for which mangling should be applied */
|
||||
} PySTEntryObject;
|
||||
|
||||
extern PyTypeObject PySTEntry_Type;
|
||||
@@ -105,22 +106,23 @@ PyAPI_FUNC(PySTEntryObject *) PySymtable_Lookup(struct symtable *, void *);
|
||||
|
||||
extern void _PySymtable_Free(struct symtable *);
|
||||
|
||||
extern PyObject *_Py_MaybeMangle(PyObject *privateobj, PySTEntryObject *ste, PyObject *name);
|
||||
extern PyObject* _Py_Mangle(PyObject *p, PyObject *name);
|
||||
|
||||
/* Flags for def-use information */
|
||||
|
||||
#define DEF_GLOBAL 1 /* global stmt */
|
||||
#define DEF_LOCAL 2 /* assignment in code block */
|
||||
#define DEF_PARAM 2<<1 /* formal parameter */
|
||||
#define DEF_NONLOCAL 2<<2 /* nonlocal stmt */
|
||||
#define USE 2<<3 /* name is used */
|
||||
#define DEF_FREE 2<<4 /* name used but not defined in nested block */
|
||||
#define DEF_FREE_CLASS 2<<5 /* free variable from class's method */
|
||||
#define DEF_IMPORT 2<<6 /* assignment occurred via import */
|
||||
#define DEF_ANNOT 2<<7 /* this name is annotated */
|
||||
#define DEF_COMP_ITER 2<<8 /* this name is a comprehension iteration variable */
|
||||
#define DEF_TYPE_PARAM 2<<9 /* this name is a type parameter */
|
||||
#define DEF_COMP_CELL 2<<10 /* this name is a cell in an inlined comprehension */
|
||||
#define DEF_GLOBAL 1 /* global stmt */
|
||||
#define DEF_LOCAL 2 /* assignment in code block */
|
||||
#define DEF_PARAM (2<<1) /* formal parameter */
|
||||
#define DEF_NONLOCAL (2<<2) /* nonlocal stmt */
|
||||
#define USE (2<<3) /* name is used */
|
||||
#define DEF_FREE (2<<4) /* name used but not defined in nested block */
|
||||
#define DEF_FREE_CLASS (2<<5) /* free variable from class's method */
|
||||
#define DEF_IMPORT (2<<6) /* assignment occurred via import */
|
||||
#define DEF_ANNOT (2<<7) /* this name is annotated */
|
||||
#define DEF_COMP_ITER (2<<8) /* this name is a comprehension iteration variable */
|
||||
#define DEF_TYPE_PARAM (2<<9) /* this name is a type parameter */
|
||||
#define DEF_COMP_CELL (2<<10) /* this name is a cell in an inlined comprehension */
|
||||
|
||||
#define DEF_BOUND (DEF_LOCAL | DEF_PARAM | DEF_IMPORT)
|
||||
|
||||
|
||||
@@ -133,6 +133,8 @@ _Py_type_getattro_impl(PyTypeObject *type, PyObject *name, int *suppress_missing
|
||||
PyObject *
|
||||
_Py_type_getattro(PyTypeObject *type, PyObject *name);
|
||||
|
||||
extern PyObject* _Py_BaseObject_RichCompare(PyObject* self, PyObject* other, int op);
|
||||
|
||||
PyObject *_Py_slot_tp_getattro(PyObject *self, PyObject *name);
|
||||
PyObject *_Py_slot_tp_getattr_hook(PyObject *self, PyObject *name);
|
||||
|
||||
|
||||
@@ -13,17 +13,31 @@ extern "C" {
|
||||
|
||||
void _PyUnicode_ExactDealloc(PyObject *op);
|
||||
Py_ssize_t _PyUnicode_InternedSize(void);
|
||||
Py_ssize_t _PyUnicode_InternedSize_Immortal(void);
|
||||
|
||||
/* runtime lifecycle */
|
||||
|
||||
extern void _PyUnicode_InitState(PyInterpreterState *);
|
||||
extern PyStatus _PyUnicode_InitGlobalObjects(PyInterpreterState *);
|
||||
extern PyStatus _PyUnicode_InitInternDict(PyInterpreterState *);
|
||||
extern PyStatus _PyUnicode_InitTypes(PyInterpreterState *);
|
||||
extern void _PyUnicode_Fini(PyInterpreterState *);
|
||||
extern void _PyUnicode_FiniTypes(PyInterpreterState *);
|
||||
|
||||
extern PyTypeObject _PyUnicodeASCIIIter_Type;
|
||||
|
||||
/* Interning */
|
||||
|
||||
// All these are "ref-neutral", like the public PyUnicode_InternInPlace.
|
||||
|
||||
// Explicit interning routines:
|
||||
PyAPI_FUNC(void) _PyUnicode_InternMortal(PyInterpreterState *interp, PyObject **);
|
||||
PyAPI_FUNC(void) _PyUnicode_InternImmortal(PyInterpreterState *interp, PyObject **);
|
||||
// Left here to help backporting:
|
||||
PyAPI_FUNC(void) _PyUnicode_InternInPlace(PyInterpreterState *interp, PyObject **p);
|
||||
// Only for statically allocated strings:
|
||||
extern void _PyUnicode_InternStatic(PyInterpreterState *interp, PyObject **);
|
||||
|
||||
/* other API */
|
||||
|
||||
struct _Py_unicode_runtime_ids {
|
||||
@@ -60,7 +74,6 @@ struct _Py_unicode_state {
|
||||
struct _Py_unicode_ids ids;
|
||||
};
|
||||
|
||||
extern void _PyUnicode_InternInPlace(PyInterpreterState *interp, PyObject **p);
|
||||
extern void _PyUnicode_ClearInterned(PyInterpreterState *interp);
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
21
.CondaPkg/env/include/longobject.h
vendored
21
.CondaPkg/env/include/longobject.h
vendored
@@ -7,7 +7,7 @@ extern "C" {
|
||||
|
||||
/* Long (arbitrary precision) integer object interface */
|
||||
|
||||
PyAPI_DATA(PyTypeObject) PyLong_Type;
|
||||
// PyLong_Type is declared by object.h
|
||||
|
||||
#define PyLong_Check(op) \
|
||||
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
|
||||
@@ -34,7 +34,24 @@ PyAPI_FUNC(PyObject *) PyLong_GetInfo(void);
|
||||
#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT
|
||||
#define _Py_PARSE_PID "i"
|
||||
#define PyLong_FromPid PyLong_FromLong
|
||||
#define PyLong_AsPid PyLong_AsLong
|
||||
# ifndef Py_LIMITED_API
|
||||
# define PyLong_AsPid _PyLong_AsInt
|
||||
# elif SIZEOF_INT == SIZEOF_LONG
|
||||
# define PyLong_AsPid PyLong_AsLong
|
||||
# else
|
||||
static inline int
|
||||
PyLong_AsPid(PyObject *obj)
|
||||
{
|
||||
int overflow;
|
||||
long result = PyLong_AsLongAndOverflow(obj, &overflow);
|
||||
if (overflow || result > INT_MAX || result < INT_MIN) {
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"Python int too large to convert to C int");
|
||||
return -1;
|
||||
}
|
||||
return (int)result;
|
||||
}
|
||||
# endif
|
||||
#elif SIZEOF_PID_T == SIZEOF_LONG
|
||||
#define _Py_PARSE_PID "l"
|
||||
#define PyLong_FromPid PyLong_FromLong
|
||||
|
||||
16
.CondaPkg/env/include/moduleobject.h
vendored
16
.CondaPkg/env/include/moduleobject.h
vendored
@@ -78,19 +78,23 @@ struct PyModuleDef_Slot {
|
||||
|
||||
#define Py_mod_create 1
|
||||
#define Py_mod_exec 2
|
||||
#define Py_mod_multiple_interpreters 3
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030c0000
|
||||
# define Py_mod_multiple_interpreters 3
|
||||
#endif
|
||||
|
||||
#ifndef Py_LIMITED_API
|
||||
#define _Py_mod_LAST_SLOT 3
|
||||
#endif
|
||||
|
||||
/* for Py_mod_multiple_interpreters: */
|
||||
#define Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED ((void *)0)
|
||||
#define Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED ((void *)1)
|
||||
#define Py_MOD_PER_INTERPRETER_GIL_SUPPORTED ((void *)2)
|
||||
|
||||
#endif /* New in 3.5 */
|
||||
|
||||
/* for Py_mod_multiple_interpreters: */
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030c0000
|
||||
# define Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED ((void *)0)
|
||||
# define Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED ((void *)1)
|
||||
# define Py_MOD_PER_INTERPRETER_GIL_SUPPORTED ((void *)2)
|
||||
#endif
|
||||
|
||||
struct PyModuleDef {
|
||||
PyModuleDef_Base m_base;
|
||||
const char* m_name;
|
||||
|
||||
3
.CondaPkg/env/include/object.h
vendored
3
.CondaPkg/env/include/object.h
vendored
@@ -230,8 +230,7 @@ PyAPI_DATA(PyTypeObject) PyBool_Type;
|
||||
static inline Py_ssize_t Py_SIZE(PyObject *ob) {
|
||||
assert(ob->ob_type != &PyLong_Type);
|
||||
assert(ob->ob_type != &PyBool_Type);
|
||||
PyVarObject *var_ob = _PyVarObject_CAST(ob);
|
||||
return var_ob->ob_size;
|
||||
return _PyVarObject_CAST(ob)->ob_size;
|
||||
}
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
|
||||
# define Py_SIZE(ob) Py_SIZE(_PyObject_CAST(ob))
|
||||
|
||||
4
.CondaPkg/env/include/patchlevel.h
vendored
4
.CondaPkg/env/include/patchlevel.h
vendored
@@ -18,12 +18,12 @@
|
||||
/*--start constants--*/
|
||||
#define PY_MAJOR_VERSION 3
|
||||
#define PY_MINOR_VERSION 12
|
||||
#define PY_MICRO_VERSION 0
|
||||
#define PY_MICRO_VERSION 7
|
||||
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
|
||||
#define PY_RELEASE_SERIAL 0
|
||||
|
||||
/* Version as a string */
|
||||
#define PY_VERSION "3.12.0"
|
||||
#define PY_VERSION "3.12.7"
|
||||
/*--end constants--*/
|
||||
|
||||
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
|
||||
|
||||
6
.CondaPkg/env/include/pyconfig.h
vendored
6
.CondaPkg/env/include/pyconfig.h
vendored
@@ -161,9 +161,9 @@ WIN32 is still required for the locale module.
|
||||
#endif /* MS_WIN64 */
|
||||
|
||||
/* set the version macros for the windows headers */
|
||||
/* Python 3.9+ requires Windows 8 or greater */
|
||||
#define Py_WINVER 0x0602 /* _WIN32_WINNT_WIN8 */
|
||||
#define Py_NTDDI NTDDI_WIN8
|
||||
/* Python 3.12+ requires Windows 8.1 or greater */
|
||||
#define Py_WINVER 0x0603 /* _WIN32_WINNT_WINBLUE (8.1) */
|
||||
#define Py_NTDDI NTDDI_WINBLUE
|
||||
|
||||
/* We only set these values when building Python - we don't want to force
|
||||
these values on extensions, as that will affect the prototypes and
|
||||
|
||||
4
.CondaPkg/env/include/pyexpat.h
vendored
4
.CondaPkg/env/include/pyexpat.h
vendored
@@ -48,8 +48,10 @@ struct PyExpat_CAPI
|
||||
enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding);
|
||||
int (*DefaultUnknownEncodingHandler)(
|
||||
void *encodingHandlerData, const XML_Char *name, XML_Encoding *info);
|
||||
/* might be none for expat < 2.1.0 */
|
||||
/* might be NULL for expat < 2.1.0 */
|
||||
int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
|
||||
/* might be NULL for expat < 2.6.0 */
|
||||
XML_Bool (*SetReparseDeferralEnabled)(XML_Parser parser, XML_Bool enabled);
|
||||
/* always add new stuff to the end! */
|
||||
};
|
||||
|
||||
|
||||
11
.CondaPkg/env/include/pymacconfig.h
vendored
11
.CondaPkg/env/include/pymacconfig.h
vendored
@@ -10,7 +10,9 @@
|
||||
|
||||
#if defined(__APPLE__)
|
||||
|
||||
# undef ALIGNOF_MAX_ALIGN_T
|
||||
# undef SIZEOF_LONG
|
||||
# undef SIZEOF_LONG_DOUBLE
|
||||
# undef SIZEOF_PTHREAD_T
|
||||
# undef SIZEOF_SIZE_T
|
||||
# undef SIZEOF_TIME_T
|
||||
@@ -23,6 +25,7 @@
|
||||
# undef DOUBLE_IS_BIG_ENDIAN_IEEE754
|
||||
# undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754
|
||||
# undef HAVE_GCC_ASM_FOR_X87
|
||||
# undef HAVE_GCC_ASM_FOR_X64
|
||||
|
||||
# undef VA_LIST_IS_ARRAY
|
||||
# if defined(__LP64__) && defined(__x86_64__)
|
||||
@@ -80,8 +83,14 @@
|
||||
#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754
|
||||
#endif /* __BIG_ENDIAN */
|
||||
|
||||
#ifdef __i386__
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
# define HAVE_GCC_ASM_FOR_X87
|
||||
# define ALIGNOF_MAX_ALIGN_T 16
|
||||
# define HAVE_GCC_ASM_FOR_X64 1
|
||||
# define SIZEOF_LONG_DOUBLE 16
|
||||
#else
|
||||
# define ALIGNOF_MAX_ALIGN_T 8
|
||||
# define SIZEOF_LONG_DOUBLE 8
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
8
.CondaPkg/env/include/pymacro.h
vendored
8
.CondaPkg/env/include/pymacro.h
vendored
@@ -15,11 +15,11 @@
|
||||
// MSVC makes static_assert a keyword in C11-17, contrary to the standards.
|
||||
//
|
||||
// In C++11 and C2x, static_assert is a keyword, redefining is undefined
|
||||
// behaviour. So only define if building as C (if __STDC_VERSION__ is defined),
|
||||
// not C++, and only for C11-17.
|
||||
// behaviour. So only define if building as C, not C++ (if __cplusplus is
|
||||
// not defined), and only for C11-17.
|
||||
#if !defined(static_assert) && (defined(__GNUC__) || defined(__clang__)) \
|
||||
&& defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \
|
||||
&& __STDC_VERSION__ <= 201710L
|
||||
&& !defined(__cplusplus) && defined(__STDC_VERSION__) \
|
||||
&& __STDC_VERSION__ >= 201112L && __STDC_VERSION__ <= 201710L
|
||||
# define static_assert _Static_assert
|
||||
#endif
|
||||
|
||||
|
||||
8
.CondaPkg/env/include/pyport.h
vendored
8
.CondaPkg/env/include/pyport.h
vendored
@@ -748,10 +748,18 @@ extern char * _getpty(int *, int, mode_t, int);
|
||||
# define _Py_ADDRESS_SANITIZER
|
||||
# endif
|
||||
# endif
|
||||
# if __has_feature(thread_sanitizer)
|
||||
# if !defined(_Py_THREAD_SANITIZER)
|
||||
# define _Py_THREAD_SANITIZER
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(__GNUC__)
|
||||
# if defined(__SANITIZE_ADDRESS__)
|
||||
# define _Py_ADDRESS_SANITIZER
|
||||
# endif
|
||||
# if defined(__SANITIZE_THREAD__)
|
||||
# define _Py_THREAD_SANITIZER
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user