diff --git a/dataset/database.py b/dataset/database.py index c24a1d6..90d87f0 100644 --- a/dataset/database.py +++ b/dataset/database.py @@ -1,8 +1,6 @@ import logging import threading - -import six -from six.moves.urllib.parse import parse_qs, urlparse +from urllib.parse import parse_qs, urlparse from sqlalchemy import create_engine from sqlalchemy.sql import text @@ -182,7 +180,7 @@ class Database(object): table5 = db.create_table('population5', primary_id=False) """ - assert not isinstance(primary_type, six.string_types), \ + assert not isinstance(primary_type, str), \ 'Text-based primary_type support is dropped, use db.types.' table_name = normalize_table_name(table_name) with self.lock: @@ -253,7 +251,7 @@ class Database(object): The returned iterator will yield each result sequentially. """ - if isinstance(query, six.string_types): + if isinstance(query, str): query = text(query) _step = kwargs.pop('_step', QUERY_STEP) rp = self.executable.execute(query, *args, **kwargs) diff --git a/dataset/util.py b/dataset/util.py index b79a607..e7d1d34 100644 --- a/dataset/util.py +++ b/dataset/util.py @@ -1,11 +1,7 @@ -import six from hashlib import sha1 -try: - from collections.abc import Iterable -except ImportError: - from collections import Iterable +from urllib.parse import urlparse from collections import OrderedDict -from six.moves.urllib.parse import urlparse +from collections.abc import Iterable QUERY_STEP = 1000 row_type = OrderedDict @@ -58,13 +54,13 @@ class ResultIter(object): def normalize_column_name(name): """Check if a string is a reasonable thing to use as a column name.""" - if not isinstance(name, six.string_types): + if not isinstance(name, str): raise ValueError('%r is not a valid column name.' % name) # limit to 63 characters name = name.strip()[:63] # column names can be 63 *bytes* max in postgresql - if isinstance(name, six.text_type): + if isinstance(name, str): while len(name.encode('utf-8')) >= 64: name = name[:len(name) - 1] @@ -75,7 +71,7 @@ def normalize_column_name(name): def normalize_table_name(name): """Check if the table name is obviously invalid.""" - if not isinstance(name, six.string_types): + if not isinstance(name, str): raise ValueError("Invalid table name: %r" % name) name = name.strip()[:63] if not len(name): @@ -103,7 +99,7 @@ def ensure_tuple(obj): """Try and make the given argument into a tuple.""" if obj is None: return tuple() - if isinstance(obj, Iterable) and not isinstance(obj, six.string_types): + if isinstance(obj, Iterable) and not isinstance(obj, (str, bytes)): return tuple(obj) return obj, diff --git a/setup.py b/setup.py index 8ee8615..0bbd59b 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( ], keywords='sql sqlalchemy etl loading utility', author='Friedrich Lindenberg, Gregor Aisch, Stefan Wehrmeyer', - author_email='friedrich@pudo.org', + author_email='friedrich.lindenberg@gmail.com', url='http://github.com/pudo/dataset', license='MIT', packages=find_packages(exclude=['ez_setup', 'examples', 'test']), @@ -26,8 +26,7 @@ setup( zip_safe=False, install_requires=[ 'sqlalchemy >= 1.1.2', - 'alembic >= 0.6.2', - 'six >= 1.11.0' + 'alembic >= 0.6.2' ], tests_require=[ 'nose'