From 671d3c0a6ba921f2a6cab749a632fe2f9cd514ee Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Fri, 7 Jun 2013 11:24:38 -0400 Subject: [PATCH] Be more strict about what kwargs are accepted in ArrayBase. --- loopy/kernel/array.py | 9 ++++++++- loopy/kernel/data.py | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/loopy/kernel/array.py b/loopy/kernel/array.py index ad6bacee2..e12bf77d5 100644 --- a/loopy/kernel/array.py +++ b/loopy/kernel/array.py @@ -184,6 +184,7 @@ def convert_computed_to_fixed_dim_tags(name, num_user_axes, num_target_axes, # # - target axes are implementation facing. Normal in-memory arrays have one. # 3D images have three. + import loopy as lp # {{{ pick apart arg dim tags into computed, fixed and vec @@ -248,7 +249,7 @@ def convert_computed_to_fixed_dim_tags(name, num_user_axes, num_target_axes, new_dim_tags[i] = FixedStrideArrayDimTag(stride_so_far, target_axis=dim_tag.target_axis) - if shape is None: + if shape is None or shape is lp.auto: # unable to normalize without known shape return None @@ -316,6 +317,8 @@ class ArrayBase(Record): # Note that order may also wind up in attributes, if the # number of dimensions has not yet been determined. + allowed_extra_kwargs = [] + def __init__(self, name, dtype=None, shape=None, dim_tags=None, offset=0, strides=None, order=None, **kwargs): """ @@ -385,6 +388,10 @@ class ArrayBase(Record): whether the passed arrays have offsets or not. """ + for kwarg_name in kwargs: + if kwarg_name not in self.allowed_extra_kwargs: + raise TypeError("invalid kwarg: %s" % kwarg_name) + import loopy as lp if dtype is not None and dtype is not lp.auto: diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py index 60cba66f0..ee9b07bdb 100644 --- a/loopy/kernel/data.py +++ b/loopy/kernel/data.py @@ -236,6 +236,12 @@ class TemporaryVariable(ArrayBase): min_target_axes = 0 max_target_axes = 1 + allowed_extra_kwargs = [ + "storage_shape", + "base_indices", + "is_local" + ] + def __init__(self, name, dtype, shape, is_local, dim_tags=None, offset=0, strides=None, order=None, base_indices=None, storage_shape=None): -- GitLab