BUG: Fixing bitness issues on 32-bit systems

by being explicit with sizes
This commit is contained in:
Richard Frank
2016-04-07 12:52:06 -04:00
parent 8313c8c36c
commit 32a400a9fb
5 changed files with 33 additions and 28 deletions
+5 -5
View File
@@ -1131,15 +1131,15 @@ class TestBeforeTradingStart(TestCase):
# Mergers and Dividends are not tested, but we need to have these
# anyway
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
mergers.effective_date = mergers.effective_date.astype(int)
mergers.ratio = mergers.ratio.astype(float)
mergers.sid = mergers.sid.astype(int)
mergers.effective_date = mergers.effective_date.astype(np.int64)
mergers.ratio = mergers.ratio.astype(np.float64)
mergers.sid = mergers.sid.astype(np.int64)
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
'declared_date', 'pay_date',
'amount', 'sid'])
dividends.amount = dividends.amount.astype(float)
dividends.sid = dividends.sid.astype(int)
dividends.amount = dividends.amount.astype(np.float64)
dividends.sid = dividends.sid.astype(np.int64)
adj_writer.write(splits, mergers, dividends)
+5 -5
View File
@@ -203,15 +203,15 @@ class TestAPIShim(TestCase):
# Mergers and Dividends are not tested, but we need to have these
# anyway
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
mergers.effective_date = mergers.effective_date.astype(int)
mergers.ratio = mergers.ratio.astype(float)
mergers.sid = mergers.sid.astype(int)
mergers.effective_date = mergers.effective_date.astype(np.int64)
mergers.ratio = mergers.ratio.astype(np.float64)
mergers.sid = mergers.sid.astype(np.int64)
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
'declared_date', 'pay_date',
'amount', 'sid'])
dividends.amount = dividends.amount.astype(float)
dividends.sid = dividends.sid.astype(int)
dividends.amount = dividends.amount.astype(np.float64)
dividends.sid = dividends.sid.astype(np.int64)
adj_writer.write(splits, mergers, dividends)
+5 -3
View File
@@ -1,6 +1,7 @@
from numpy import (
float64,
uint32
uint32,
int64,
)
from bcolz import ctable
@@ -37,8 +38,9 @@ class DailyBarWriterFromDataFrames(BcolzDailyBarWriter):
return array.astype(uint32)
elif colname == 'day':
nanos_per_second = (1000 * 1000 * 1000)
self.check_uint_safe(arrmax.view(int) / nanos_per_second, colname)
return (array.view(int) / nanos_per_second).astype(uint32)
self.check_uint_safe(arrmax.view(int64) / nanos_per_second,
colname)
return (array.view(int64) / nanos_per_second).astype(uint32)
@staticmethod
def check_uint_safe(value, colname):
+5 -5
View File
@@ -163,10 +163,10 @@ class BcolzMinuteBarMetadata(object):
'first_trading_day': str(self.first_trading_day.date()),
'market_opens': self.market_opens.values.
astype('datetime64[m]').
astype(int).tolist(),
astype(np.int64).tolist(),
'market_closes': self.market_closes.values.
astype('datetime64[m]').
astype(int).tolist(),
astype(np.int64).tolist(),
'ohlc_ratio': self.ohlc_ratio,
}
with open(self.metadata_path(rootdir), 'w+') as fp:
@@ -603,10 +603,10 @@ class BcolzMinuteBarReader(object):
self._market_opens = metadata.market_opens
self._market_open_values = metadata.market_opens.values.\
astype('datetime64[m]').astype(int)
astype('datetime64[m]').astype(np.int64)
self._market_closes = metadata.market_closes
self._market_close_values = metadata.market_closes.values.\
astype('datetime64[m]').astype(int)
astype('datetime64[m]').astype(np.int64)
self._ohlc_inverse = 1.0 / metadata.ohlc_ratio
@@ -643,7 +643,7 @@ class BcolzMinuteBarReader(object):
"""
market_opens = self._market_opens.values.astype('datetime64[m]')
market_closes = self._market_closes.values.astype('datetime64[m]')
minutes_per_day = (market_closes - market_opens).astype(int)
minutes_per_day = (market_closes - market_opens).astype(np.int64)
early_indices = np.where(
minutes_per_day != US_EQUITIES_MINUTES_PER_DAY - 1)[0]
regular_closes = market_opens[early_indices] + timedelta64(
+13 -10
View File
@@ -45,7 +45,8 @@ from zipline.utils.tradingcalendar import trading_days
import numpy as np
from numpy import (
float64,
uint32
uint32,
int64,
)
@@ -456,8 +457,9 @@ def make_trade_data_for_asset_info(dates,
sids = asset_info.keys()
date_field = 'day' if frequency == 'daily' else 'dt'
price_sid_deltas = np.arange(len(sids), dtype=float) * price_step_by_sid
price_date_deltas = np.arange(len(dates), dtype=float) * price_step_by_date
price_sid_deltas = np.arange(len(sids), dtype=float64) * price_step_by_sid
price_date_deltas = (np.arange(len(dates), dtype=float64) *
price_step_by_date)
prices = (price_sid_deltas + price_date_deltas[:, None]) + price_start
volume_sid_deltas = np.arange(len(sids)) * volume_step_by_sid
@@ -723,8 +725,9 @@ class DailyBarWriterFromDataFrames(BcolzDailyBarWriter):
return array.astype(uint32)
elif colname == 'day':
nanos_per_second = (1000 * 1000 * 1000)
self.check_uint_safe(arrmax.view(int) / nanos_per_second, colname)
return (array.view(int) / nanos_per_second).astype(uint32)
self.check_uint_safe(arrmax.view(int64) / nanos_per_second,
colname)
return (array.view(int64) / nanos_per_second).astype(uint32)
@staticmethod
def check_uint_safe(value, colname):
@@ -1198,8 +1201,8 @@ def create_mock_adjustments(tempdir, days, splits=None, dividends=None,
'pay_date': np.array([], dtype='datetime64[ns]'),
'record_date': np.array([], dtype='datetime64[ns]'),
'declared_date': np.array([], dtype='datetime64[ns]'),
'amount': np.array([], dtype=float),
'sid': np.array([], dtype=int),
'amount': np.array([], dtype=float64),
'sid': np.array([], dtype=int64),
}
dividends = pd.DataFrame(
data,
@@ -1360,9 +1363,9 @@ def create_empty_splits_mergers_frame():
return pd.DataFrame(
{
# Hackery to make the dtypes correct on an empty frame.
'effective_date': np.array([], dtype=int),
'ratio': np.array([], dtype=float),
'sid': np.array([], dtype=int),
'effective_date': np.array([], dtype=int64),
'ratio': np.array([], dtype=float64),
'sid': np.array([], dtype=int64),
},
index=pd.DatetimeIndex([]),
columns=['effective_date', 'ratio', 'sid'],