8000 Add Python 3.10 support · pythonnet/pythonnet@4825462 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4825462

Browse files
filmorlostmsu
authored andcommitted
Add Python 3.10 support
- Add Python 3.10 typeoffsets - Replace call to (removed) `PyUnicode_GetMax` by platform detection, as AFAIK only Windows uses 16bit wchar_t
1 parent dea6bcb commit 4825462

File tree

3 files changed

+141
-11
lines changed

3 files changed

+141
-11
lines changed

src/runtime/CustomMarshaler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public int GetNativeDataSize()
4141
/// </summary>
4242
internal class UcsMarshaler : MarshalerBase
4343
{
44-
internal static readonly int _UCS = Runtime.PyUnicode_GetMax() <= 0xFFFF ? 2 : 4;
44+
internal static readonly int _UCS = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? 2 : 4;
4545
internal static readonly Encoding PyEncoding = _UCS == 2 ? Encoding.Unicode : Encoding.UTF32;
4646
private static readonly MarshalerBase Instance = new UcsMarshaler();
4747

src/runtime/interop310.cs

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
2+
// Auto-generated by geninterop.py.
3+
// DO NOT MODIFY BY HAND.
4+
5+
// Python 3.10: ABI flags: ''
6+
7+
// ReSharper disable InconsistentNaming
8+
// ReSharper disable IdentifierTypo
9+
10+
using System;
11+
using System.Diagnostics.CodeAnalysis;
12+
using System.Runtime.InteropServices;
13+
14+
using Python.Runtime.Native;
15+
16+
namespace Python.Runtime
17+
{
18+
[SuppressMessage("Style", "IDE1006:Naming Styles",
19+
Justification = "Following CPython",
20+
Scope = "type")]
21+
22+
[StructLayout(LayoutKind.Sequential)]
23+
internal class TypeOffset310 : GeneratedTypeOffsets, ITypeOffsets
24+
{
25+
public TypeOffset310() { }
26+
// Auto-generated from PyHeapTypeObject in Python.h
27+
public int ob_refcnt { get; private set; }
28+
public int ob_type { get; private set; }
29+
public int ob_size { get; private set; }
30+
public int tp_name { get; private set; }
31+
public int tp_basicsize { get; private set; }
32+
public int tp_itemsize { get; private set; }
33+
public int tp_dealloc { get; private set; }
34+
public int tp_vectorcall_offset { get; private set; }
35+
public int tp_getattr { get; private set; }
36+
public int tp_setattr { get; private set; }
37+
public int tp_as_async { get; private set; }
38+
public int tp_repr { get; private set; }
39+
public int tp_as_number { get; private set; }
40+
public int tp_as_sequence { get; private set; }
41+
public int tp_as_mapping { get; private set; }
42+
public int tp_hash { get; private set; }
43+
public int tp_call { get; private set; }
44+
public int tp_str { get; private set; }
45+
public int tp_getattro { get; private set; }
46+
public int tp_setattro { get; private set; }
47+
public int tp_as_buffer { get; private set; }
48+
public int tp_flags { get; private set; }
49+
public int tp_doc { get; private set; }
50+
public int tp_traverse { get; private set; }
51+
public int tp_clear { get; private set; }
52+
public int tp_richcompare { get; private set; }
53+
public int tp_weaklistoffset { get; private set; }
54+
public int tp_iter { get; private set; }
55+
public int tp_iternext { get; private set; }
56+
public int tp_methods { get; private set; }
57+
public int tp_members { get; private set; }
58+
public int tp_getset { get; private set; }
59+
public int tp_base { get; private set; }
60+
public int tp_dict { get; private set; }
61+
public int tp_descr_get { get; private set; }
62+
public int tp_descr_set { get; private set; }
63+
public int tp_dictoffset { get; private set; }
64+
public int tp_init { get; private set; }
65+
public int tp_alloc { get; private set; }
66+
public int tp_new { get; private set; }
67+
public int tp_free { get; private set; }
68+
public int tp_is_gc { get; private set; }
69+
public int tp_bases { get; private set; }
70+
public int tp_mro { get; private set; }
71+
public int tp_cache { get; private set; }
72+
public int tp_subclasses { get; private set; }
73+
public int tp_weaklist { get; private set; }
74+
public int tp_del { get; private set; }
75+
public int tp_version_tag { get; private set; }
76+
public int tp_finalize { get; private set; }
77+
public int tp_vectorcall { get; private set; }
78+
public int am_await { get; private set; }
79+
public int am_aiter { get; private set; }
80+
public int am_anext { get; private set; }
81+
public int am_send { get; private set; }
82+
public int nb_add { get; private set; }
83+
public int nb_subtract { get; private set; }
84+
public int nb_multiply { get; private set; }
85+
public int nb_remainder { get; private set; }
86+
public int nb_divmod { get; private set; }
87+
public int nb_power { get; private set; }
88+
public int nb_negative { get; private set; }
89+
public int nb_positive { get; private set; }
90+
public int nb_absolute { get; private set; }
91+
public int nb_bool { get; private set; }
92+
public int nb_invert { get; private set; }
93+
public int nb_lshift { get; private set; }
94+
public int nb_rshift { get; private set; }
95+
public int nb_and { get; private set; }
96+
public int nb_xor { get; private set; }
97+
public int nb_or { get; private set; }
98+
public int nb_int { get; private set; }
99+
public int nb_reserved { get; private set; }
100+
public int nb_float { get; private set; }
101+
public int nb_inplace_add { get; private set; }
102+
public int nb_inplace_subtract { get; private set; }
103+
public int nb_inplace_multiply { get; private set; }
104+
public int nb_inplace_remainder { get; private set; }
105+
public int nb_inplace_power { get; private set; }
106+
public int nb_inplace_lshift { get; private set; }
107+
public int nb_inplace_rshift { get; private set; }
108+
public int nb_inplace_and { get; private set; }
109+
public int nb_inplace_xor { get; private set; }
110+
public int nb_inplace_or { get; private set; }
111+
public int nb_floor_divide { get; private set; }
112+
public int nb_true_divide { get; private set; }
113+
public int nb_inplace_floor_divide { get; private set; }
114+
public int nb_inplace_true_divide { get; private set; }
115+
public int nb_index { get; private set; }
116+
public int nb_matrix_multiply { get; private set; }
117+
public int nb_inplace_matrix_multiply { get; private set; }
118+
public int mp_length { get; private set; }
119+
public int mp_subscript { get; private set; }
120+
public int mp_ass_subscript { get; private set; }
121+
public int sq_length { get; private set; }
122+
public int sq_concat { get; private set; }
123+
public int sq_repeat { get; private set; }
124+
public int sq_item { get; private set; }
125+
public int was_sq_slice { get; private set; }
126+
public int sq_ass_item { get; private set; }
127+
public int was_sq_ass_slice { get; private set; }
128+
public int sq_contains { get; private set; }
129+
public int sq_inplace_concat { get; private set; }
130+
public int sq_inplace_repeat { get; private set; }
131+
public int bf_getbuffer { get; private set; }
132+
public int bf_releasebuffer { get; private set; }
133+
public int name { get; private set; }
134+
public int ht_slots { get; private set; }
135+
public int qualname { get; private set; }
136+
public int ht_cached_keys { get; private set; }
137+
public int ht_module { get; private set; }
138+
}
139+
}
140+

src/runtime/runtime.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ private static string GetDefaultDllName()
3636
string dll = Environment.GetEnvironmentVariable("PYTHONNET_PYDLL");
3737
if (dll is not null) return dll;
3838

39-
try
40-
{
41-
LibraryLoader.Instance.GetFunction(IntPtr.Zero, "PyUnicode_GetMax");
42-
return null;
43-
} catch (MissingMethodException) { }
44-
4539
string verString = Environment.GetEnvironmentVariable("PYTHONNET_PYVER");
4640
if (!Version.TryParse(verString, out var version)) return null;
4741

@@ -1581,8 +1575,6 @@ internal static bool PyUnicode_Check(IntPtr ob)
15811575

15821576
internal static IntPtr PyUnicode_FromEncodedObject(IntPtr ob, IntPtr enc, IntPtr err) => Delegates.PyUnicode_FromEncodedObject(ob, enc, err);
15831577

1584-
internal static int PyUnicode_GetMax() => Delegates.PyUnicode_GetMax();
1585-
15861578
internal static long PyUnicode_GetSize(IntPtr ob)
15871579
{
15881580
return (long)_PyUnicode_GetSize(ob);
@@ -2462,7 +2454,6 @@ static Delegates()
24622454
PyUnicode_FromObject = (delegate* unmanaged[Cdecl]<IntPtr, IntPtr>)GetFunctionByName(nameof(PyUnicode_FromObject), GetUnmanagedDll(_PythonDll));
24632455
PyUnicode_DecodeUTF16 = (delegate* unmanaged[Cdecl]<IntPtr, nint, IntPtr, IntPtr, NewReference>)GetFunctionByName(nameof(PyUnicode_DecodeUTF16), GetUnmanagedDll(_PythonDll));
24642456
PyUnicode_FromEncodedObject = (delegate* unmanaged[Cdecl]<IntPtr, IntPtr, IntPtr, IntPtr>)GetFunctionByName(nameof(PyUnicode_FromEncodedObject), GetUnmanagedDll(_PythonDll));
2465-
PyUnicode_GetMax = (delegate* unmanaged[Cdecl]<int>)GetFunctionByName(nameof(PyUnicode_GetMax), GetUnmanagedDll(_PythonDll));
24662457
_PyUnicode_GetSize = (delegate* unmanaged[Cdecl]<IntPtr, IntPtr>)GetFunctionByName("PyUnicode_GetSize", GetUnmanagedDll(_PythonDll));
24672458
PyUnicode_AsUnicode = (delegate* unmanaged[Cdecl]<IntPtr, IntPtr>)GetFunctionByName(nameof(PyUnicode_AsUnicode), GetUnmanagedDll(_PythonDll));
24682459
PyUnicode_AsUTF16String = (delegate* unmanaged[Cdecl]<BorrowedReference, NewReference>)GetFunctionByName(nameof(PyUnicode_AsUTF16String), GetUnmanagedDll(_PythonDll));
@@ -2753,7 +2744,6 @@ static Delegates()
27532744
internal static delegate* unmanaged[Cdecl]<IntPtr, IntPtr> PyUnicode_FromObject { get; }
27542745
internal static delegate* unmanaged[Cdecl]<IntPtr, IntPtr, IntPtr, IntPtr> PyUnicode_FromEncodedObject { get; }
27552746
internal static delegate* unmanaged[Cdecl]<IntPtr, nint, IntPtr, IntPtr, NewReference> PyUnicode_DecodeUTF16 { get; }
2756-
internal static delegate* unmanaged[Cdecl]<int> PyUnicode_GetMax { get; }
27572747
internal static delegate* unmanaged[Cdecl]<IntPtr, IntPtr> _PyUnicode_GetSize { get; }
27582748
internal static delegate* unmanaged[Cdecl]<IntPtr, IntPtr> PyUnicode_AsUnicode { get; }
27592749
internal static delegate* unmanaged[Cdecl]<BorrowedReference, NewReference> PyUnicode_AsUTF16String { get; }

0 commit comments

Comments
 (0)
0