Merge branch '1.x'
Conflicts: CHANGELOG.rst cassandra/decoder.py
This commit is contained in:
@@ -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
|
2.0.0b1
|
||||||
=======
|
=======
|
||||||
May 6, 2014
|
May 6, 2014
|
||||||
|
|||||||
@@ -35,12 +35,20 @@ import logging
|
|||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
NON_ALPHA_REGEX = re.compile('\W')
|
NON_ALPHA_REGEX = re.compile('[^a-zA-Z0-9]')
|
||||||
END_UNDERSCORE_REGEX = re.compile('^_*(\w*[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):
|
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):
|
def tuple_factory(colnames, rows):
|
||||||
|
|||||||
@@ -134,13 +134,14 @@ class TypeTests(unittest.TestCase):
|
|||||||
self.assertEqual(cql_typename('org.apache.cassandra.db.marshal.ListType(IntegerType)'), 'list<varint>')
|
self.assertEqual(cql_typename('org.apache.cassandra.db.marshal.ListType(IntegerType)'), 'list<varint>')
|
||||||
|
|
||||||
def test_named_tuple_colname_substitution(self):
|
def test_named_tuple_colname_substitution(self):
|
||||||
colnames = ("func(abc)", "[applied]", "func(func(abc))", "foo_bar")
|
colnames = ("func(abc)", "[applied]", "func(func(abc))", "foo_bar", "foo_bar_")
|
||||||
rows = [(1, 2, 3, 4)]
|
rows = [(1, 2, 3, 4, 5)]
|
||||||
result = named_tuple_factory(colnames, rows)[0]
|
result = named_tuple_factory(colnames, rows)[0]
|
||||||
self.assertEqual(result[0], result.func_abc)
|
self.assertEqual(result[0], result.func_abc)
|
||||||
self.assertEqual(result[1], result.applied)
|
self.assertEqual(result[1], result.applied)
|
||||||
self.assertEqual(result[2], result.func_func_abc)
|
self.assertEqual(result[2], result.func_func_abc)
|
||||||
self.assertEqual(result[3], result.foo_bar)
|
self.assertEqual(result[3], result.foo_bar)
|
||||||
|
self.assertEqual(result[4], result.foo_bar_)
|
||||||
|
|
||||||
def test_parse_casstype_args(self):
|
def test_parse_casstype_args(self):
|
||||||
class FooType(CassandraType):
|
class FooType(CassandraType):
|
||||||
|
|||||||
Reference in New Issue
Block a user