mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-14 12:10:24 +08:00
ENH: allows users to specify the cutoff time for data query in blaze
loaders This allows people to set their cutoff time to the time they will actually execute 'before_trading_start'. Currently this is just passed to the constructor of the loader; however, I would like to make this managed by the algorithm simulation runner. This would help keep all of the loaders in sync and lock 'before_trading_start's execution to the time the data is queried for.
This commit is contained in:
@@ -11,10 +11,12 @@
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
from datetime import tzinfo
|
||||
from functools import partial
|
||||
from operator import attrgetter
|
||||
|
||||
from numpy import dtype
|
||||
from pytz import timezone
|
||||
from six import iteritems, string_types, PY3
|
||||
from toolz import valmap, complement, compose
|
||||
import toolz.curried.operator as op
|
||||
@@ -61,6 +63,33 @@ def ensure_dtype(func, argname, arg):
|
||||
)
|
||||
|
||||
|
||||
def ensure_timezone(func, argname, arg):
|
||||
"""Argument preprocessor that converts the input into a tzinfo object.
|
||||
|
||||
Usage
|
||||
-----
|
||||
>>> from zipline.utils.preprocess import preprocess
|
||||
>>> @preprocess(tz=ensure_timezone)
|
||||
... def foo(tz):
|
||||
... return tz
|
||||
>>> foo('utc')
|
||||
<UTC>
|
||||
"""
|
||||
if isinstance(arg, tzinfo):
|
||||
return arg
|
||||
if isinstance(arg, string_types):
|
||||
return timezone(arg)
|
||||
|
||||
raise TypeError(
|
||||
"{func}() couldn't convert argument "
|
||||
"{argname}={arg!r} to a timezone.".format(
|
||||
func=_qualified_name(func),
|
||||
argname=argname,
|
||||
arg=arg,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def expect_dtypes(*_pos, **named):
|
||||
"""
|
||||
Preprocessing decorator that verifies inputs have expected numpy dtypes.
|
||||
|
||||
Reference in New Issue
Block a user