From f3da7d55ef0e344581b09bb38985b72a786ce2fc Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Fri, 25 Nov 2022 13:25:38 -0500 Subject: [PATCH] Go back to hard-coded index field Turns out https://github.com/numba/numba/issues/8622 is real and the suggested `numba.literally` hack doesn't seem to work.. --- piker/data/_pathops.py | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/piker/data/_pathops.py b/piker/data/_pathops.py index dac44a47d0..973b782c3c 100644 --- a/piker/data/_pathops.py +++ b/piker/data/_pathops.py @@ -26,15 +26,20 @@ import msgspec import numpy as np from numpy.lib import recfunctions as rfn -from numba import njit, float64, int64 # , optional -# import pyqtgraph as pg -# from PyQt5 import QtGui -# from PyQt5.QtCore import QLineF, QPointF +from numba import ( + types, + njit, + float64, + int64, + optional, +) +from numba.core.types.misc import StringLiteral +# from numba.extending import as_numba_type from ._sharedmem import ( ShmArray, ) -# from .._profile import pg_profile_enabled, ms_slower_then +from ._source import numba_ohlc_dtype from ._compression import ( ds_m4, ) @@ -514,11 +519,17 @@ def allocate_xy_nd( @staticmethod @njit( - # TODO: for now need to construct this manually for readonly + # NOTE: need to construct this manually for readonly # arrays, see https://github.com/numba/numba/issues/4511 - # ntypes.tuple((float64[:], float64[:], float64[:]))( - # numba_ohlc_dtype[::1], # contiguous + # ( + # types.Array( + # numba_ohlc_dtype, + # 1, + # 'C', + # readonly=True, + # ), # int64, + # types.unicode_type, # optional(float64), # ), nogil=True @@ -527,7 +538,7 @@ def path_arrays_from_ohlc( data: np.ndarray, start: int64, bar_gap: float64 = 0.43, - index_field: str = 'index', + # index_field: str, ) -> tuple[ np.ndarray, @@ -540,8 +551,10 @@ def path_arrays_from_ohlc( ''' size = int(data.shape[0] * 6) + # XXX: see this for why the dtype might have to be defined outside + # the routine. + # https://github.com/numba/numba/issues/4098#issuecomment-493914533 x = np.zeros( - # data, shape=size, dtype=float64, ) @@ -559,7 +572,8 @@ def path_arrays_from_ohlc( high = q['high'] low = q['low'] close = q['close'] - index = float64(q[index_field]) + # index = float64(q[index_field]) + index = float64(q['index']) istart = i * 6 istop = istart + 6 @@ -615,8 +629,8 @@ def format_xy_nd_to_1d( x, y, c = self.path_arrays_from_ohlc( array, start, + # self.index_field, bar_gap=w, - index_field=self.index_field, ) return x, y, c