Merge branch '1.x'

Conflicts:
	CHANGELOG.rst
	cassandra/decoder.py
This commit is contained in:
Tyler Hobbs
2014-05-09 15:17:56 -05:00
3 changed files with 26 additions and 5 deletions

View File

@@ -1,3 +1,15 @@
2.0.0b2
=======
In Progress
Merged From 1.x
---------------
Bug Fixes
^^^^^^^^^
* Don't strip trailing underscores from column names when using the
named_tuple_factory (PYTHON-56)
2.0.0b1
=======
May 6, 2014

View File

@@ -35,12 +35,20 @@ import logging
log = logging.getLogger(__name__)
NON_ALPHA_REGEX = re.compile('\W')
END_UNDERSCORE_REGEX = re.compile('^_*(\w*[a-zA-Z0-9])_*$')
NON_ALPHA_REGEX = re.compile('[^a-zA-Z0-9]')
START_BADCHAR_REGEX = re.compile('^[^a-zA-Z0-9]*')
END_BADCHAR_REGEX = re.compile('[^a-zA-Z0-9_]*$')
_clean_name_cache = {}
def _clean_column_name(name):
return END_UNDERSCORE_REGEX.sub("\g<1>", NON_ALPHA_REGEX.sub("_", name))
try:
return _clean_name_cache[name]
except KeyError:
clean = NON_ALPHA_REGEX.sub("_", START_BADCHAR_REGEX.sub("", END_BADCHAR_REGEX.sub("", name)))
_clean_name_cache[name] = clean
return clean
def tuple_factory(colnames, rows):

View File

@@ -134,13 +134,14 @@ class TypeTests(unittest.TestCase):
self.assertEqual(cql_typename('org.apache.cassandra.db.marshal.ListType(IntegerType)'), 'list<varint>')
def test_named_tuple_colname_substitution(self):
colnames = ("func(abc)", "[applied]", "func(func(abc))", "foo_bar")
rows = [(1, 2, 3, 4)]
colnames = ("func(abc)", "[applied]", "func(func(abc))", "foo_bar", "foo_bar_")
rows = [(1, 2, 3, 4, 5)]
result = named_tuple_factory(colnames, rows)[0]
self.assertEqual(result[0], result.func_abc)
self.assertEqual(result[1], result.applied)
self.assertEqual(result[2], result.func_func_abc)
self.assertEqual(result[3], result.foo_bar)
self.assertEqual(result[4], result.foo_bar_)
def test_parse_casstype_args(self):
class FooType(CassandraType):