From ed50403a2b1abfdb89504f877be8bb16ab481d01 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Jan 2015 16:42:07 +0000 Subject: [PATCH] closes #309 --- petl/test/util/test_base.py | 21 +++++++++++++++++++++ petl/transform/regex.py | 2 +- petl/transform/selects.py | 1 - petl/util/base.py | 6 +++--- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/petl/test/util/test_base.py b/petl/test/util/test_base.py index cb8b55a8..b4a276d0 100644 --- a/petl/test/util/test_base.py +++ b/petl/test/util/test_base.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, print_function, division +from petl.errors import ArgumentError from petl.test.helpers import ieq, eq_ from petl.compat import next from petl.util.base import header, fieldnames, data, dicts, records, \ @@ -86,6 +87,26 @@ def test_records(): eq_(2, o.bar) +def test_records_errors(): + table = (('foo', 'bar'), ('a', 1), ('b', 2)) + actual = records(table) + # access items + it = iter(actual) + o = next(it) + try: + o['baz'] + except ArgumentError: + pass + else: + raise Exception('expected exception not raised') + try: + o.baz + except ArgumentError: + pass + else: + raise Exception('expected exception not raised') + + def test_records_unevenrows(): table = (('foo', 'bar'), ('a', 1, True), ('b',)) actual = records(table) diff --git a/petl/transform/regex.py b/petl/transform/regex.py index d331c7e3..a80a076c 100644 --- a/petl/transform/regex.py +++ b/petl/transform/regex.py @@ -3,7 +3,7 @@ import re import operator -from petl.compat import next, string_types, text_type +from petl.compat import next, text_type from petl.errors import ArgumentError diff --git a/petl/transform/selects.py b/petl/transform/selects.py index 5e5f3d8e..63a00312 100644 --- a/petl/transform/selects.py +++ b/petl/transform/selects.py @@ -2,7 +2,6 @@ import operator -import re from petl.compat import next, string_types, callable, text_type from petl.comparison import Comparable diff --git a/petl/util/base.py b/petl/util/base.py index 8765ffac..cc7d7372 100644 --- a/petl/util/base.py +++ b/petl/util/base.py @@ -12,7 +12,7 @@ next, string_types, text_type -from petl.errors import FieldSelectionError +from petl.errors import FieldSelectionError, ArgumentError from petl.comparison import comparable_itemgetter @@ -563,7 +563,7 @@ def __getitem__(self, f): idx = self.flds.index(f) else: raise ArgumentError('item ' + repr(f) + - ' not in fields ' + repr(self.flds)) + ' not in fields ' + repr(self.flds)) try: return super(Record, self).__getitem__(idx) except IndexError: # handle short rows @@ -577,7 +577,7 @@ def __getattr__(self, f): return self.missing else: raise ArgumentError('item ' + repr(f) + - ' not in fields ' + repr(self.flds)) + ' not in fields ' + repr(self.flds)) def records(table, *sliceargs, **kwargs):