@@ -6,14 +6,26 @@ mutable struct LazyPyModule
6
6
o:: PyObject
7
7
LazyPyModule (n) = new (n, PyNULL ())
8
8
end
9
- PyObject (m:: LazyPyModule ) = ispynull (m . o) ? copy! (m . o , pyimport (m . name)) : m . o
9
+ PyObject (m:: LazyPyModule ) = ispynull (getfield (m, :o )) ? copy! (getfield (m, :o ) , pyimport (getfield (m, : name ))) : getfield (m, :o )
10
10
pycall (m:: LazyPyModule , args... ; kws... ) = pycall (PyObject (m), args... ; kws... )
11
11
(m:: LazyPyModule )(args... ; kws... ) = pycall (PyObject (m), PyAny, args... ; kws... )
12
12
Base. Docs. doc (m:: LazyPyModule ) = Base. Docs. doc (PyObject (m))
13
+
14
+ # define each of these separately for Symbol and AbstractString to avoid method ambiguity:
15
+ Base. getproperty (m:: LazyPyModule , x:: Symbol ) = getproperty (PyObject (m), x)
16
+ Base. getproperty (m:: LazyPyModule , x:: AbstractString ) = getproperty (PyObject (m), x)
17
+ Base. setproperty! (m:: LazyPyModule , x:: Symbol , v) = setproperty! (PyObject (m), x, v)
18
+ Base. setproperty! (m:: LazyPyModule , x:: AbstractString , v) = setproperty! (PyObject (m), x, v)
19
+ PyCall. hasproperty (m:: LazyPyModule , x:: Symbol ) = PyCall. hasproperty (PyObject (m), x)
20
+ PyCall. hasproperty (m:: LazyPyModule , x:: AbstractString ) = PyCall. hasproperty (PyObject (m), x)
21
+
22
+ Base. propertynames (m:: LazyPyModule ) = propertynames (PyObject (m))
23
+ keys (m:: LazyPyModule ) = keys (PyObject (m))
24
+
25
+ # deprecated methods:
13
26
getindex (m:: LazyPyModule , x) = getindex (PyObject (m), x)
14
27
setindex! (m:: LazyPyModule , v, x) = setindex! (PyObject (m), v, x)
15
28
haskey (m:: LazyPyModule , x) = haskey (PyObject (m), x)
16
- keys (m:: LazyPyModule ) = keys (PyObject (m))
17
29
18
30
# ##########################################################################
19
31
# Lazily load mplot3d modules. This (slightly) improves load time of PyPlot,
0 commit comments