Skip to content

Commit a963139

Browse files
chris-b1jreback
authored andcommitted
BLD: add tempita files to depends
This change makes it so that if a `.pxi.in` file is modified, the appropriate module will be rebuilt. Author: Chris <[email protected]> Closes #13960 from chris-b1/pxi-dep and squashes the following commits: d3ccf13 [Chris] BLD: add tempita files to depends
1 parent 257ac88 commit a963139

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

setup.py

+24-11
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,28 @@ def is_platform_mac():
106106

107107

108108
_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
113123

114124

115125
class build_ext(_build_ext):
116126
def build_extensions(self):
117127

118-
for _pxifile in _pxifiles:
128+
for pxifile in _pxifiles:
119129
# 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')
122131
outfile = pxifile[:-3]
123132

124133
if (os.path.exists(outfile) and
@@ -450,7 +459,8 @@ def pxd(name):
450459
'depends': lib_depends},
451460
hashtable={'pyxfile': 'hashtable',
452461
'pxdfiles': ['hashtable'],
453-
'depends': ['pandas/src/klib/khash_python.h']},
462+
'depends': (['pandas/src/klib/khash_python.h']
463+
+ _pxi_dep['hashtable'])},
454464
tslib={'pyxfile': 'tslib',
455465
'depends': tseries_depends,
456466
'sources': ['pandas/src/datetime/np_datetime.c',
@@ -465,9 +475,11 @@ def pxd(name):
465475
'sources': ['pandas/src/datetime/np_datetime.c',
466476
'pandas/src/datetime/np_datetime_strings.c']},
467477
algos={'pyxfile': 'algos',
468-
'pxdfiles': ['src/util']},
478+
'pxdfiles': ['src/util'],
479+
'depends': _pxi_dep['algos']},
469480
_join={'pyxfile': 'src/join',
470-
'pxdfiles': ['src/util']},
481+
'pxdfiles': ['src/util'],
482+
'depends': _pxi_dep['_join']},
471483
_window={'pyxfile': 'window',
472484
'pxdfiles': ['src/skiplist', 'src/util'],
473485
'depends': ['pandas/src/skiplist.pyx',
@@ -479,7 +491,8 @@ def pxd(name):
479491
'sources': ['pandas/src/parser/tokenizer.c',
480492
'pandas/src/parser/io.c']},
481493
_sparse={'pyxfile': 'src/sparse',
482-
'depends': [srcpath('sparse', suffix='.pyx')]},
494+
'depends': ([srcpath('sparse', suffix='.pyx')]
495+
+ _pxi_dep['_sparse'])},
483496
_testing={'pyxfile': 'src/testing',
484497
'depends': [srcpath('testing', suffix='.pyx')]},
485498
)

0 commit comments

Comments
 (0)