Skip to content

Commit

Permalink
BLD: add tempita files to depends
Browse files Browse the repository at this point in the history
This change makes it so that if a `.pxi.in` file is modified, the
appropriate module will be rebuilt.

Author: Chris <cbartak@gmail.com>

Closes #13960 from chris-b1/pxi-dep and squashes the following commits:

d3ccf13 [Chris] BLD: add tempita files to depends
  • Loading branch information
chris-b1 authored and jreback committed Aug 11, 2016
1 parent 257ac88 commit a963139
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions setup.py
Expand Up @@ -106,19 +106,28 @@ def is_platform_mac():


_pxipath = pjoin('pandas', 'src')
_pxifiles = ['algos_common_helper.pxi.in', 'algos_groupby_helper.pxi.in',
'join_helper.pxi.in', 'algos_take_helper.pxi.in',
'hashtable_class_helper.pxi.in', 'hashtable_func_helper.pxi.in',
'sparse_op_helper.pxi.in', 'joins_func_helper.pxi.in']
_pxi_dep_template = {
'algos': ['algos_common_helper.pxi.in', 'algos_groupby_helper.pxi.in',
'algos_take_helper.pxi.in'],
'_join': ['join_helper.pxi.in', 'joins_func_helper.pxi.in'],
'hashtable': ['hashtable_class_helper.pxi.in',
'hashtable_func_helper.pxi.in'],
'_sparse': ['sparse_op_helper.pxi.in']
}
_pxifiles = []
_pxi_dep = {}
for module, files in _pxi_dep_template.items():
pxi_files = [pjoin(_pxipath, x) for x in files]
_pxifiles.extend(pxi_files)
_pxi_dep[module] = pxi_files


class build_ext(_build_ext):
def build_extensions(self):

for _pxifile in _pxifiles:
for pxifile in _pxifiles:
# build pxifiles first, template extention must be .pxi.in
assert _pxifile.endswith('.pxi.in')
pxifile = pjoin(_pxipath, _pxifile)
assert pxifile.endswith('.pxi.in')
outfile = pxifile[:-3]

if (os.path.exists(outfile) and
Expand Down Expand Up @@ -450,7 +459,8 @@ def pxd(name):
'depends': lib_depends},
hashtable={'pyxfile': 'hashtable',
'pxdfiles': ['hashtable'],
'depends': ['pandas/src/klib/khash_python.h']},
'depends': (['pandas/src/klib/khash_python.h']
+ _pxi_dep['hashtable'])},
tslib={'pyxfile': 'tslib',
'depends': tseries_depends,
'sources': ['pandas/src/datetime/np_datetime.c',
Expand All @@ -465,9 +475,11 @@ def pxd(name):
'sources': ['pandas/src/datetime/np_datetime.c',
'pandas/src/datetime/np_datetime_strings.c']},
algos={'pyxfile': 'algos',
'pxdfiles': ['src/util']},
'pxdfiles': ['src/util'],
'depends': _pxi_dep['algos']},
_join={'pyxfile': 'src/join',
'pxdfiles': ['src/util']},
'pxdfiles': ['src/util'],
'depends': _pxi_dep['_join']},
_window={'pyxfile': 'window',
'pxdfiles': ['src/skiplist', 'src/util'],
'depends': ['pandas/src/skiplist.pyx',
Expand All @@ -479,7 +491,8 @@ def pxd(name):
'sources': ['pandas/src/parser/tokenizer.c',
'pandas/src/parser/io.c']},
_sparse={'pyxfile': 'src/sparse',
'depends': [srcpath('sparse', suffix='.pyx')]},
'depends': ([srcpath('sparse', suffix='.pyx')]
+ _pxi_dep['_sparse'])},
_testing={'pyxfile': 'src/testing',
'depends': [srcpath('testing', suffix='.pyx')]},
)
Expand Down

0 comments on commit a963139

Please sign in to comment.