@@ -106,19 +106,28 @@ def is_platform_mac():
106
106
107
107
108
108
_pxipath = pjoin ('pandas' , 'src' )
109
- _pxifiles = ['algos_common_helper.pxi.in' , 'algos_groupby_helper.pxi.in' ,
110
- 'join_helper.pxi.in' , 'algos_take_helper.pxi.in' ,
111
- 'hashtable_class_helper.pxi.in' , 'hashtable_func_helper.pxi.in' ,
112
- 'sparse_op_helper.pxi.in' , 'joins_func_helper.pxi.in' ]
109
+ _pxi_dep_template = {
110
+ 'algos' : ['algos_common_helper.pxi.in' , 'algos_groupby_helper.pxi.in' ,
111
+ 'algos_take_helper.pxi.in' ],
112
+ '_join' : ['join_helper.pxi.in' , 'joins_func_helper.pxi.in' ],
113
+ 'hashtable' : ['hashtable_class_helper.pxi.in' ,
114
+ 'hashtable_func_helper.pxi.in' ],
115
+ '_sparse' : ['sparse_op_helper.pxi.in' ]
116
+ }
117
+ _pxifiles = []
118
+ _pxi_dep = {}
119
+ for module , files in _pxi_dep_template .items ():
120
+ pxi_files = [pjoin (_pxipath , x ) for x in files ]
121
+ _pxifiles .extend (pxi_files )
122
+ _pxi_dep [module ] = pxi_files
113
123
114
124
115
125
class build_ext (_build_ext ):
116
126
def build_extensions (self ):
117
127
118
- for _pxifile in _pxifiles :
128
+ for pxifile in _pxifiles :
119
129
# build pxifiles first, template extention must be .pxi.in
120
- assert _pxifile .endswith ('.pxi.in' )
121
- pxifile = pjoin (_pxipath , _pxifile )
130
+ assert pxifile .endswith ('.pxi.in' )
122
131
outfile = pxifile [:- 3 ]
123
132
124
133
if (os .path .exists (outfile ) and
@@ -450,7 +459,8 @@ def pxd(name):
450
459
'depends' : lib_depends },
451
460
hashtable = {'pyxfile' : 'hashtable' ,
452
461
'pxdfiles' : ['hashtable' ],
453
- 'depends' : ['pandas/src/klib/khash_python.h' ]},
462
+ 'depends' : (['pandas/src/klib/khash_python.h' ]
463
+ + _pxi_dep ['hashtable' ])},
454
464
tslib = {'pyxfile' : 'tslib' ,
455
465
'depends' : tseries_depends ,
456
466
'sources' : ['pandas/src/datetime/np_datetime.c' ,
@@ -465,9 +475,11 @@ def pxd(name):
465
475
'sources' : ['pandas/src/datetime/np_datetime.c' ,
466
476
'pandas/src/datetime/np_datetime_strings.c' ]},
467
477
algos = {'pyxfile' : 'algos' ,
468
- 'pxdfiles' : ['src/util' ]},
478
+ 'pxdfiles' : ['src/util' ],
479
+ 'depends' : _pxi_dep ['algos' ]},
469
480
_join = {'pyxfile' : 'src/join' ,
470
- 'pxdfiles' : ['src/util' ]},
481
+ 'pxdfiles' : ['src/util' ],
482
+ 'depends' : _pxi_dep ['_join' ]},
471
483
_window = {'pyxfile' : 'window' ,
472
484
'pxdfiles' : ['src/skiplist' , 'src/util' ],
473
485
'depends' : ['pandas/src/skiplist.pyx' ,
@@ -479,7 +491,8 @@ def pxd(name):
479
491
'sources' : ['pandas/src/parser/tokenizer.c' ,
480
492
'pandas/src/parser/io.c' ]},
481
493
_sparse = {'pyxfile' : 'src/sparse' ,
482
- 'depends' : [srcpath ('sparse' , suffix = '.pyx' )]},
494
+ 'depends' : ([srcpath ('sparse' , suffix = '.pyx' )]
495
+ + _pxi_dep ['_sparse' ])},
483
496
_testing = {'pyxfile' : 'src/testing' ,
484
497
'depends' : [srcpath ('testing' , suffix = '.pyx' )]},
485
498
)
0 commit comments