@@ -12,75 +12,45 @@ def lazy(function):
1212 @wraps (function )
1313 def wrapped (* args , ** kwargs ):
1414
15- class LazyProxy (object ):
15+ class LazyProxy (Extension ):
16+ __arguments = dict ()
1617
1718 def __init__ (self , function , args , kwargs ):
18- self ._function = function
19- self ._args = args
20- self ._kwargs = kwargs
21- self ._result = None
19+ self .__arguments [ "function" ] = function
20+ self .__arguments [ "args" ] = args
21+ self .__arguments [ "kwargs" ] = kwargs
22+ self .__arguments [ "result" ] = None
2223
23- def __getattribute__ (self , name ):
24- if name in ['_function' , '_args' , '_kwargs' , '_result' ]:
25- return super (LazyProxy , self ).__getattribute__ (name )
24+ def __getattr__ (self , item ):
25+ if self .__arguments ["result" ] is None :
26+ self .__arguments ["result" ] = self .__arguments ["function" ](* self .__arguments ["args" ],
27+ ** self .__arguments ["kwargs" ])
2628
27- if self ._result is None :
28- self ._result = self ._function (* self ._args , ** self ._kwargs )
29-
30- return object .__getattribute__ (self ._result , name )
29+ return getattr (self .__arguments ["result" ], item )
3130
3231 def __setattr__ (self , name , value ):
33- if name in ['_function' , '_args' , '_kwargs' , '_result' ]:
34- super (LazyProxy , self ).__setattr__ (name , value )
35- return
36-
37- if self ._result is None :
38- self ._result = self ._function (* self ._args , ** self ._kwargs )
32+ if self .__arguments ["result" ] is None :
33+ self .__arguments ["result" ] = self .__arguments ["function" ](* self .__arguments ["args" ],
34+ ** self .__arguments ["kwargs" ])
3935
40- setattr (self ._result , name , value )
36+ setattr (self .__arguments [ "result" ] , name , value )
4137
4238 return LazyProxy (function , args , kwargs )
4339
4440 return wrapped
4541
4642
47- class Extension (Extension , object ):
48-
49- lxml_extended = False
50-
51- @property
52- def include_dirs (self ):
53- dirs = self .__dict__ ['include_dirs' ]
54- if self .lxml_extended :
55- return dirs
56-
57- # Resolve lxml include directories.
58- import lxml
59- lxml_base = path .dirname (lxml .__file__ )
60- lxml_include = path .join (lxml_base , 'includes' )
61-
62- dirs .insert (0 , lxml_include )
63- dirs .insert (0 , lxml_base )
64-
65- self .lxml_extended = True
66- return dirs
67-
68- @include_dirs .setter
69- def include_dirs (self , dirs ):
70- self .__dict__ ['include_dirs' ] = dirs
71-
72-
7343@lazy
7444def make_extension (name , cython = True ):
7545 from pkgconfig import parse
7646
7747 # Declare the crypto implementation.
78- XMLSEC_CRYPTO = 'openssl'
48+ xmlsec_crypto = 'openssl'
7949
8050 # Process the `pkg-config` utility and discover include and library
8151 # directories.
8252 config = {}
83- for lib in ['libxml-2.0' , 'xmlsec1-%s' % XMLSEC_CRYPTO ]:
53+ for lib in ['libxml-2.0' , 'xmlsec1-%s' % xmlsec_crypto ]:
8454 config .update (parse (lib ))
8555
8656 config ['extra_compile_args' ] = ['-DXMLSEC_CRYPTO_OPENSSL=1' ]
@@ -93,6 +63,9 @@ def make_extension(name, cython=True):
9363 config ['include_dirs' ] = []
9464
9565 # Add the source directories for inclusion.
66+ import lxml
67+ config ['include_dirs' ].insert (0 , path .dirname (lxml .__file__ ))
68+ config ['include_dirs' ].insert (0 , path .join (path .dirname (lxml .__file__ ), 'includes' ))
9669 config ['include_dirs' ].insert (0 , 'src' )
9770
9871 # Resolve extension location from name.
@@ -133,9 +106,6 @@ def make_extension(name, cython=True):
133106 install_requires = [
134107 'lxml >= 3.0' ,
135108 ],
136- extras_require = {
137- 'test' : ['pytest' ]
138- },
139109 package_dir = {'xmlsec' : 'src/xmlsec' },
140110 packages = ['xmlsec' ],
141111 ext_modules = [
@@ -144,6 +114,7 @@ def make_extension(name, cython=True):
144114 make_extension ('xmlsec.tree' ),
145115 make_extension ('xmlsec.key' ),
146116 make_extension ('xmlsec.ds' ),
117+ make_extension ('xmlsec.enc' ),
147118 make_extension ('xmlsec.template' ),
148119 ]
149120)
0 commit comments