chore(test): 迁移测试夹具到新语法

机械规则 R2/R3/R4/R6/R7/R8/R13 + R16 保守子集,共 86 文件 2127 行。R1(T | t.CPtr)与 R12(while 下标循环)未做,仍列为待办。全量 77/77 顺序回归通过。
This commit is contained in:
TermiNexus committed 2026-10-05 19:59:02 +08:00
1 parent c9d741c202
commit f5da836fbb
86 files changed
+2121 -2121

No files matched your search

+242 -242
View File
@@ -24,141 +24,141 @@ extern def Py_DecRef(op: PyObject | t.CPtr)
# ============================================================
extern def Py_Initialize()
extern def Py_Finalize()
extern def Py_InitializeEx(initsigs: t.CInt)
extern def Py_FinalizeEx() -> t.CInt
extern def Py_IsInitialized() -> t.CInt
extern def Py_InitializeEx(initsigs: int)
extern def Py_FinalizeEx() -> int
extern def Py_IsInitialized() -> int
# ============================================================
# PyConfig
# ============================================================
class PySTATUS:
func: t.CConst | str
err_msg: t.CConst | str
exitcode: t.CInt
func: const str
err_msg: const str
exitcode: int
class PyPreConfig:
_config_version: t.CInt
_config_init: t.CInt
parse_argv: t.CInt
isolated: t.CInt
use_environment: t.CInt
utf8_mode: t.CInt
coerce_c_locale: t.CInt
C_locale_warnings: t.CInt
allocator: t.CInt
dev_mode: t.CInt
_config_version: int
_config_init: int
parse_argv: int
isolated: int
use_environment: int
utf8_mode: int
coerce_c_locale: int
C_locale_warnings: int
allocator: int
dev_mode: int
class PyWideStringList:
length: t.CSizeT
length: sizet
items: t.CPtr
class PyConfig:
_config_version: t.CInt
_config_init: t.CInt
isolated: t.CInt
use_environment: t.CInt
dev_mode: t.CInt
install_signal_handlers: t.CInt
use_hash_seed: t.CInt
_config_version: int
_config_init: int
isolated: int
use_environment: int
dev_mode: int
install_signal_handlers: int
use_hash_seed: int
hash_seed: t.CUnsignedLong
faulthandler: t.CInt
tracemalloc: t.CInt
import_time: t.CInt
show_ref_count: t.CInt
dump_refs: t.CInt
dump_refs_file: t.CConst | str
malloc_stats: t.CInt
filesystem_errors: t.CInt
pycache_prefix: t.CConst | str
parse_argv: t.CInt
faulthandler: int
tracemalloc: int
import_time: int
show_ref_count: int
dump_refs: int
dump_refs_file: const str
malloc_stats: int
filesystem_errors: int
pycache_prefix: const str
parse_argv: int
argv: PyWideStringList
program_name: t.CConst | str
program_name: const str
xoptions: PyWideStringList
warnoptions: PyWideStringList
site_import: t.CInt
bytes_warning: t.CInt
warn_default_encoding: t.CInt
inspect: t.CInt
interactive: t.CInt
optimization_level: t.CInt
parser_debug: t.CInt
verbose: t.CInt
quiet: t.CInt
home: t.CConst | str
pythonpath_env: t.CConst | str
site_import: int
bytes_warning: int
warn_default_encoding: int
inspect: int
interactive: int
optimization_level: int
parser_debug: int
verbose: int
quiet: int
home: const str
pythonpath_env: const str
module_search_paths: PyWideStringList
module_search_paths_set: t.CInt
executable: t.CConst | str
base_executable: t.CConst | str
prefix: t.CConst | str
base_prefix: t.CConst | str
exec_prefix: t.CConst | str
base_exec_prefix: t.CConst | str
platlibdir: t.CConst | str
stdio_filename: t.CConst | str
module_search_paths_set: int
executable: const str
base_executable: const str
prefix: const str
base_prefix: const str
exec_prefix: const str
base_exec_prefix: const str
platlibdir: const str
stdio_filename: const str
extern def PyConfig_InitPythonConfig(config: PyConfig | t.CPtr)
extern def PyConfig_InitIsolatedConfig(config: PyConfig | t.CPtr)
extern def PyConfig_Clear(config: PyConfig | t.CPtr)
extern def PyConfig_Read(config: PyConfig | t.CPtr) -> PySTATUS
extern def Py_InitializeFromConfig(config: PyConfig | t.CPtr) -> PySTATUS
extern def Py_DecodeLocale(s: t.CConst | str) -> str
extern def PyStatus_Exception(status: PySTATUS) -> t.CInt
extern def Py_DecodeLocale(s: const str) -> str
extern def PyStatus_Exception(status: PySTATUS) -> int
# ============================================================
# 整数操作 (PyLong)
# ============================================================
extern def PyLong_FromLong(v: t.CInt) -> PyObject | t.CPtr
extern def PyLong_FromLong(v: int) -> PyObject | t.CPtr
extern def PyLong_FromUnsignedLong(v: t.CUnsignedLong) -> PyObject | t.CPtr
extern def PyLong_FromLongLong(v: t.CLong) -> PyObject | t.CPtr
extern def PyLong_FromUnsignedLongLong(v: t.CUnsignedLong) -> PyObject | t.CPtr
extern def PyLong_FromSsize_t(v: t.CPtrDiffT) -> PyObject | t.CPtr
extern def PyLong_FromSize_t(v: t.CSizeT) -> PyObject | t.CPtr
extern def PyLong_FromDouble(v: t.CDouble) -> PyObject | t.CPtr
extern def PyLong_AsLong(obj: PyObject | t.CPtr) -> t.CInt
extern def PyLong_FromSize_t(v: sizet) -> PyObject | t.CPtr
extern def PyLong_FromDouble(v: double) -> PyObject | t.CPtr
extern def PyLong_AsLong(obj: PyObject | t.CPtr) -> int
extern def PyLong_AsUnsignedLong(obj: PyObject | t.CPtr) -> t.CUnsignedLong
extern def PyLong_AsLongLong(obj: PyObject | t.CPtr) -> t.CLong
extern def PyLong_AsUnsignedLongLong(obj: PyObject | t.CPtr) -> t.CUnsignedLong
extern def PyLong_AsDouble(obj: PyObject | t.CPtr) -> t.CDouble
extern def PyLong_AsDouble(obj: PyObject | t.CPtr) -> double
extern def PyLong_AsSsize_t(obj: PyObject | t.CPtr) -> t.CPtrDiffT
extern def PyLong_AsSize_t(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PyLong_AsSize_t(obj: PyObject | t.CPtr) -> sizet
# ============================================================
# 浮点数操作 (PyFloat)
# ============================================================
extern def PyFloat_FromDouble(v: t.CDouble) -> PyObject | t.CPtr
extern def PyFloat_AsDouble(obj: PyObject | t.CPtr) -> t.CDouble
extern def PyFloat_FromDouble(v: double) -> PyObject | t.CPtr
extern def PyFloat_AsDouble(obj: PyObject | t.CPtr) -> double
extern def PyFloat_FromString(s: PyObject | t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 字符串操作 (PyUnicode / PyBytes)
# ============================================================
extern def PyUnicode_FromString(u: t.CConst | str) -> PyObject | t.CPtr
extern def PyUnicode_FromStringAndSize(u: t.CConst | str, size: t.CSizeT) -> PyObject | t.CPtr
extern def PyUnicode_FromFormat(fmt: t.CConst | str) -> PyObject | t.CPtr
extern def PyUnicode_FromString(u: const str) -> PyObject | t.CPtr
extern def PyUnicode_FromStringAndSize(u: const str, size: sizet) -> PyObject | t.CPtr
extern def PyUnicode_FromFormat(fmt: const str) -> PyObject | t.CPtr
extern def PyUnicode_AsUTF8(obj: PyObject | t.CPtr) -> str
extern def PyUnicode_AsUTF8AndSize(obj: PyObject | t.CPtr, size: t.CPtrDiffT | t.CPtr) -> str
extern def PyUnicode_AsWideChar(obj: PyObject | t.CPtr, wbuf: t.CPtr, bufsize: t.CSizeT) -> t.CSizeT
extern def PyUnicode_AsWideChar(obj: PyObject | t.CPtr, wbuf: t.CPtr, bufsize: sizet) -> sizet
extern def PyUnicode_GetLength(obj: PyObject | t.CPtr) -> t.CPtrDiffT
extern def PyUnicode_ReadChar(obj: PyObject | t.CPtr, idx: t.CSizeT) -> t.CUInt32T
extern def PyUnicode_WriteChar(obj: PyObject | t.CPtr, idx: t.CSizeT, ch: t.CUInt32T) -> t.CInt
extern def PyUnicode_Compare(l: PyObject | t.CPtr, r: PyObject | t.CPtr) -> t.CInt
extern def PyUnicode_ReadChar(obj: PyObject | t.CPtr, idx: sizet) -> uint32
extern def PyUnicode_WriteChar(obj: PyObject | t.CPtr, idx: sizet, ch: uint32) -> int
extern def PyUnicode_Compare(l: PyObject | t.CPtr, r: PyObject | t.CPtr) -> int
extern def PyUnicode_Concat(l: PyObject | t.CPtr, r: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyUnicode_Contains(container: PyObject | t.CPtr, element: PyObject | t.CPtr) -> t.CInt
extern def PyUnicode_Contains(container: PyObject | t.CPtr, element: PyObject | t.CPtr) -> int
extern def PyUnicode_Format(fmt: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyUnicode_InternInPlace(s: PyObject | t.CPtr | t.CPtr): pass
extern def PyUnicode_InternFromString(u: t.CConst | str) -> PyObject | t.CPtr
extern def PyUnicode_InternFromString(u: const str) -> PyObject | t.CPtr
extern def PyBytes_FromString(v: t.CConst | str) -> PyObject | t.CPtr
extern def PyBytes_FromStringAndSize(v: t.CConst | str, size: t.CSizeT) -> PyObject | t.CPtr
extern def PyBytes_FromString(v: const str) -> PyObject | t.CPtr
extern def PyBytes_FromStringAndSize(v: const str, size: sizet) -> PyObject | t.CPtr
extern def PyBytes_AsString(obj: PyObject | t.CPtr) -> str
extern def PyBytes_Size(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PyBytes_Size(obj: PyObject | t.CPtr) -> sizet
extern def PyBytes_FromObject(o: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyBytes_FromFormat(fmt: t.CConst | str) -> PyObject | t.CPtr
extern def PyBytes_FromFormat(fmt: const str) -> PyObject | t.CPtr
# ============================================================
@@ -174,28 +174,28 @@ Py_None: PyObject | t.CPtr | t.State
# ============================================================
# 列表操作 (PyList)
# ============================================================
extern def PyList_New(len: t.CSizeT) -> PyObject | t.CPtr
extern def PyList_Size(lst: PyObject | t.CPtr) -> t.CSizeT
extern def PyList_GetItem(lst: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr
extern def PyList_SetItem(lst: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt
extern def PyList_Insert(lst: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt
extern def PyList_Append(lst: PyObject | t.CPtr, item: PyObject | t.CPtr) -> t.CInt
extern def PyList_GetSlice(lst: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT) -> PyObject | t.CPtr
extern def PyList_SetSlice(lst: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT, items: PyObject | t.CPtr) -> t.CInt
extern def PyList_Sort(lst: PyObject | t.CPtr) -> t.CInt
extern def PyList_Reverse(lst: PyObject | t.CPtr) -> t.CInt
extern def PyList_New(len: sizet) -> PyObject | t.CPtr
extern def PyList_Size(lst: PyObject | t.CPtr) -> sizet
extern def PyList_GetItem(lst: PyObject | t.CPtr, idx: sizet) -> PyObject | t.CPtr
extern def PyList_SetItem(lst: PyObject | t.CPtr, idx: sizet, item: PyObject | t.CPtr) -> int
extern def PyList_Insert(lst: PyObject | t.CPtr, idx: sizet, item: PyObject | t.CPtr) -> int
extern def PyList_Append(lst: PyObject | t.CPtr, item: PyObject | t.CPtr) -> int
extern def PyList_GetSlice(lst: PyObject | t.CPtr, lo: sizet, hi: sizet) -> PyObject | t.CPtr
extern def PyList_SetSlice(lst: PyObject | t.CPtr, lo: sizet, hi: sizet, items: PyObject | t.CPtr) -> int
extern def PyList_Sort(lst: PyObject | t.CPtr) -> int
extern def PyList_Reverse(lst: PyObject | t.CPtr) -> int
extern def PyList_AsTuple(lst: PyObject | t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 元组操作 (PyTuple)
# ============================================================
extern def PyTuple_New(len: t.CSizeT) -> PyObject | t.CPtr
extern def PyTuple_Size(tup: PyObject | t.CPtr) -> t.CSizeT
extern def PyTuple_GetItem(tup: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr
extern def PyTuple_SetItem(tup: PyObject | t.CPtr, idx: t.CSizeT, item: PyObject | t.CPtr) -> t.CInt
extern def PyTuple_GetSlice(tup: PyObject | t.CPtr, lo: t.CSizeT, hi: t.CSizeT) -> PyObject | t.CPtr
extern def PyTuple_Pack(n: t.CSizeT) -> PyObject | t.CPtr
extern def PyTuple_New(len: sizet) -> PyObject | t.CPtr
extern def PyTuple_Size(tup: PyObject | t.CPtr) -> sizet
extern def PyTuple_GetItem(tup: PyObject | t.CPtr, idx: sizet) -> PyObject | t.CPtr
extern def PyTuple_SetItem(tup: PyObject | t.CPtr, idx: sizet, item: PyObject | t.CPtr) -> int
extern def PyTuple_GetSlice(tup: PyObject | t.CPtr, lo: sizet, hi: sizet) -> PyObject | t.CPtr
extern def PyTuple_Pack(n: sizet) -> PyObject | t.CPtr
# ============================================================
@@ -203,21 +203,21 @@ extern def PyTuple_Pack(n: t.CSizeT) -> PyObject | t.CPtr
# ============================================================
extern def PyDict_New() -> PyObject | t.CPtr
extern def PyDict_GetItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyDict_GetItemString(d: PyObject | t.CPtr, key: t.CConst | str) -> PyObject | t.CPtr
extern def PyDict_SetItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt
extern def PyDict_SetItemString(d: PyObject | t.CPtr, key: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PyDict_DelItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PyDict_DelItemString(d: PyObject | t.CPtr, key: t.CConst | str) -> t.CInt
extern def PyDict_Size(d: PyObject | t.CPtr) -> t.CSizeT
extern def PyDict_GetItemString(d: PyObject | t.CPtr, key: const str) -> PyObject | t.CPtr
extern def PyDict_SetItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> int
extern def PyDict_SetItemString(d: PyObject | t.CPtr, key: const str, val: PyObject | t.CPtr) -> int
extern def PyDict_DelItem(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PyDict_DelItemString(d: PyObject | t.CPtr, key: const str) -> int
extern def PyDict_Size(d: PyObject | t.CPtr) -> sizet
extern def PyDict_Keys(d: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyDict_Values(d: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyDict_Items(d: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyDict_Copy(d: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyDict_Clear(d: PyObject | t.CPtr): pass
extern def PyDict_Contains(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PyDict_Next(d: PyObject | t.CPtr, pos: t.CPtrDiffT | t.CPtr, key: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr) -> t.CInt
extern def PyDict_Merge(d: PyObject | t.CPtr, other: PyObject | t.CPtr, override: t.CInt) -> t.CInt
extern def PyDict_Update(d: PyObject | t.CPtr, other: PyObject | t.CPtr) -> t.CInt
extern def PyDict_Contains(d: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PyDict_Next(d: PyObject | t.CPtr, pos: t.CPtrDiffT | t.CPtr, key: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr) -> int
extern def PyDict_Merge(d: PyObject | t.CPtr, other: PyObject | t.CPtr, override: int) -> int
extern def PyDict_Update(d: PyObject | t.CPtr, other: PyObject | t.CPtr) -> int
# ============================================================
@@ -226,29 +226,29 @@ extern def PyDict_Update(d: PyObject | t.CPtr, other: PyObject | t.CPtr) -> t.CI
extern def PyObject_Str(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_Repr(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_Type(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_IsInstance(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> t.CInt
extern def PyObject_IsSubclass(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> t.CInt
extern def PyObject_HasAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> t.CInt
extern def PyObject_HasAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt
extern def PyObject_IsInstance(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> int
extern def PyObject_IsSubclass(obj: PyObject | t.CPtr, cls: PyObject | t.CPtr) -> int
extern def PyObject_HasAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> int
extern def PyObject_HasAttrString(obj: PyObject | t.CPtr, name: const str) -> int
extern def PyObject_GetAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_GetAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> PyObject | t.CPtr
extern def PyObject_SetAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt
extern def PyObject_SetAttrString(obj: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PyObject_DelAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> t.CInt
extern def PyObject_DelAttrString(obj: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt
extern def PyObject_GetAttrString(obj: PyObject | t.CPtr, name: const str) -> PyObject | t.CPtr
extern def PyObject_SetAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr, val: PyObject | t.CPtr) -> int
extern def PyObject_SetAttrString(obj: PyObject | t.CPtr, name: const str, val: PyObject | t.CPtr) -> int
extern def PyObject_DelAttr(obj: PyObject | t.CPtr, name: PyObject | t.CPtr) -> int
extern def PyObject_DelAttrString(obj: PyObject | t.CPtr, name: const str) -> int
extern def PyObject_Call(callable: PyObject | t.CPtr, args: PyObject | t.CPtr, kwargs: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_CallObject(callable: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_CallNoArgs(callable: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_CallOneArg(callable: PyObject | t.CPtr, arg: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_IsTrue(obj: PyObject | t.CPtr) -> t.CInt
extern def PyObject_Not(obj: PyObject | t.CPtr) -> t.CInt
extern def PyObject_RichCompare(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: t.CInt) -> PyObject | t.CPtr
extern def PyObject_RichCompareBool(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: t.CInt) -> t.CInt
extern def PyObject_IsTrue(obj: PyObject | t.CPtr) -> int
extern def PyObject_Not(obj: PyObject | t.CPtr) -> int
extern def PyObject_RichCompare(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: int) -> PyObject | t.CPtr
extern def PyObject_RichCompareBool(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr, opid: int) -> int
extern def PyObject_Hash(obj: PyObject | t.CPtr) -> t.CLong
extern def PyObject_Length(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PyObject_Length(obj: PyObject | t.CPtr) -> sizet
extern def PyObject_GetItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_SetItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt
extern def PyObject_DelItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PyObject_SetItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr, val: PyObject | t.CPtr) -> int
extern def PyObject_DelItem(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PyObject_Dir(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyObject_GetIter(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyIter_Next(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
@@ -257,45 +257,45 @@ extern def PyIter_Next(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 比较常量
# ============================================================
Py_LT: t.CInt | t.State
Py_LE: t.CInt | t.State
Py_EQ: t.CInt | t.State
Py_NE: t.CInt | t.State
Py_GT: t.CInt | t.State
Py_GE: t.CInt | t.State
Py_LT: int | t.State
Py_LE: int | t.State
Py_EQ: int | t.State
Py_NE: int | t.State
Py_GT: int | t.State
Py_GE: int | t.State
# ============================================================
# 模块操作
# ============================================================
extern def PyImport_ImportModule(name: t.CConst | str) -> PyObject | t.CPtr
extern def PyImport_ImportModule(name: const str) -> PyObject | t.CPtr
extern def PyImport_Import(name: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyImport_ImportModuleLevelObject(name: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr, level: t.CInt) -> PyObject | t.CPtr
extern def PyImport_ImportModuleLevelObject(name: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr, level: int) -> PyObject | t.CPtr
extern def PyImport_ReloadModule(mod: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyImport_AddModule(name: t.CConst | str) -> PyObject | t.CPtr
extern def PyImport_AddModule(name: const str) -> PyObject | t.CPtr
extern def PyImport_GetModuleDict() -> PyObject | t.CPtr
extern def PyImport_ImportModuleEx(name: t.CConst | str, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyImport_ImportModuleEx(name: const str, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, fromlist: PyObject | t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 模块创建
# ============================================================
class PyMethodDef:
ml_name: t.CConst | str
ml_name: const str
ml_meth: t.CPtr
ml_flags: t.CInt
ml_doc: t.CConst | str
ml_flags: int
ml_doc: const str
class PyModuleDef_Base:
ob_base: PyObject
m_init: t.CPtr
m_index: t.CSizeT
m_index: sizet
m_copy: PyObject | t.CPtr
class PyModuleDef:
m_base: PyModuleDef_Base
m_name: t.CConst | str
m_doc: t.CConst | str
m_name: const str
m_doc: const str
m_size: t.CPtrDiffT
m_methods: PyMethodDef | t.CPtr
m_slots: t.CPtr
@@ -304,28 +304,28 @@ class PyModuleDef:
m_free: t.CPtr
extern def PyModule_Create(mod: PyModuleDef | t.CPtr) -> PyObject | t.CPtr
extern def PyModule_Create2(mod: PyModuleDef | t.CPtr, ver: t.CInt) -> PyObject | t.CPtr
extern def PyModule_Create2(mod: PyModuleDef | t.CPtr, ver: int) -> PyObject | t.CPtr
extern def PyModule_GetName(mod: PyObject | t.CPtr) -> str
extern def PyModule_GetDict(mod: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyModule_GetFilenameObject(mod: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyModule_AddObject(mod: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PyModule_AddObjectRef(mod: PyObject | t.CPtr, name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PyModule_AddIntConstant(mod: PyObject | t.CPtr, name: t.CConst | str, val: t.CLong) -> t.CInt
extern def PyModule_AddStringConstant(mod: PyObject | t.CPtr, name: t.CConst | str, val: t.CConst | str) -> t.CInt
extern def PyModule_AddObject(mod: PyObject | t.CPtr, name: const str, val: PyObject | t.CPtr) -> int
extern def PyModule_AddObjectRef(mod: PyObject | t.CPtr, name: const str, val: PyObject | t.CPtr) -> int
extern def PyModule_AddIntConstant(mod: PyObject | t.CPtr, name: const str, val: t.CLong) -> int
extern def PyModule_AddStringConstant(mod: PyObject | t.CPtr, name: const str, val: const str) -> int
# ============================================================
# GIL 管理
# ============================================================
extern def PyGILState_Ensure() -> t.CInt
extern def PyGILState_Release(state: t.CInt): pass
extern def PyGILState_Ensure() -> int
extern def PyGILState_Release(state: int): pass
extern def PyEval_SaveThread() -> t.CPtr
extern def PyEval_RestoreThread(tstate: t.CPtr): pass
extern def PyEval_AcquireThread(tstate: t.CPtr): pass
extern def PyEval_ReleaseThread(tstate: t.CPtr): pass
extern def PyEval_AcquireLock(): pass
extern def PyEval_ReleaseLock(): pass
extern def PyEval_ThreadsInitialized() -> t.CInt
extern def PyEval_ThreadsInitialized() -> int
extern def PyEval_InitThreads(): pass
@@ -337,13 +337,13 @@ extern def PyErr_Clear(): pass
extern def PyErr_Fetch(tp: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr, tb: PyObject | t.CPtr | t.CPtr): pass
extern def PyErr_Restore(tp: PyObject | t.CPtr, val: PyObject | t.CPtr, tb: PyObject | t.CPtr): pass
extern def PyErr_NormalizeException(tp: PyObject | t.CPtr | t.CPtr, val: PyObject | t.CPtr | t.CPtr, tb: PyObject | t.CPtr | t.CPtr): pass
extern def PyErr_SetString(tp: PyObject | t.CPtr, msg: t.CConst | str): pass
extern def PyErr_SetString(tp: PyObject | t.CPtr, msg: const str): pass
extern def PyErr_SetObject(tp: PyObject | t.CPtr, val: PyObject | t.CPtr): pass
extern def PyErr_BadArgument() -> t.CPtr | t.State: pass
extern def PyErr_NoMemory() -> t.CPtr | t.State: pass
extern def PyErr_Print(): pass
extern def PyErr_ExceptionMatches(exc: PyObject | t.CPtr) -> t.CInt | t.State: pass
extern def PyErr_GivenExceptionMatches(given: PyObject | t.CPtr, exc: PyObject | t.CPtr) -> t.CInt | t.State: pass
extern def PyErr_ExceptionMatches(exc: PyObject | t.CPtr) -> int | t.State: pass
extern def PyErr_GivenExceptionMatches(given: PyObject | t.CPtr, exc: PyObject | t.CPtr) -> int | t.State: pass
# ============================================================
@@ -376,103 +376,103 @@ PyExc_NotADirectoryError: PyObject | t.CPtr | t.State
# ============================================================
# 内置函数
# ============================================================
extern def Py_BuildValue(fmt: t.CConst | str) -> PyObject | t.CPtr
extern def Py_VaBuildValue(fmt: t.CConst | str, va: t.CPtr) -> PyObject | t.CPtr
extern def Py_BuildValue(fmt: const str) -> PyObject | t.CPtr
extern def Py_VaBuildValue(fmt: const str, va: t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 类型检查
# ============================================================
extern def PyLong_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyFloat_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyUnicode_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyBytes_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyList_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyTuple_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyDict_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyBool_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyNone_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyLong_Check(obj: PyObject | t.CPtr) -> int
extern def PyFloat_Check(obj: PyObject | t.CPtr) -> int
extern def PyUnicode_Check(obj: PyObject | t.CPtr) -> int
extern def PyBytes_Check(obj: PyObject | t.CPtr) -> int
extern def PyList_Check(obj: PyObject | t.CPtr) -> int
extern def PyTuple_Check(obj: PyObject | t.CPtr) -> int
extern def PyDict_Check(obj: PyObject | t.CPtr) -> int
extern def PyBool_Check(obj: PyObject | t.CPtr) -> int
extern def PyNone_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
# 内存管理
# ============================================================
extern def PyMem_Malloc(size: t.CSizeT) -> t.CPtr
extern def PyMem_Realloc(ptr: t.CPtr, size: t.CSizeT) -> t.CPtr
extern def PyMem_Malloc(size: sizet) -> t.CPtr
extern def PyMem_Realloc(ptr: t.CPtr, size: sizet) -> t.CPtr
extern def PyMem_Free(ptr: t.CPtr)
extern def PyMem_Calloc(nelem: t.CSizeT, elsize: t.CSizeT) -> t.CPtr
extern def PyObject_Malloc(size: t.CSizeT) -> t.CPtr
extern def PyObject_Realloc(ptr: t.CPtr, size: t.CSizeT) -> t.CPtr
extern def PyMem_Calloc(nelem: sizet, elsize: sizet) -> t.CPtr
extern def PyObject_Malloc(size: sizet) -> t.CPtr
extern def PyObject_Realloc(ptr: t.CPtr, size: sizet) -> t.CPtr
extern def PyObject_Free(ptr: t.CPtr)
extern def PyObject_Calloc(nelem: t.CSizeT, elsize: t.CSizeT) -> t.CPtr
extern def PyObject_Calloc(nelem: sizet, elsize: sizet) -> t.CPtr
extern def PyObject_Init(obj: PyObject | t.CPtr, tp: t.CPtr) -> PyObject | t.CPtr
extern def PyObject_InitVar(obj: PyObject | t.CPtr, tp: t.CPtr, size: t.CSizeT) -> PyObject | t.CPtr
extern def PyObject_InitVar(obj: PyObject | t.CPtr, tp: t.CPtr, size: sizet) -> PyObject | t.CPtr
# ============================================================
# 文件操作
# ============================================================
extern def PyFile_FromString(filename: t.CConst | str, mode: t.CConst | str) -> PyObject | t.CPtr
extern def PyFile_FromString(filename: const str, mode: const str) -> PyObject | t.CPtr
extern def PyFile_AsFile(file: PyObject | t.CPtr) -> t.CPtr
extern def PyFile_WriteObject(obj: PyObject | t.CPtr, file: PyObject | t.CPtr, flags: t.CInt) -> t.CInt
extern def PyFile_WriteString(s: t.CConst | str, file: PyObject | t.CPtr) -> t.CInt
extern def PyFile_WriteObject(obj: PyObject | t.CPtr, file: PyObject | t.CPtr, flags: int) -> int
extern def PyFile_WriteString(s: const str, file: PyObject | t.CPtr) -> int
# ============================================================
# 编译/执行
# ============================================================
extern def Py_CompileString(s: t.CConst | str, filename: t.CConst | str, start: t.CInt) -> PyObject | t.CPtr
extern def Py_CompileString(s: const str, filename: const str, start: int) -> PyObject | t.CPtr
extern def PyEval_EvalCode(code: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyEval_EvalCodeEx(code: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, args: PyObject | t.CPtr | t.CPtr, argc: t.CInt, kws: PyObject | t.CPtr | t.CPtr, kwc: t.CInt, defs: PyObject | t.CPtr | t.CPtr, defc: t.CInt, kwdefs: PyObject | t.CPtr, closure: PyObject | t.CPtr) -> PyObject | t.CPtr: pass
extern def PyEval_EvalCodeEx(code: PyObject | t.CPtr, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr, args: PyObject | t.CPtr | t.CPtr, argc: int, kws: PyObject | t.CPtr | t.CPtr, kwc: int, defs: PyObject | t.CPtr | t.CPtr, defc: int, kwdefs: PyObject | t.CPtr, closure: PyObject | t.CPtr) -> PyObject | t.CPtr: pass
extern def PyEval_EvalFrame(frame: t.CPtr) -> PyObject | t.CPtr: pass
extern def PyEval_CallObject(callable: PyObject | t.CPtr, args: PyObject | t.CPtr) -> PyObject | t.CPtr: pass
extern def PyEval_CallFunction(callable: PyObject | t.CPtr, fmt: t.CConst | str) -> PyObject | t.CPtr: pass
extern def PyEval_CallMethod(obj: PyObject | t.CPtr, method: t.CConst | str, fmt: t.CConst | str) -> PyObject | t.CPtr: pass
extern def PyEval_CallFunction(callable: PyObject | t.CPtr, fmt: const str) -> PyObject | t.CPtr: pass
extern def PyEval_CallMethod(obj: PyObject | t.CPtr, method: const str, fmt: const str) -> PyObject | t.CPtr: pass
# ============================================================
# PyRun
# ============================================================
extern def PyRun_SimpleString(cmd: t.CConst | str) -> t.CInt
extern def PyRun_SimpleFile(fp: t.CPtr, filename: t.CConst | str) -> t.CInt
extern def PyRun_AnyFile(fp: t.CPtr, filename: t.CConst | str) -> t.CInt
extern def PyRun_String(s: t.CConst | str, start: t.CInt, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyRun_File(fp: t.CPtr, filename: t.CConst | str, start: t.CInt, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyRun_SimpleString(cmd: const str) -> int
extern def PyRun_SimpleFile(fp: t.CPtr, filename: const str) -> int
extern def PyRun_AnyFile(fp: t.CPtr, filename: const str) -> int
extern def PyRun_String(s: const str, start: int, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyRun_File(fp: t.CPtr, filename: const str, start: int, globs: PyObject | t.CPtr, locs: PyObject | t.CPtr) -> PyObject | t.CPtr
Py_single_input: t.CInt | t.State
Py_file_input: t.CInt | t.State
Py_eval_input: t.CInt | t.State
Py_single_input: int | t.State
Py_file_input: int | t.State
Py_eval_input: int | t.State
# ============================================================
# Capsule
# ============================================================
extern def PyCapsule_New(ptr: t.CPtr, name: t.CConst | str, dtor: t.CPtr) -> PyObject | t.CPtr
extern def PyCapsule_GetPointer(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CPtr
extern def PyCapsule_New(ptr: t.CPtr, name: const str, dtor: t.CPtr) -> PyObject | t.CPtr
extern def PyCapsule_GetPointer(cap: PyObject | t.CPtr, name: const str) -> t.CPtr
extern def PyCapsule_GetName(cap: PyObject | t.CPtr) -> str
extern def PyCapsule_IsValid(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt
extern def PyCapsule_SetPointer(cap: PyObject | t.CPtr, ptr: t.CPtr) -> t.CInt
extern def PyCapsule_SetName(cap: PyObject | t.CPtr, name: t.CConst | str) -> t.CInt
extern def PyCapsule_SetDestructor(cap: PyObject | t.CPtr, dtor: t.CPtr) -> t.CInt
extern def PyCapsule_IsValid(cap: PyObject | t.CPtr, name: const str) -> int
extern def PyCapsule_SetPointer(cap: PyObject | t.CPtr, ptr: t.CPtr) -> int
extern def PyCapsule_SetName(cap: PyObject | t.CPtr, name: const str) -> int
extern def PyCapsule_SetDestructor(cap: PyObject | t.CPtr, dtor: t.CPtr) -> int
# ============================================================
# 序列操作
# ============================================================
extern def PySequence_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PySequence_Size(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PySequence_Length(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PySequence_Check(obj: PyObject | t.CPtr) -> int
extern def PySequence_Size(obj: PyObject | t.CPtr) -> sizet
extern def PySequence_Length(obj: PyObject | t.CPtr) -> sizet
extern def PySequence_Concat(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PySequence_Repeat(obj: PyObject | t.CPtr, count: t.CSizeT) -> PyObject | t.CPtr
extern def PySequence_GetItem(obj: PyObject | t.CPtr, idx: t.CSizeT) -> PyObject | t.CPtr
extern def PySequence_SetItem(obj: PyObject | t.CPtr, idx: t.CSizeT, val: PyObject | t.CPtr) -> t.CInt
extern def PySequence_DelItem(obj: PyObject | t.CPtr, idx: t.CSizeT) -> t.CInt
extern def PySequence_GetSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT) -> PyObject | t.CPtr
extern def PySequence_SetSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT, val: PyObject | t.CPtr) -> t.CInt
extern def PySequence_DelSlice(obj: PyObject | t.CPtr, start: t.CSizeT, end: t.CSizeT) -> t.CInt
extern def PySequence_Contains(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CInt
extern def PySequence_Index(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CSizeT
extern def PySequence_Count(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> t.CSizeT
extern def PySequence_Repeat(obj: PyObject | t.CPtr, count: sizet) -> PyObject | t.CPtr
extern def PySequence_GetItem(obj: PyObject | t.CPtr, idx: sizet) -> PyObject | t.CPtr
extern def PySequence_SetItem(obj: PyObject | t.CPtr, idx: sizet, val: PyObject | t.CPtr) -> int
extern def PySequence_DelItem(obj: PyObject | t.CPtr, idx: sizet) -> int
extern def PySequence_GetSlice(obj: PyObject | t.CPtr, start: sizet, end: sizet) -> PyObject | t.CPtr
extern def PySequence_SetSlice(obj: PyObject | t.CPtr, start: sizet, end: sizet, val: PyObject | t.CPtr) -> int
extern def PySequence_DelSlice(obj: PyObject | t.CPtr, start: sizet, end: sizet) -> int
extern def PySequence_Contains(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> int
extern def PySequence_Index(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> sizet
extern def PySequence_Count(obj: PyObject | t.CPtr, val: PyObject | t.CPtr) -> sizet
extern def PySequence_List(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PySequence_Tuple(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
@@ -480,13 +480,13 @@ extern def PySequence_Tuple(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
# ============================================================
# 映射操作
# ============================================================
extern def PyMapping_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyMapping_Size(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PyMapping_Length(obj: PyObject | t.CPtr) -> t.CSizeT
extern def PyMapping_HasKey(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PyMapping_HasKeyString(obj: PyObject | t.CPtr, key: t.CConst | str) -> t.CInt
extern def PyMapping_GetItemString(obj: PyObject | t.CPtr, key: t.CConst | str) -> PyObject | t.CPtr
extern def PyMapping_SetItemString(obj: PyObject | t.CPtr, key: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PyMapping_Check(obj: PyObject | t.CPtr) -> int
extern def PyMapping_Size(obj: PyObject | t.CPtr) -> sizet
extern def PyMapping_Length(obj: PyObject | t.CPtr) -> sizet
extern def PyMapping_HasKey(obj: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PyMapping_HasKeyString(obj: PyObject | t.CPtr, key: const str) -> int
extern def PyMapping_GetItemString(obj: PyObject | t.CPtr, key: const str) -> PyObject | t.CPtr
extern def PyMapping_SetItemString(obj: PyObject | t.CPtr, key: const str, val: PyObject | t.CPtr) -> int
extern def PyMapping_Keys(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyMapping_Values(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyMapping_Items(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
@@ -515,7 +515,7 @@ extern def PyNumber_Or(o1: PyObject | t.CPtr, o2: PyObject | t.CPtr) -> PyObject
extern def PyNumber_Index(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyNumber_Long(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyNumber_Float(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyNumber_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyNumber_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
@@ -523,71 +523,71 @@ extern def PyNumber_Check(obj: PyObject | t.CPtr) -> t.CInt
# ============================================================
extern def PyWeakref_NewRef(obj: PyObject | t.CPtr, cb: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyWeakref_GetObject(ref: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyWeakref_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyWeakref_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
# 属性描述符
# ============================================================
class PyGetSetDef:
name: t.CConst | str
name: const str
get: t.CPtr
set: t.CPtr
doc: t.CConst | str
doc: const str
closure: t.CPtr
class PyMemberDef:
name: t.CConst | str
type: t.CInt
name: const str
type: int
offset: t.CPtrDiffT
flags: t.CInt
doc: t.CConst | str
flags: int
doc: const str
# ============================================================
# sys 模块
# ============================================================
extern def PySys_GetObject(name: t.CConst | str) -> PyObject | t.CPtr
extern def PySys_SetObject(name: t.CConst | str, val: PyObject | t.CPtr) -> t.CInt
extern def PySys_GetObject(name: const str) -> PyObject | t.CPtr
extern def PySys_SetObject(name: const str, val: PyObject | t.CPtr) -> int
extern def PySys_ResetWarnOptions(): pass
extern def PySys_AddWarnOption(s: PyObject | t.CPtr): pass
extern def PySYS_AddXOption(s: PyObject | t.CPtr): pass
extern def PySys_WriteStdout(fmt: t.CConst | str): pass
extern def PySys_WriteStderr(fmt: t.CConst | str): pass
extern def PySys_FormatStdout(fmt: t.CConst | str): pass
extern def PySys_FormatStderr(fmt: t.CConst | str): pass
extern def PySys_WriteStdout(fmt: const str): pass
extern def PySys_WriteStderr(fmt: const str): pass
extern def PySys_FormatStdout(fmt: const str): pass
extern def PySys_FormatStderr(fmt: const str): pass
# ============================================================
# 内存视图
# ============================================================
extern def PyMemoryView_FromObject(obj: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyMemoryView_GetContiguous(obj: PyObject | t.CPtr, btype: t.CInt, order: t.CChar) -> PyObject | t.CPtr
extern def PyMemoryView_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyMemoryView_GetContiguous(obj: PyObject | t.CPtr, btype: int, order: char) -> PyObject | t.CPtr
extern def PyMemoryView_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
# set / frozenset
# ============================================================
extern def PySet_New(iterable: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PySet_Add(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PySet_Discard(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PySet_Contains(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> t.CInt
extern def PySet_Size(s: PyObject | t.CPtr) -> t.CSizeT
extern def PySet_Add(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PySet_Discard(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PySet_Contains(s: PyObject | t.CPtr, key: PyObject | t.CPtr) -> int
extern def PySet_Size(s: PyObject | t.CPtr) -> sizet
extern def PySet_Clear(s: PyObject | t.CPtr): pass
extern def PySet_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PySet_Check(obj: PyObject | t.CPtr) -> int
extern def PyFrozenSet_New(iterable: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PyFrozenSet_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PyFrozenSet_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
# slice
# ============================================================
extern def PySlice_New(start: PyObject | t.CPtr, stop: PyObject | t.CPtr, step: PyObject | t.CPtr) -> PyObject | t.CPtr
extern def PySlice_GetIndicesEx(sl: PyObject | t.CPtr, length: t.CSizeT, start: t.CSizeT | t.CPtr, stop: t.CSizeT | t.CPtr, step: t.CSizeT | t.CPtr, slicelen: t.CSizeT | t.CPtr) -> t.CInt
extern def PySlice_GetIndicesEx(sl: PyObject | t.CPtr, length: sizet, start: sizet | t.CPtr, stop: sizet | t.CPtr, step: sizet | t.CPtr, slicelen: sizet | t.CPtr) -> int
extern def PySlice_Unpack(sl: PyObject | t.CPtr, start: t.CPtrDiffT | t.CPtr, stop: t.CPtrDiffT | t.CPtr, step: t.CPtrDiffT | t.CPtr): pass
extern def PySlice_AdjustIndices(length: t.CSizeT, start: t.CPtrDiffT | t.CPtr, stop: t.CPtrDiffT | t.CPtr, step: t.CPtrDiffT) -> t.CSizeT
extern def PySlice_Check(obj: PyObject | t.CPtr) -> t.CInt
extern def PySlice_AdjustIndices(length: sizet, start: t.CPtrDiffT | t.CPtr, stop: t.CPtrDiffT | t.CPtr, step: t.CPtrDiffT) -> sizet
extern def PySlice_Check(obj: PyObject | t.CPtr) -> int
# ============================================================
@@ -645,7 +645,7 @@ class PyFloatObj:
return t.CPtr(malloc(PyFloatObj.__sizeof__()))
@staticmethod
def from_double(val: t.CDouble) -> 'PyFloatObj' | t.CPtr:
def from_double(val: double) -> 'PyFloatObj' | t.CPtr:
obj: PyFloatObj | t.CPtr = PyFloatObj()
obj.ptr = PyFloat_FromDouble(val)
return obj
@@ -675,7 +675,7 @@ class PyFloatObj:
res.ptr = PyNumber_Negative(self.ptr)
return res
def to_double(self) -> t.CDouble:
def to_double(self) -> double:
return PyFloat_AsDouble(self.ptr)
def __str__(self) -> PyObject | t.CPtr:
@@ -693,7 +693,7 @@ class PyUnicodeObj:
return t.CPtr(malloc(PyUnicodeObj.__sizeof__()))
@staticmethod
def from_string(s: t.CChar | t.CPtr) -> 'PyUnicodeObj' | t.CPtr:
def from_string(s: char | t.CPtr) -> 'PyUnicodeObj' | t.CPtr:
obj: PyUnicodeObj | t.CPtr = PyUnicodeObj()
obj.ptr = PyUnicode_FromString(s)
return obj
@@ -706,7 +706,7 @@ class PyUnicodeObj:
def __len__(self) -> t.CPtrDiffT:
return PyUnicode_GetLength(self.ptr)
def as_utf8(self) -> t.CChar | t.CPtr:
def as_utf8(self) -> char | t.CPtr:
return PyUnicode_AsUTF8(self.ptr)
def __str__(self) -> PyObject | t.CPtr:
@@ -729,16 +729,16 @@ class PyListObj:
obj.ptr = PyList_New(0)
return obj
def __getitem__(self, idx: t.CSizeT) -> PyObject | t.CPtr:
def __getitem__(self, idx: sizet) -> PyObject | t.CPtr:
return PyList_GetItem(self.ptr, idx)
def __setitem__(self, idx: t.CSizeT, val: PyObject | t.CPtr):
def __setitem__(self, idx: sizet, val: PyObject | t.CPtr):
PyList_SetItem(self.ptr, idx, val)
def __len__(self) -> t.CSizeT:
def __len__(self) -> sizet:
return PyList_Size(self.ptr)
def append(self, item: PyObject | t.CPtr) -> t.CInt:
def append(self, item: PyObject | t.CPtr) -> int:
return PyList_Append(self.ptr, item)
def dec_ref(self):
@@ -764,13 +764,13 @@ class PyDictObj:
def __setitem__(self, key: PyObject | t.CPtr, val: PyObject | t.CPtr):
PyDict_SetItem(self.ptr, key, val)
def __len__(self) -> t.CSizeT:
def __len__(self) -> sizet:
return PyDict_Size(self.ptr)
def get_string(self, key: t.CChar | t.CPtr) -> PyObject | t.CPtr:
def get_string(self, key: char | t.CPtr) -> PyObject | t.CPtr:
return PyDict_GetItemString(self.ptr, key)
def set_string(self, key: t.CChar | t.CPtr, val: PyObject | t.CPtr):
def set_string(self, key: char | t.CPtr, val: PyObject | t.CPtr):
PyDict_SetItemString(self.ptr, key, val)
def dec_ref(self):
+9 -9
View File
@@ -26,7 +26,7 @@ def test_long_operations():
testcheck.check(py_str != 0, "PyObject_Str != NULL", "PyObject_Str != NULL")
# 获取 C 字符串
c_str: t.CChar | CPtr = cpython.PyUnicode_AsUTF8(py_str)
c_str: char | CPtr = cpython.PyUnicode_AsUTF8(py_str)
testcheck.check(c_str != 0, "PyUnicode_AsUTF8 != NULL", "PyUnicode_AsUTF8 != NULL")
printf(" PyLong_FromLong(12345) -> str = %s\n", c_str)
@@ -63,7 +63,7 @@ def test_string_operations():
testcheck.check(py_s1 != 0, "PyUnicode_FromString != NULL", "PyUnicode_FromString != NULL")
# 获取 UTF8
utf8: t.CChar | CPtr = cpython.PyUnicode_AsUTF8(py_s1)
utf8: char | CPtr = cpython.PyUnicode_AsUTF8(py_s1)
testcheck.check(utf8 != 0, "AsUTF8 != NULL", "AsUTF8 != NULL")
printf(" PyUnicode_FromString -> %s\n", utf8)
@@ -74,7 +74,7 @@ def test_string_operations():
# 字符串拼接
py_s2: cpython.PyObject | CPtr = cpython.PyUnicode_FromString(" World")
py_concat: cpython.PyObject | CPtr = cpython.PyUnicode_Concat(py_s1, py_s2)
concat_utf8: t.CChar | CPtr = cpython.PyUnicode_AsUTF8(py_concat)
concat_utf8: char | CPtr = cpython.PyUnicode_AsUTF8(py_concat)
testcheck.check(py_concat != 0, "Concat != NULL", "Concat != NULL")
printf(" Concat -> %s\n", concat_utf8)
@@ -148,7 +148,7 @@ def test_dict_operations():
# 获取值
got_val: cpython.PyObject | CPtr = cpython.PyDict_GetItem(py_dict, py_key1)
testcheck.check(got_val != 0, "GetItem(name) != NULL", "GetItem(name) != NULL")
got_str: t.CChar | CPtr = cpython.PyUnicode_AsUTF8(got_val)
got_str: char | CPtr = cpython.PyUnicode_AsUTF8(got_val)
testcheck.check(got_str != 0, "name == Viper", "name == Viper")
printf(" dict['name'] = %s\n", got_str)
@@ -278,7 +278,7 @@ def test_operator_overload():
testcheck.check(sa != 0 and sb != 0, "PyUnicodeObj.from_string != NULL", "PyUnicodeObj.from_string != NULL")
sc: cpython.PyUnicodeObj | CPtr = sa + sb
sc_utf8: t.CChar | CPtr = sc.as_utf8()
sc_utf8: char | CPtr = sc.as_utf8()
testcheck.check(sc_utf8 != 0, "PyUnicodeObj concat != NULL", "PyUnicodeObj concat != NULL")
if sc_utf8 != 0:
printf(" PyUnicodeObj 'Hello' + ' World' = %s\n", sc_utf8)
@@ -302,13 +302,13 @@ def test_operator_overload():
lst.append(e3)
testcheck.check(len(lst) == 3, "PyListObj len == 3", "PyListObj len == 3")
item0: cpython.PyObject | CPtr = lst[t.CSizeT(0)]
item0: cpython.PyObject | CPtr = lst[sizet(0)]
testcheck.check(cpython.PyLong_AsLong(item0) == 100, "PyListObj lst[0] == 100", "PyListObj lst[0] == 100")
# __setitem__
e4: cpython.PyObject | CPtr = cpython.PyLong_FromLong(999)
lst[t.CSizeT(1)] = e4
item1: cpython.PyObject | CPtr = lst[t.CSizeT(1)]
lst[sizet(1)] = e4
item1: cpython.PyObject | CPtr = lst[sizet(1)]
testcheck.check(cpython.PyLong_AsLong(item1) == 999, "PyListObj lst[1] = 999", "PyListObj lst[1] = 999")
cpython.Py_DecRef(e4)
@@ -327,7 +327,7 @@ def test_operator_overload():
testcheck.check(len(dct) == 1, "PyDictObj len == 1", "PyDictObj len == 1")
got_lang: cpython.PyObject | CPtr = dct[dk1]
got_str: t.CChar | CPtr = cpython.PyUnicode_AsUTF8(got_lang)
got_str: char | CPtr = cpython.PyUnicode_AsUTF8(got_lang)
testcheck.check(got_str != 0, "PyDictObj dct['lang'] == Viper", "PyDictObj dct['lang'] == Viper")
if got_str != 0:
printf(" PyDictObj dct['lang'] = %s\n", got_str)