|
24 | 24 | join,
|
25 | 25 | )
|
26 | 26 | from distutils.version import StrictVersion
|
| 27 | +from functools import partial |
27 | 28 | from setuptools import (
|
28 | 29 | Extension,
|
29 | 30 | find_packages,
|
|
32 | 33 |
|
33 | 34 | import versioneer
|
34 | 35 |
|
| 36 | +try: |
| 37 | + import Cython |
| 38 | +except ImportError: |
| 39 | + raise Exception("Install Cython before zipline.") |
| 40 | + |
| 41 | +try: |
| 42 | + import numpy as np |
| 43 | +except ImportError: |
| 44 | + raise Exception("Install numpy before zipline.") |
| 45 | + |
| 46 | + |
| 47 | +NumpyExtension = partial(Extension, include_dirs=[np.get_include()]) |
| 48 | + |
35 | 49 |
|
36 | 50 | def window_specialization(typename):
|
37 | 51 | """Make an extension for an AdjustedArrayWindow specialization."""
|
38 |
| - return Extension( |
| 52 | + return NumpyExtension( |
39 | 53 | 'zipline.lib._{name}window'.format(name=typename),
|
40 | 54 | ['zipline/lib/_{name}window.pyx'.format(name=typename)],
|
41 | 55 | depends=['zipline/lib/_windowtemplate.pxi'],
|
42 | 56 | )
|
43 | 57 |
|
44 | 58 |
|
45 | 59 | ext_modules = [
|
46 |
| - Extension('zipline.assets._assets', ['zipline/assets/_assets.pyx']), |
47 |
| - Extension('zipline.assets.continuous_futures', |
| 60 | + NumpyExtension('zipline.assets._assets', ['zipline/assets/_assets.pyx']), |
| 61 | + NumpyExtension('zipline.assets.continuous_futures', |
48 | 62 | ['zipline/assets/continuous_futures.pyx']),
|
49 |
| - Extension('zipline.lib.adjustment', ['zipline/lib/adjustment.pyx']), |
50 |
| - Extension('zipline.lib._factorize', ['zipline/lib/_factorize.pyx']), |
| 63 | + NumpyExtension('zipline.lib.adjustment', ['zipline/lib/adjustment.pyx']), |
| 64 | + NumpyExtension('zipline.lib._factorize', ['zipline/lib/_factorize.pyx']), |
51 | 65 | window_specialization('float64'),
|
52 | 66 | window_specialization('int64'),
|
53 | 67 | window_specialization('int64'),
|
54 | 68 | window_specialization('uint8'),
|
55 | 69 | window_specialization('label'),
|
56 |
| - Extension('zipline.lib.rank', ['zipline/lib/rank.pyx']), |
57 |
| - Extension('zipline.data._equities', ['zipline/data/_equities.pyx']), |
58 |
| - Extension('zipline.data._adjustments', ['zipline/data/_adjustments.pyx']), |
| 70 | + NumpyExtension('zipline.lib.rank', ['zipline/lib/rank.pyx']), |
| 71 | + NumpyExtension('zipline.data._equities', ['zipline/data/_equities.pyx']), |
| 72 | + NumpyExtension('zipline.data._adjustments', |
| 73 | + ['zipline/data/_adjustments.pyx']), |
59 | 74 | Extension('zipline._protocol', ['zipline/_protocol.pyx']),
|
60 |
| - Extension('zipline.gens.sim_engine', ['zipline/gens/sim_engine.pyx']), |
61 |
| - Extension( |
| 75 | + NumpyExtension('zipline.gens.sim_engine', ['zipline/gens/sim_engine.pyx']), |
| 76 | + NumpyExtension( |
62 | 77 | 'zipline.data._minute_bar_internal',
|
63 | 78 | ['zipline/data/_minute_bar_internal.pyx']
|
64 | 79 | ),
|
65 |
| - Extension( |
| 80 | + NumpyExtension( |
66 | 81 | 'zipline.utils.calendars._calendar_helpers',
|
67 | 82 | ['zipline/utils/calendars/_calendar_helpers.pyx']
|
68 | 83 | ),
|
69 |
| - Extension( |
| 84 | + NumpyExtension( |
70 | 85 | 'zipline.data._resample',
|
71 | 86 | ['zipline/data/_resample.pyx']
|
72 | 87 | ),
|
73 |
| - Extension( |
| 88 | + NumpyExtension( |
74 | 89 | 'zipline.pipeline.loaders.blaze._core',
|
75 | 90 | ['zipline/pipeline/loaders/blaze/_core.pyx'],
|
76 | 91 | depends=['zipline/lib/adjustment.pxd'],
|
|
0 commit comments