@@ -101,140 +101,65 @@ include("as.jl")
101101include (" arg.jl" )
102102
103103@init begin
104- PyObject_TryConvert_AddRules (
105- " builtins.NoneType" ,
106- [
107- (Nothing, PyNone_TryConvertRule_nothing, 100 ),
108- (Missing, PyNone_TryConvertRule_missing),
109- ],
110- )
111- PyObject_TryConvert_AddRules (" builtins.bool" , [(Bool, PyBool_TryConvertRule_bool, 100 )])
112- PyObject_TryConvert_AddRules (
113- " numbers.Integral" ,
114- [
115- (Integer, PyLongable_TryConvertRule_integer, 100 ),
116- (Rational, PyLongable_TryConvertRule_tryconvert),
117- (Real, PyLongable_TryConvertRule_tryconvert),
118- (Number, PyLongable_TryConvertRule_tryconvert),
119- (Any, PyLongable_TryConvertRule_tryconvert),
120- ],
121- )
122- PyObject_TryConvert_AddRules (
123- " builtins.float" ,
124- [(Float64, PyFloatable_TryConvertRule_convert, 100 )],
125- )
126- PyObject_TryConvert_AddRules (
127- " numbers.Real" ,
128- [
129- (Float64, PyFloatable_TryConvertRule_convert),
130- (BigFloat, PyFloatable_TryConvertRule_convert),
131- (Float32, PyFloatable_TryConvertRule_convert),
132- (Float16, PyFloatable_TryConvertRule_convert),
133- (AbstractFloat, PyFloatable_TryConvertRule_tryconvert),
134- (Real, PyFloatable_TryConvertRule_tryconvert),
135- (Number, PyFloatable_TryConvertRule_tryconvert),
136- ],
137- )
138- PyObject_TryConvert_AddRules (
139- " builtins.complex" ,
140- [(Complex{Float64}, PyComplexable_TryConvertRule_convert, 100 )],
141- )
142- PyObject_TryConvert_AddRules (
143- " numbers.Complex" ,
144- [
145- (Complex{Float64}, PyComplexable_TryConvertRule_convert),
146- (Complex{BigFloat}, PyComplexable_TryConvertRule_convert),
147- (Complex{Float32}, PyComplexable_TryConvertRule_convert),
148- (Complex{Float16}, PyComplexable_TryConvertRule_convert),
149- (Complex{T} where {T<: AbstractFloat }, PyComplexable_TryConvertRule_tryconvert),
150- (Complex{T} where {T<: Real }, PyComplexable_TryConvertRule_tryconvert),
151- (Number, PyComplexable_TryConvertRule_tryconvert),
152- ],
153- )
154- PyObject_TryConvert_AddRules (
155- " builtins.bytes" ,
156- [
157- (Vector{UInt8}, PyBytes_TryConvertRule_vector),
158- (Vector{Int8}, PyBytes_TryConvertRule_vector),
159- (String, PyBytes_TryConvertRule_string),
160- ],
161- )
162- PyObject_TryConvert_AddRules (
163- " builtins.str" ,
164- [
165- (String, PyUnicode_TryConvertRule_string, 100 ),
166- (Symbol, PyUnicode_TryConvertRule_symbol),
167- (Char, PyUnicode_TryConvertRule_char),
168- (Vector{UInt8}, PyUnicode_TryConvertRule_vector),
169- (Vector{Int8}, PyUnicode_TryConvertRule_vector),
170- ],
171- )
172- PyObject_TryConvert_AddRules (
173- " builtins.tuple" ,
174- [(Tuple, PyIterable_ConvertRule_tuple, 100 )],
175- )
176- PyObject_TryConvert_AddRules (
177- " builtins.range" ,
178- [
179- (
180- StepRange{T,S} where {T<: Integer ,S<: Integer },
181- PyRange_TryConvertRule_steprange,
182- 100 ,
183- ),
184- (UnitRange{T} where {T<: Integer }, PyRange_TryConvertRule_unitrange),
185- ],
186- )
187- PyObject_TryConvert_AddRules (
188- " collections.abc.Iterable" ,
189- [
190- (Vector, PyIterable_ConvertRule_vecorset),
191- (Set, PyIterable_ConvertRule_vecorset),
192- (Tuple, PyIterable_ConvertRule_tuple),
193- (NamedTuple, PyIterable_ConvertRule_namedtuple),
194- (Pair, PyIterable_ConvertRule_pair),
195- ],
196- )
197- PyObject_TryConvert_AddRules (
198- " collections.abc.Sequence" ,
199- [(Vector, PyIterable_ConvertRule_vecorset)],
200- )
201- PyObject_TryConvert_AddRules (
202- " collections.abc.Set" ,
203- [(Set, PyIterable_ConvertRule_vecorset)],
204- )
205- PyObject_TryConvert_AddRules (
206- " collections.abc.Mapping" ,
207- [(Dict, PyMapping_ConvertRule_dict)],
208- )
209- PyObject_TryConvert_AddRules (" datetime.time" , [(Time, PyTime_TryConvertRule_time, 100 )])
210- PyObject_TryConvert_AddRules (" datetime.date" , [(Date, PyDate_TryConvertRule_date, 100 )])
211- PyObject_TryConvert_AddRules (
212- " datetime.datetime" ,
213- [(DateTime, PyDateTime_TryConvertRule_datetime, 100 )],
214- )
215- PyObject_TryConvert_AddRules (
216- " datetime.timedelta" ,
217- [
218- (Dates. Period, PyTimeDelta_TryConvertRule_period, 100 ),
219- (Dates. CompoundPeriod, PyTimeDelta_TryConvertRule_compoundperiod),
220- ],
221- )
222- PyObject_TryConvert_AddRules (
223- " juliacall.ValueBase" ,
224- [(Any, PyJuliaValue_TryConvert_any, 1000 )],
225- )
226- PyObject_TryConvert_AddExtraTypes ([
227- PyIterableABC_Type,
228- PyCallableABC_Type,
229- PySequenceABC_Type,
230- PyMappingABC_Type,
231- PySetABC_Type,
232- PyNumberABC_Type,
233- PyComplexABC_Type,
234- PyRealABC_Type,
235- PyRationalABC_Type,
236- PyIntegralABC_Type,
237- ])
104+ PyObject_TryConvert_AddRule (" builtins.NoneType" , Nothing, PyNone_TryConvertRule_nothing, 100 )
105+ PyObject_TryConvert_AddRule (" builtins.NoneType" , Missing, PyNone_TryConvertRule_missing)
106+ PyObject_TryConvert_AddRule (" builtins.bool" , Bool, PyBool_TryConvertRule_bool, 100 )
107+ PyObject_TryConvert_AddRule (" numbers.Integral" , Integer, PyLongable_TryConvertRule_integer, 100 )
108+ PyObject_TryConvert_AddRule (" numbers.Integral" , Rational, PyLongable_TryConvertRule_tryconvert)
109+ PyObject_TryConvert_AddRule (" numbers.Integral" , Real, PyLongable_TryConvertRule_tryconvert)
110+ PyObject_TryConvert_AddRule (" numbers.Integral" , Number, PyLongable_TryConvertRule_tryconvert)
111+ PyObject_TryConvert_AddRule (" numbers.Integral" , Any, PyLongable_TryConvertRule_tryconvert)
112+ PyObject_TryConvert_AddRule (" builtins.float" , Float64, PyFloatable_TryConvertRule_convert, 100 )
113+ PyObject_TryConvert_AddRule (" numbers.Real" , Float64, PyFloatable_TryConvertRule_convert)
114+ PyObject_TryConvert_AddRule (" numbers.Real" , BigFloat, PyFloatable_TryConvertRule_convert)
115+ PyObject_TryConvert_AddRule (" numbers.Real" , Float32, PyFloatable_TryConvertRule_convert)
116+ PyObject_TryConvert_AddRule (" numbers.Real" , Float16, PyFloatable_TryConvertRule_convert)
117+ PyObject_TryConvert_AddRule (" numbers.Real" , AbstractFloat, PyFloatable_TryConvertRule_tryconvert)
118+ PyObject_TryConvert_AddRule (" numbers.Real" , Real, PyFloatable_TryConvertRule_tryconvert)
119+ PyObject_TryConvert_AddRule (" numbers.Real" , Number, PyFloatable_TryConvertRule_tryconvert)
120+ PyObject_TryConvert_AddRule (" builtins.complex" , Complex{Float64}, PyComplexable_TryConvertRule_convert, 100 )
121+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{Float64}, PyComplexable_TryConvertRule_convert)
122+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{BigFloat}, PyComplexable_TryConvertRule_convert)
123+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{Float32}, PyComplexable_TryConvertRule_convert)
124+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{Float16}, PyComplexable_TryConvertRule_convert)
125+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{T} where {T<: AbstractFloat }, PyComplexable_TryConvertRule_tryconvert)
126+ PyObject_TryConvert_AddRule (" numbers.Complex" , Complex{T} where {T<: Real }, PyComplexable_TryConvertRule_tryconvert)
127+ PyObject_TryConvert_AddRule (" numbers.Complex" , Number, PyComplexable_TryConvertRule_tryconvert)
128+ PyObject_TryConvert_AddRule (" builtins.bytes" , Vector{UInt8}, PyBytes_TryConvertRule_vector)
129+ PyObject_TryConvert_AddRule (" builtins.bytes" , Vector{Int8}, PyBytes_TryConvertRule_vector)
130+ PyObject_TryConvert_AddRule (" builtins.bytes" , String, PyBytes_TryConvertRule_string)
131+ PyObject_TryConvert_AddRule (" builtins.str" , String, PyUnicode_TryConvertRule_string, 100 )
132+ PyObject_TryConvert_AddRule (" builtins.str" , Symbol, PyUnicode_TryConvertRule_symbol)
133+ PyObject_TryConvert_AddRule (" builtins.str" , Char, PyUnicode_TryConvertRule_char)
134+ PyObject_TryConvert_AddRule (" builtins.str" , Vector{UInt8}, PyUnicode_TryConvertRule_vector)
135+ PyObject_TryConvert_AddRule (" builtins.str" , Vector{Int8}, PyUnicode_TryConvertRule_vector)
136+ PyObject_TryConvert_AddRule (" builtins.tuple" , Tuple, PyIterable_ConvertRule_tuple, 100 )
137+ PyObject_TryConvert_AddRule (" builtins.range" , StepRange{T,S} where {T<: Integer ,S<: Integer }, PyRange_TryConvertRule_steprange, 100 )
138+ PyObject_TryConvert_AddRule (" builtins.range" , UnitRange{T} where {T<: Integer }, PyRange_TryConvertRule_unitrange)
139+ PyObject_TryConvert_AddRule (" collections.abc.Iterable" , Vector, PyIterable_ConvertRule_vecorset)
140+ PyObject_TryConvert_AddRule (" collections.abc.Iterable" , Set, PyIterable_ConvertRule_vecorset)
141+ PyObject_TryConvert_AddRule (" collections.abc.Iterable" , Tuple, PyIterable_ConvertRule_tuple)
142+ PyObject_TryConvert_AddRule (" collections.abc.Iterable" , NamedTuple, PyIterable_ConvertRule_namedtuple)
143+ PyObject_TryConvert_AddRule (" collections.abc.Iterable" , Pair, PyIterable_ConvertRule_pair)
144+ PyObject_TryConvert_AddRule (" collections.abc.Sequence" , Vector, PyIterable_ConvertRule_vecorset)
145+ PyObject_TryConvert_AddRule (" collections.abc.Set" , Set, PyIterable_ConvertRule_vecorset)
146+ PyObject_TryConvert_AddRule (" collections.abc.Mapping" , Dict, PyMapping_ConvertRule_dict)
147+ PyObject_TryConvert_AddRule (" datetime.time" , Time, PyTime_TryConvertRule_time, 100 )
148+ PyObject_TryConvert_AddRule (" datetime.date" , Date, PyDate_TryConvertRule_date, 100 )
149+ PyObject_TryConvert_AddRule (" datetime.datetime" , DateTime, PyDateTime_TryConvertRule_datetime, 100 )
150+ PyObject_TryConvert_AddRule (" datetime.timedelta" , Dates. Period, PyTimeDelta_TryConvertRule_period, 100 )
151+ PyObject_TryConvert_AddRule (" datetime.timedelta" , Dates. CompoundPeriod, PyTimeDelta_TryConvertRule_compoundperiod)
152+ PyObject_TryConvert_AddRule (" juliacall.ValueBase" , Any, PyJuliaValue_TryConvert_any, 1000 )
153+ PyObject_TryConvert_AddExtraType (PyIterableABC_Type)
154+ PyObject_TryConvert_AddExtraType (PyCallableABC_Type)
155+ PyObject_TryConvert_AddExtraType (PySequenceABC_Type)
156+ PyObject_TryConvert_AddExtraType (PyMappingABC_Type)
157+ PyObject_TryConvert_AddExtraType (PySetABC_Type)
158+ PyObject_TryConvert_AddExtraType (PyNumberABC_Type)
159+ PyObject_TryConvert_AddExtraType (PyComplexABC_Type)
160+ PyObject_TryConvert_AddExtraType (PyRealABC_Type)
161+ PyObject_TryConvert_AddExtraType (PyRationalABC_Type)
162+ PyObject_TryConvert_AddExtraType (PyIntegralABC_Type)
238163
239164 # ## ctypes
240165 for (p, T) in [
@@ -262,30 +187,20 @@ include("arg.jl")
262187 isfloat = occursin (" float" , p) || occursin (" double" , p)
263188 isint = ! (isfloat || isptr)
264189 isreal = isint || isfloat
265- PyObject_TryConvert_AddRules (
266- " ctypes.c_$p " ,
267- [
268- (
269- p == " char_p" ? Cstring : p == " wchar_p" ? Cwstring : Union{},
270- PySimpleCData_TryConvert_value {T,false} (),
271- ),
272- (T, PySimpleCData_TryConvert_value {T,false} ()),
273- (isint ? Integer : Union{}, PySimpleCData_TryConvert_value {T,true} ()),
274- (isint ? Rational : Union{}, PySimpleCData_TryConvert_value {T,true} ()),
275- (isreal ? Float64 : Union{}, PySimpleCData_TryConvert_value {T,false} ()),
276- (isreal ? BigFloat : Union{}, PySimpleCData_TryConvert_value {T,false} ()),
277- (isreal ? Float32 : Union{}, PySimpleCData_TryConvert_value {T,false} ()),
278- (isreal ? Float16 : Union{}, PySimpleCData_TryConvert_value {T,false} ()),
279- (
280- isreal ? AbstractFloat : Union{},
281- PySimpleCData_TryConvert_value {T,true} (),
282- ),
283- (isreal ? Real : Union{}, PySimpleCData_TryConvert_value {T,true} ()),
284- (isreal ? Number : Union{}, PySimpleCData_TryConvert_value {T,true} ()),
285- (isptr ? Ptr : Union{}, PySimpleCData_TryConvert_value {T,false} ()),
286- (Any, PySimpleCData_TryConvert_value {T,true} ()),
287- ],
288- )
190+ p == " char_p" && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Cstring, PySimpleCData_TryConvert_value {T,false} ())
191+ p == " wchar_p" && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Cwstring, PySimpleCData_TryConvert_value {T,false} ())
192+ PyObject_TryConvert_AddRule (" ctypes.c_$p " , T, PySimpleCData_TryConvert_value {T,false} ())
193+ isint && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Integer, PySimpleCData_TryConvert_value {T,true} ())
194+ isint && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Rational, PySimpleCData_TryConvert_value {T,true} ())
195+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Float64, PySimpleCData_TryConvert_value {T,false} ())
196+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , BigFloat, PySimpleCData_TryConvert_value {T,false} ())
197+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Float32, PySimpleCData_TryConvert_value {T,false} ())
198+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Float16, PySimpleCData_TryConvert_value {T,false} ())
199+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , AbstractFloat, PySimpleCData_TryConvert_value {T,true} ())
200+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Real, PySimpleCData_TryConvert_value {T,true} ())
201+ isreal && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Number, PySimpleCData_TryConvert_value {T,true} ())
202+ isptr && PyObject_TryConvert_AddRule (" ctypes.c_$p " , Ptr, PySimpleCData_TryConvert_value {T,false} ())
203+ PyObject_TryConvert_AddRule (" ctypes.c_$p " , Any, PySimpleCData_TryConvert_value {T,true} ())
289204 end
290205
291206 # ## numpy
@@ -313,52 +228,23 @@ include("arg.jl")
313228 isfloat = occursin (" float" , p)
314229 iscomplex = occursin (" complex" , p)
315230 isreal = isint || isfloat
316- PyObject_TryConvert_AddRules (
317- " numpy.$p " ,
318- [
319- (T, PyNumpySimpleData_TryConvert_value {T,false} (), 100 ),
320- (isint ? Integer : Union{}, PyNumpySimpleData_TryConvert_value {T,true} ()),
321- (isint ? Rational : Union{}, PyNumpySimpleData_TryConvert_value {T,true} ()),
322- (isreal ? Float64 : Union{}, PyNumpySimpleData_TryConvert_value {T,false} ()),
323- (
324- isreal ? BigFloat : Union{},
325- PyNumpySimpleData_TryConvert_value {T,false} (),
326- ),
327- (isreal ? Float32 : Union{}, PyNumpySimpleData_TryConvert_value {T,false} ()),
328- (isreal ? Float16 : Union{}, PyNumpySimpleData_TryConvert_value {T,false} ()),
329- (
330- isreal ? AbstractFloat : Union{},
331- PyNumpySimpleData_TryConvert_value {T,true} (),
332- ),
333- (isreal ? Real : Union{}, PyNumpySimpleData_TryConvert_value {T,true} ()),
334- (
335- iscomplex ? Complex{Float64} : Union{},
336- PyNumpySimpleData_TryConvert_value {T,false} (),
337- ),
338- (
339- iscomplex ? Complex{BigFloat} : Union{},
340- PyNumpySimpleData_TryConvert_value {T,false} (),
341- ),
342- (
343- iscomplex ? Complex{Float32} : Union{},
344- PyNumpySimpleData_TryConvert_value {T,false} (),
345- ),
346- (
347- iscomplex ? Complex{Float16} : Union{},
348- PyNumpySimpleData_TryConvert_value {T,false} (),
349- ),
350- (
351- iscomplex ? (Complex{T} where {T<: AbstractFloat }) : Union{},
352- PyNumpySimpleData_TryConvert_value {T,true} (),
353- ),
354- (
355- iscomplex ? (Complex{T} where {T<: Real }) : Union{},
356- PyNumpySimpleData_TryConvert_value {T,true} (),
357- ),
358- (Number, PyNumpySimpleData_TryConvert_value {T,true} ()),
359- (Any, PyNumpySimpleData_TryConvert_value {T,true} ()),
360- ],
361- )
231+ PyObject_TryConvert_AddRule (" numpy.$p " , T, PyNumpySimpleData_TryConvert_value {T,false} (), 100 )
232+ isint && PyObject_TryConvert_AddRule (" numpy.$p " , Integer, PyNumpySimpleData_TryConvert_value {T,true} ())
233+ isint && PyObject_TryConvert_AddRule (" numpy.$p " , Rational, PyNumpySimpleData_TryConvert_value {T,true} ())
234+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , Float64, PyNumpySimpleData_TryConvert_value {T,false} ())
235+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , BigFloat, PyNumpySimpleData_TryConvert_value {T,false} ())
236+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , Float32, PyNumpySimpleData_TryConvert_value {T,false} ())
237+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , Float16, PyNumpySimpleData_TryConvert_value {T,false} ())
238+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , AbstractFloat, PyNumpySimpleData_TryConvert_value {T,true} ())
239+ isreal && PyObject_TryConvert_AddRule (" numpy.$p " , Real, PyNumpySimpleData_TryConvert_value {T,true} ())
240+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{Float64}, PyNumpySimpleData_TryConvert_value {T,false} ())
241+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{BigFloat}, PyNumpySimpleData_TryConvert_value {T,false} ())
242+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{Float32}, PyNumpySimpleData_TryConvert_value {T,false} ())
243+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{Float16}, PyNumpySimpleData_TryConvert_value {T,false} ())
244+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{T} where {T<: AbstractFloat }, PyNumpySimpleData_TryConvert_value {T,true} ())
245+ iscomplex && PyObject_TryConvert_AddRule (" numpy.$p " , Complex{T} where {T<: Real }, PyNumpySimpleData_TryConvert_value {T,true} ())
246+ PyObject_TryConvert_AddRule (" numpy.$p " , Number, PyNumpySimpleData_TryConvert_value {T,true} ())
247+ PyObject_TryConvert_AddRule (" numpy.$p " , Any, PyNumpySimpleData_TryConvert_value {T,true} ())
362248 end
363249end
364250
0 commit comments