mirror of
https://github.com/wassname/catalyst.git
synced 2026-09-11 12:00:50 +08:00
BUG: Fixing bitness issues on 32-bit systems
by being explicit with sizes
This commit is contained in:
@@ -1131,15 +1131,15 @@ class TestBeforeTradingStart(TestCase):
|
|||||||
# Mergers and Dividends are not tested, but we need to have these
|
# Mergers and Dividends are not tested, but we need to have these
|
||||||
# anyway
|
# anyway
|
||||||
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
|
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
|
||||||
mergers.effective_date = mergers.effective_date.astype(int)
|
mergers.effective_date = mergers.effective_date.astype(np.int64)
|
||||||
mergers.ratio = mergers.ratio.astype(float)
|
mergers.ratio = mergers.ratio.astype(np.float64)
|
||||||
mergers.sid = mergers.sid.astype(int)
|
mergers.sid = mergers.sid.astype(np.int64)
|
||||||
|
|
||||||
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
|
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
|
||||||
'declared_date', 'pay_date',
|
'declared_date', 'pay_date',
|
||||||
'amount', 'sid'])
|
'amount', 'sid'])
|
||||||
dividends.amount = dividends.amount.astype(float)
|
dividends.amount = dividends.amount.astype(np.float64)
|
||||||
dividends.sid = dividends.sid.astype(int)
|
dividends.sid = dividends.sid.astype(np.int64)
|
||||||
|
|
||||||
adj_writer.write(splits, mergers, dividends)
|
adj_writer.write(splits, mergers, dividends)
|
||||||
|
|
||||||
|
|||||||
@@ -203,15 +203,15 @@ class TestAPIShim(TestCase):
|
|||||||
# Mergers and Dividends are not tested, but we need to have these
|
# Mergers and Dividends are not tested, but we need to have these
|
||||||
# anyway
|
# anyway
|
||||||
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
|
mergers = pd.DataFrame({}, columns=['effective_date', 'ratio', 'sid'])
|
||||||
mergers.effective_date = mergers.effective_date.astype(int)
|
mergers.effective_date = mergers.effective_date.astype(np.int64)
|
||||||
mergers.ratio = mergers.ratio.astype(float)
|
mergers.ratio = mergers.ratio.astype(np.float64)
|
||||||
mergers.sid = mergers.sid.astype(int)
|
mergers.sid = mergers.sid.astype(np.int64)
|
||||||
|
|
||||||
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
|
dividends = pd.DataFrame({}, columns=['ex_date', 'record_date',
|
||||||
'declared_date', 'pay_date',
|
'declared_date', 'pay_date',
|
||||||
'amount', 'sid'])
|
'amount', 'sid'])
|
||||||
dividends.amount = dividends.amount.astype(float)
|
dividends.amount = dividends.amount.astype(np.float64)
|
||||||
dividends.sid = dividends.sid.astype(int)
|
dividends.sid = dividends.sid.astype(np.int64)
|
||||||
|
|
||||||
adj_writer.write(splits, mergers, dividends)
|
adj_writer.write(splits, mergers, dividends)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from numpy import (
|
from numpy import (
|
||||||
float64,
|
float64,
|
||||||
uint32
|
uint32,
|
||||||
|
int64,
|
||||||
)
|
)
|
||||||
from bcolz import ctable
|
from bcolz import ctable
|
||||||
|
|
||||||
@@ -37,8 +38,9 @@ class DailyBarWriterFromDataFrames(BcolzDailyBarWriter):
|
|||||||
return array.astype(uint32)
|
return array.astype(uint32)
|
||||||
elif colname == 'day':
|
elif colname == 'day':
|
||||||
nanos_per_second = (1000 * 1000 * 1000)
|
nanos_per_second = (1000 * 1000 * 1000)
|
||||||
self.check_uint_safe(arrmax.view(int) / nanos_per_second, colname)
|
self.check_uint_safe(arrmax.view(int64) / nanos_per_second,
|
||||||
return (array.view(int) / nanos_per_second).astype(uint32)
|
colname)
|
||||||
|
return (array.view(int64) / nanos_per_second).astype(uint32)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_uint_safe(value, colname):
|
def check_uint_safe(value, colname):
|
||||||
|
|||||||
@@ -163,10 +163,10 @@ class BcolzMinuteBarMetadata(object):
|
|||||||
'first_trading_day': str(self.first_trading_day.date()),
|
'first_trading_day': str(self.first_trading_day.date()),
|
||||||
'market_opens': self.market_opens.values.
|
'market_opens': self.market_opens.values.
|
||||||
astype('datetime64[m]').
|
astype('datetime64[m]').
|
||||||
astype(int).tolist(),
|
astype(np.int64).tolist(),
|
||||||
'market_closes': self.market_closes.values.
|
'market_closes': self.market_closes.values.
|
||||||
astype('datetime64[m]').
|
astype('datetime64[m]').
|
||||||
astype(int).tolist(),
|
astype(np.int64).tolist(),
|
||||||
'ohlc_ratio': self.ohlc_ratio,
|
'ohlc_ratio': self.ohlc_ratio,
|
||||||
}
|
}
|
||||||
with open(self.metadata_path(rootdir), 'w+') as fp:
|
with open(self.metadata_path(rootdir), 'w+') as fp:
|
||||||
@@ -603,10 +603,10 @@ class BcolzMinuteBarReader(object):
|
|||||||
|
|
||||||
self._market_opens = metadata.market_opens
|
self._market_opens = metadata.market_opens
|
||||||
self._market_open_values = metadata.market_opens.values.\
|
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_closes = metadata.market_closes
|
||||||
self._market_close_values = metadata.market_closes.values.\
|
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
|
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_opens = self._market_opens.values.astype('datetime64[m]')
|
||||||
market_closes = self._market_closes.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(
|
early_indices = np.where(
|
||||||
minutes_per_day != US_EQUITIES_MINUTES_PER_DAY - 1)[0]
|
minutes_per_day != US_EQUITIES_MINUTES_PER_DAY - 1)[0]
|
||||||
regular_closes = market_opens[early_indices] + timedelta64(
|
regular_closes = market_opens[early_indices] + timedelta64(
|
||||||
|
|||||||
+13
-10
@@ -45,7 +45,8 @@ from zipline.utils.tradingcalendar import trading_days
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from numpy import (
|
from numpy import (
|
||||||
float64,
|
float64,
|
||||||
uint32
|
uint32,
|
||||||
|
int64,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -456,8 +457,9 @@ def make_trade_data_for_asset_info(dates,
|
|||||||
sids = asset_info.keys()
|
sids = asset_info.keys()
|
||||||
date_field = 'day' if frequency == 'daily' else 'dt'
|
date_field = 'day' if frequency == 'daily' else 'dt'
|
||||||
|
|
||||||
price_sid_deltas = np.arange(len(sids), dtype=float) * price_step_by_sid
|
price_sid_deltas = np.arange(len(sids), dtype=float64) * price_step_by_sid
|
||||||
price_date_deltas = np.arange(len(dates), dtype=float) * price_step_by_date
|
price_date_deltas = (np.arange(len(dates), dtype=float64) *
|
||||||
|
price_step_by_date)
|
||||||
prices = (price_sid_deltas + price_date_deltas[:, None]) + price_start
|
prices = (price_sid_deltas + price_date_deltas[:, None]) + price_start
|
||||||
|
|
||||||
volume_sid_deltas = np.arange(len(sids)) * volume_step_by_sid
|
volume_sid_deltas = np.arange(len(sids)) * volume_step_by_sid
|
||||||
@@ -723,8 +725,9 @@ class DailyBarWriterFromDataFrames(BcolzDailyBarWriter):
|
|||||||
return array.astype(uint32)
|
return array.astype(uint32)
|
||||||
elif colname == 'day':
|
elif colname == 'day':
|
||||||
nanos_per_second = (1000 * 1000 * 1000)
|
nanos_per_second = (1000 * 1000 * 1000)
|
||||||
self.check_uint_safe(arrmax.view(int) / nanos_per_second, colname)
|
self.check_uint_safe(arrmax.view(int64) / nanos_per_second,
|
||||||
return (array.view(int) / nanos_per_second).astype(uint32)
|
colname)
|
||||||
|
return (array.view(int64) / nanos_per_second).astype(uint32)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_uint_safe(value, colname):
|
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]'),
|
'pay_date': np.array([], dtype='datetime64[ns]'),
|
||||||
'record_date': np.array([], dtype='datetime64[ns]'),
|
'record_date': np.array([], dtype='datetime64[ns]'),
|
||||||
'declared_date': np.array([], dtype='datetime64[ns]'),
|
'declared_date': np.array([], dtype='datetime64[ns]'),
|
||||||
'amount': np.array([], dtype=float),
|
'amount': np.array([], dtype=float64),
|
||||||
'sid': np.array([], dtype=int),
|
'sid': np.array([], dtype=int64),
|
||||||
}
|
}
|
||||||
dividends = pd.DataFrame(
|
dividends = pd.DataFrame(
|
||||||
data,
|
data,
|
||||||
@@ -1360,9 +1363,9 @@ def create_empty_splits_mergers_frame():
|
|||||||
return pd.DataFrame(
|
return pd.DataFrame(
|
||||||
{
|
{
|
||||||
# Hackery to make the dtypes correct on an empty frame.
|
# Hackery to make the dtypes correct on an empty frame.
|
||||||
'effective_date': np.array([], dtype=int),
|
'effective_date': np.array([], dtype=int64),
|
||||||
'ratio': np.array([], dtype=float),
|
'ratio': np.array([], dtype=float64),
|
||||||
'sid': np.array([], dtype=int),
|
'sid': np.array([], dtype=int64),
|
||||||
},
|
},
|
||||||
index=pd.DatetimeIndex([]),
|
index=pd.DatetimeIndex([]),
|
||||||
columns=['effective_date', 'ratio', 'sid'],
|
columns=['effective_date', 'ratio', 'sid'],
|
||||||
|
|||||||
Reference in New Issue
Block a user