File python-pybtex-no-six.patch of Package python-pybtex

From 6afabe217af95995d595de493cf9bc5120f85ca7 Mon Sep 17 00:00:00 2001
From: Andrey Golovizin <ag@sologoc.com>
Date: Tue, 19 Jan 2021 18:37:54 +0100
Subject: [PATCH] Drop six

---
 docs/source/api/parsing.rst              |   2 -
 docs/source/api/styles.rst               |   2 -
 pybtex/backends/__init__.py              |   4 +-
 pybtex/bibtex/builtins.py                |   4 +-
 pybtex/bibtex/interpreter.py             |   7 +-
 pybtex/bibtex/utils.py                   |   3 +-
 pybtex/charwidths/make_charwidths.py     |   6 +-
 pybtex/cmdline.py                        |   4 +-
 pybtex/database/__init__.py              |  17 ++-
 pybtex/database/input/__init__.py        |   5 +-
 pybtex/database/input/bibtex.py          |   4 +-
 pybtex/database/input/bibyaml.py         |   3 +-
 pybtex/database/output/bibtexml.py       |   4 +-
 pybtex/errors.py                         |   3 +-
 pybtex/exceptions.py                     |   8 +-
 pybtex/richtext.py                       |  47 ++++-----
 pybtex/style/labels/alpha.py             |   3 +-
 pybtex/style/labels/number.py            |   3 +-
 pybtex/style/template.py                 |  30 +++---
 pybtex/utils.py                          |   2 +-
 requirements.txt                         |   4 +-
 setup.py                                 |   2 +-
 tests/bibtex_parser_test.py              |   9 +-
 tests/bst_parser_test/bst_parser_test.py |   2 +-
 tests/database_test/database_test.py     |   5 +-
 tests/richtext_test.py                   | 129 +++++++++++------------
 26 files changed, 139 insertions(+), 173 deletions(-)

Index: pybtex-0.24.0/docs/source/api/parsing.rst
===================================================================
--- pybtex-0.24.0.orig/docs/source/api/parsing.rst
+++ pybtex-0.24.0/docs/source/api/parsing.rst
@@ -7,8 +7,6 @@ Reading and writing bibliography data
 
     from __future__ import unicode_literals, print_function
 
-    import six
-
     from pybtex.database import BibliographyData, Entry, Person, parse_string
 
 
Index: pybtex-0.24.0/docs/source/api/styles.rst
===================================================================
--- pybtex-0.24.0.orig/docs/source/api/styles.rst
+++ pybtex-0.24.0/docs/source/api/styles.rst
@@ -7,8 +7,6 @@ Designing styles
 
     from __future__ import unicode_literals, print_function
 
-    import six
-
     from pybtex.richtext import Text, String, Tag, HRef, Protected, Symbol, nbsp, textutils
 
 
Index: pybtex-0.24.0/pybtex/backends/__init__.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/backends/__init__.py
+++ pybtex-0.24.0/pybtex/backends/__init__.py
@@ -20,8 +20,6 @@ from __future__ import unicode_literals
 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-import six
-
 import pybtex.io
 from pybtex.plugin import Plugin
 
@@ -42,7 +40,7 @@ class BaseBackend(Plugin):
     tags[u'tt']          : typewrite text, not semantic
     """
 
-    RenderType = six.string_types  #: the result of render and render_sequence
+    RenderType = str  #: the result of render and render_sequence
     default_suffix = None  #: the default suffix for an output file
 
     def __init__(self, encoding=None):
Index: pybtex-0.24.0/pybtex/bibtex/builtins.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/bibtex/builtins.py
+++ pybtex-0.24.0/pybtex/bibtex/builtins.py
@@ -27,8 +27,6 @@ from __future__ import print_function, u
 
 from functools import update_wrapper
 
-import six
-
 import pybtex.io
 from pybtex.bibtex import utils
 from pybtex.bibtex.exceptions import BibTeXError
@@ -208,7 +206,7 @@ def if_(i):
 def int_to_chr(i):
     n = i.pop()
     try:
-        char = six.unichr(n)
+        char = chr(n)
     except ValueError:
         raise BibTeXError('%i passed to int.to.chr$', n)
     i.push(char)
Index: pybtex-0.24.0/pybtex/bibtex/interpreter.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/bibtex/interpreter.py
+++ pybtex-0.24.0/pybtex/bibtex/interpreter.py
@@ -23,7 +23,6 @@ from __future__ import print_function, u
 
 from collections import defaultdict
 
-import six
 from pybtex.bibtex.builtins import builtins, print_warning
 from pybtex.bibtex.exceptions import BibTeXError
 from pybtex.bibtex.utils import wrap
@@ -87,7 +86,7 @@ class EntryInteger(Integer, EntryVariabl
 
 
 class String(Variable):
-    value_type = six.string_types
+    value_type = str
     default = ''
 
 
@@ -134,7 +133,7 @@ class Crossref(Field):
 
 
 class Identifier(Variable):
-    value_type = six.string_types
+    value_type = str
     def execute(self, interpreter):
         try:
             f = interpreter.vars[self.value()]
@@ -144,7 +143,7 @@ class Identifier(Variable):
 
 
 class QuotedVar(Variable):
-    value_type = six.string_types
+    value_type = str
     def execute(self, interpreter):
         try:
             var = interpreter.vars[self.value()]
Index: pybtex-0.24.0/pybtex/bibtex/utils.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/bibtex/utils.py
+++ pybtex-0.24.0/pybtex/bibtex/utils.py
@@ -23,7 +23,6 @@ from __future__ import absolute_import,
 
 import re
 
-import six
 from pybtex.bibtex.exceptions import BibTeXError
 from pybtex.py3compat import fix_unicode_literals_in_doctest
 from pybtex.utils import pairwise
@@ -147,7 +146,7 @@ class BibTeXString(object):
         return ''.join(self.traverse(open=lambda string: '{', close=lambda string: '}'))
 
     def inner_string(self):
-        return ''.join(six.text_type(child) for child in self.contents)
+        return ''.join(str(child) for child in self.contents)
 
 
 def change_case(string, mode):
Index: pybtex-0.24.0/pybtex/charwidths/make_charwidths.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/charwidths/make_charwidths.py
+++ pybtex-0.24.0/pybtex/charwidths/make_charwidths.py
@@ -28,8 +28,6 @@ Make a table of character widths to use
 
 from __future__ import print_function, unicode_literals
 
-import six
-
 
 def make_table(font_filename, output):
     import sys
@@ -77,9 +75,9 @@ def iter_charwidths(font_face):
     charcode, gindex = font_face.get_first_char()
     while gindex:
         font_face.load_glyph(gindex, FT_LOAD_NO_SCALE)
-        yield six.unichr(charcode), font_face.glyph.metrics.horiAdvance
+        yield unichr(charcode), font_face.glyph.metrics.horiAdvance
         charcode, gindex = font_face.get_next_char(charcode, gindex)
-        
+
 
 bibtex_widths = {
     ' ': 278,
Index: pybtex-0.24.0/pybtex/cmdline.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/cmdline.py
+++ pybtex-0.24.0/pybtex/cmdline.py
@@ -26,8 +26,6 @@ from __future__ import unicode_literals
 import optparse
 import sys
 
-import six
-
 from pybtex import __version__, errors
 from pybtex.plugin import enumerate_plugin_names, find_plugin
 from pybtex.textutils import add_period
@@ -218,7 +216,7 @@ class CommandLine(object):
 
         try:
             # all legacy options are ASCII-only
-            unicode_arg = arg if isinstance(arg, six.text_type) else arg.decode('ASCII')
+            unicode_arg = arg if isinstance(arg, str) else arg.decode('ASCII')
         except UnicodeDecodeError:
             return arg
 
Index: pybtex-0.24.0/pybtex/database/__init__.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/database/__init__.py
+++ pybtex-0.24.0/pybtex/database/__init__.py
@@ -29,7 +29,6 @@ try:
 except ImportError:
     from collections import Mapping
 
-import six
 import textwrap
 
 from pybtex.exceptions import PybtexError
@@ -341,7 +340,7 @@ class BibliographyData(object):
 
         .. versionadded:: 0.19
         """
-        if isinstance(file, six.string_types):
+        if isinstance(file, str):
             filename = file
         else:
             filename = getattr(file, 'name', None)
@@ -476,7 +475,7 @@ class Entry(object):
 
     def _find_person_field(self, role):
         persons = self.persons[role]
-        return ' and '.join(six.text_type(person) for person in persons)
+        return ' and '.join(str(person) for person in persons)
 
     def _find_crossref_field(self, name, bib_data):
         if bib_data is None or 'crossref' not in self.fields:
@@ -655,9 +654,9 @@ class Person(object):
         [u'Dixit']
         >>> print(p.lineage_names)
         []
-        >>> print(six.text_type(p))
+        >>> print(str(p))
         Dixit, Avinash K.
-        >>> p == Person(six.text_type(p))
+        >>> p == Person(str(p))
         True
         >>> p = Person('Dixit, Jr, Avinash K. ')
         >>> print(p.first_names)
@@ -670,9 +669,9 @@ class Person(object):
         [u'Dixit']
         >>> print(p.lineage_names)
         [u'Jr']
-        >>> print(six.text_type(p))
+        >>> print(str(p))
         Dixit, Jr, Avinash K.
-        >>> p == Person(six.text_type(p))
+        >>> p == Person(str(p))
         True
 
         >>> p = Person('abc')
@@ -788,7 +787,7 @@ class Person(object):
         return ', '.join(part for part in (von_last, jr, first) if part)
 
     def __repr__(self):
-        return 'Person({0})'.format(repr(six.text_type(self)))
+        return 'Person({0})'.format(repr(str(self)))
 
     def get_part_as_text(self, type):
         names = getattr(self, type + '_names')
@@ -919,7 +918,7 @@ def parse_file(file, bib_format=None, **
     .. versionadded:: 0.19
     """
 
-    if isinstance(file, six.string_types):
+    if isinstance(file, str):
         filename = file
     else:
         filename = getattr(file, 'name', None)
Index: pybtex-0.24.0/pybtex/database/input/__init__.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/database/input/__init__.py
+++ pybtex-0.24.0/pybtex/database/input/__init__.py
@@ -29,7 +29,6 @@ import pybtex.io
 from pybtex.plugin import Plugin
 from pybtex.database import BibliographyData
 from pybtex.exceptions import PybtexError
-import six
 
 
 class BaseParser(Plugin):
@@ -53,7 +52,7 @@ class BaseParser(Plugin):
             try:
                 self.parse_stream(f)
             except UnicodeDecodeError as e:
-                raise PybtexError(six.text_type(e), filename=self.filename)
+                raise PybtexError(str(e), filename=self.filename)
         return self.data
 
     def parse_files(self, base_filenames, file_suffix=None):
@@ -71,7 +70,7 @@ class BaseParser(Plugin):
             return self.parse_bytes(value.encode(self.encoding))
 
     def parse_bytes(self, value):
-        if isinstance(value, six.text_type):
+        if isinstance(value, str):
             msg = 'bytes expected. Use {0}.parse_bytes() to parse unicode strings'.format(type(self).__name__)
             raise ValueError(msg)
         if self.unicode_io:
Index: pybtex-0.24.0/pybtex/database/input/bibtex.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/database/input/bibtex.py
+++ pybtex-0.24.0/pybtex/database/input/bibtex.py
@@ -54,7 +54,7 @@ True
 >>> rief97b = bib_data.entries['rief97b']
 >>> authors = rief97b.persons['author']
 >>> for author in authors:
-...     print(six.text_type(author))
+...     print(str(author))
 Rief, Matthias
 Gautel, Mathias
 Oesterhelt, Filipp
@@ -73,8 +73,6 @@ from __future__ import unicode_literals
 import re
 from string import ascii_letters, digits
 
-import six
-
 from pybtex import textutils
 from pybtex.bibtex.utils import split_name_list
 from pybtex.database import Entry, Person, BibliographyDataError
Index: pybtex-0.24.0/pybtex/database/input/bibyaml.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/database/input/bibyaml.py
+++ pybtex-0.24.0/pybtex/database/input/bibyaml.py
@@ -23,7 +23,6 @@ from __future__ import absolute_import,
 
 from collections import OrderedDict
 
-import six
 import yaml
 from pybtex.database import Entry, Person
 from pybtex.database.input import BaseParser
@@ -97,5 +96,5 @@ class Parser(BaseParser):
             elif key_lower == 'type':
                 pass
             else:
-                bib_entry.fields[key] = six.text_type(value)
+                bib_entry.fields[key] = str(value)
         return bib_entry
Index: pybtex-0.24.0/pybtex/database/output/bibtexml.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/database/output/bibtexml.py
+++ pybtex-0.24.0/pybtex/database/output/bibtexml.py
@@ -25,8 +25,6 @@ import io
 from xml.sax.saxutils import XMLGenerator
 from xml.sax.xmlreader import AttributesImpl
 
-import six
-
 from pybtex.database.output import BaseWriter
 
 
@@ -95,7 +93,7 @@ class Writer(BaseWriter):
         >>> from pybtex.database import BibliographyData
         >>> data = BibliographyData()
         >>> unicode_xml = Writer().to_string(data)
-        >>> isinstance(unicode_xml, six.text_type)
+        >>> isinstance(unicode_xml, str)
         True
         >>> print(unicode_xml)
         <bibtex:file xmlns:bibtex="http://bibtexml.sf.net/">
Index: pybtex-0.24.0/pybtex/errors.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/errors.py
+++ pybtex-0.24.0/pybtex/errors.py
@@ -24,7 +24,6 @@ from __future__ import absolute_import,
 from contextlib import contextmanager
 
 import pybtex.io
-import six
 
 strict = True
 error_code = 0
@@ -53,7 +52,7 @@ def format_error(exception, prefix='ERRO
     context = exception.get_context()
     if context:
         lines += (context.splitlines())
-    lines.append(u'{0}{1}'.format(prefix, six.text_type(exception)))
+    lines.append(u'{0}{1}'.format(prefix, str(exception)))
     filename = exception.get_filename()
     if filename:
         lines = (
Index: pybtex-0.24.0/pybtex/exceptions.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/exceptions.py
+++ pybtex-0.24.0/pybtex/exceptions.py
@@ -23,8 +23,6 @@ from __future__ import absolute_import,
 
 import sys
 
-import six
-
 
 class PybtexError(Exception):
     def __init__(self, message, filename=None):
@@ -37,14 +35,14 @@ class PybtexError(Exception):
 
     def get_filename(self):
         """Return filename, if relevant."""
-        if self.filename is None or isinstance(self.filename, six.text_type):
+        if self.filename is None or isinstance(self.filename, str):
             return self.filename
         else:
             from .io import _decode_filename
             return _decode_filename(self.filename, errors='replace')
 
     def __eq__(self, other):
-        return six.text_type(self) == six.text_type(other)
+        return str(self) == str(other)
 
     def __hash__(self):
-        return hash(six.text_type(self))
+        return hash(str(self))
Index: pybtex-0.24.0/pybtex/richtext.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/richtext.py
+++ pybtex-0.24.0/pybtex/richtext.py
@@ -26,35 +26,35 @@ Usage:
 >>> t = Text('this ', 'is a ', Tag('em', 'very'), Text(' rich', ' text'))
 >>> print(t.render_as('latex'))
 this is a \emph{very} rich text
->>> print(six.text_type(t))
+>>> print(str(t))
 this is a very rich text
 >>> t = t.capitalize().add_period()
 >>> print(t.render_as('latex'))
 This is a \emph{very} rich text.
->>> print(six.text_type(t))
+>>> print(str(t))
 This is a very rich text.
 >>> print(Symbol('ndash').render_as('latex'))
 --
 >>> t = Text('Some ', Tag('em', Text('nested ', Tag('tt', 'Text', Text(' objects')))), '.')
 >>> print(t.render_as('latex'))
 Some \emph{nested \texttt{Text objects}}.
->>> print(six.text_type(t))
+>>> print(str(t))
 Some nested Text objects.
 >>> t = t.upper()
 >>> print(t.render_as('latex'))
 SOME \emph{NESTED \texttt{TEXT OBJECTS}}.
->>> print(six.text_type(t))
+>>> print(str(t))
 SOME NESTED TEXT OBJECTS.
 
 >>> t = Text(', ').join(['one', 'two', Tag('em', 'three')])
 >>> print(t.render_as('latex'))
 one, two, \emph{three}
->>> print(six.text_type(t))
+>>> print(str(t))
 one, two, three
 >>> t = Text(Symbol('nbsp')).join(['one', 'two', Tag('em', 'three')])
 >>> print(t.render_as('latex'))
 one~two~\emph{three}
->>> print(six.text_type(t))
+>>> print(str(t))
 one<nbsp>two<nbsp>three
 """
 from __future__ import absolute_import, unicode_literals
@@ -63,7 +63,6 @@ import itertools
 import warnings
 from abc import ABCMeta, abstractmethod
 
-import six
 from pybtex import textutils
 from pybtex.utils import collect_iterable, deprecated
 from pybtex import py3compat
@@ -86,7 +85,7 @@ def str_repr(string):
 
 
 def ensure_text(value):
-    if isinstance(value, six.string_types):
+    if isinstance(value, str):
         return String(value)
     elif isinstance(value, BaseText):
         return value
@@ -152,9 +151,9 @@ class BaseText(object):
         """Join a list using this text (like string.join)
 
         >>> letters = ['a', 'b', 'c']
-        >>> print(six.text_type(String('-').join(letters)))
+        >>> print(str(String('-').join(letters)))
         a-b-c
-        >>> print(six.text_type(String('-').join(iter(letters))))
+        >>> print(str(String('-').join(iter(letters))))
         a-b-c
         """
 
@@ -202,11 +201,11 @@ class BaseText(object):
         Add a period to the end of text, if the last character is not ".", "!" or "?".
 
         >>> text = Text("That's all, folks")
-        >>> print(six.text_type(text.add_period()))
+        >>> print(str(text.add_period()))
         That's all, folks.
 
         >>> text = Text("That's all, folks!")
-        >>> print(six.text_type(text.add_period()))
+        >>> print(str(text.add_period()))
         That's all, folks!
 
         """
@@ -343,7 +342,7 @@ class BaseMultipartText(BaseText):
         self.length = sum(len(part) for part in self.parts)
 
     def __str__(self):
-        return ''.join(six.text_type(part) for part in self.parts)
+        return ''.join(str(part) for part in self.parts)
 
     def __eq__(self, other):
         """
@@ -390,7 +389,7 @@ class BaseMultipartText(BaseText):
         False
 
         """
-        if not isinstance(item, six.string_types):
+        if not isinstance(item, str):
             raise TypeError(item)
         return not item or any(part.__contains__(item) for part in self.parts)
 
@@ -405,7 +404,7 @@ class BaseMultipartText(BaseText):
         Text(Tag('em', '!'))
         """
 
-        if isinstance(key, six.integer_types):
+        if isinstance(key, int):
             start = key
             end = None
         elif isinstance(key, slice):
@@ -628,7 +627,7 @@ class BaseMultipartText(BaseText):
 
     @deprecated('0.19', 'use __unicode__() instead')
     def plaintext(self):
-        return six.text_type(self)
+        return str(self)
 
     @deprecated('0.19')
     def enumerate(self):
@@ -709,7 +708,7 @@ class String(BaseText):
         All arguments must be plain unicode strings.
         Arguments are concatenated together.
 
-        >>> print(six.text_type(String('November', ', ', 'December', '.')))
+        >>> print(str(String('November', ', ', 'December', '.')))
         November, December.
         """
 
@@ -719,7 +718,7 @@ class String(BaseText):
         return str_repr(self.value)
 
     def __str__(self):
-        return six.text_type(self.value)
+        return str(self.value)
 
     def __eq__(self, other):
         """
@@ -748,7 +747,7 @@ class String(BaseText):
         if sep is None:
             from .textutils import whitespace_re
             parts = whitespace_re.split(self.value)
-        elif isinstance(sep, six.string_types):
+        elif isinstance(sep, str):
             parts = self.value.split(sep)
         else:
             try:
@@ -789,7 +788,7 @@ class String(BaseText):
 
     @property
     def parts(self):
-        return [six.text_type(self)]
+        return [str(self)]
 
     def _typeinfo(self):
         return String, ()
@@ -847,10 +846,10 @@ class Tag(BaseMultipartText):
         return name
 
     def __init__(self, name, *args):
-        if not isinstance(name, (six.string_types, Text)):
+        if not isinstance(name, (str, Text)):
             raise ValueError(
                 "name must be str or Text (got %s)" % name.__class__.__name__)
-        self.name = self.__check_name(six.text_type(name))
+        self.name = self.__check_name(str(name))
         self.info = self.name,
         super(Tag, self).__init__(*args)
 
@@ -886,10 +885,10 @@ class HRef(BaseMultipartText):
     """
 
     def __init__(self, url, *args):
-        if not isinstance(url, (six.string_types, BaseText)):
+        if not isinstance(url, (str, BaseText)):
             raise ValueError(
                 "url must be str or Text (got %s)" % url.__class__.__name__)
-        self.url = six.text_type(url)
+        self.url = str(url)
         self.info = self.url,
         super(HRef, self).__init__(*args)
 
Index: pybtex-0.24.0/pybtex/style/labels/alpha.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/style/labels/alpha.py
+++ pybtex-0.24.0/pybtex/style/labels/alpha.py
@@ -28,7 +28,6 @@ import re
 import sys
 import unicodedata
 
-import six
 from pybtex.style.labels import BaseLabelStyle
 from pybtex.textutils import abbreviate
 
@@ -160,7 +159,7 @@ class LabelStyle(BaseLabelStyle):
             while namesleft:
                 person = persons[nameptr - 1]
                 if nameptr == numnames:
-                    if six.text_type(person) == "others":
+                    if str(person) == "others":
                         result += "+"
                     else:
                         result += _strip_nonalnum(_abbr(
Index: pybtex-0.24.0/pybtex/style/labels/number.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/style/labels/number.py
+++ pybtex-0.24.0/pybtex/style/labels/number.py
@@ -1,6 +1,5 @@
 from __future__ import absolute_import, unicode_literals
 
-import six
 from pybtex.style.labels import BaseLabelStyle
 
 
@@ -32,4 +31,4 @@ class LabelStyle(BaseLabelStyle):
 
     def format_labels(self, sorted_entries):
         for number, entry in enumerate(sorted_entries):
-            yield six.text_type(number + 1)
+            yield str(number + 1)
Index: pybtex-0.24.0/pybtex/style/template.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/style/template.py
+++ pybtex-0.24.0/pybtex/style/template.py
@@ -36,16 +36,14 @@ Inspired by Brevé -- http://breve.twist
 >>> book_format = sentence(capfirst=True, sep=', ') [
 ...     field('title'), field('year'), optional [field('sdf')]
 ... ]
->>> print(six.text_type(book_format.format_data({'entry': e})))
+>>> print(str(book_format.format_data({'entry': e})))
 The Book, 2000.
->>> print(six.text_type(words ['one', 'two', words ['three', 'four']].format_data(e)))
+>>> print(str(words ['one', 'two', words ['three', 'four']].format_data(e)))
 one two three four
 """
 
 from __future__ import unicode_literals
 
-import  six
-
 from pybtex import richtext
 from pybtex.exceptions import PybtexError
 from pybtex.py3compat import fix_unicode_literals_in_doctest
@@ -159,13 +157,13 @@ def node(f):
 @node
 def join(children, data, sep='', sep2=None, last_sep=None):
     """Join text fragments together.
-    >>> print(six.text_type(join.format()))
+    >>> print(str(join.format()))
     <BLANKLINE>
-    >>> print(six.text_type(join ['a', 'b', 'c', 'd', 'e'].format()))
+    >>> print(str(join ['a', 'b', 'c', 'd', 'e'].format()))
     abcde
-    >>> print(six.text_type(join(sep=', ', sep2=' and ', last_sep=', and ') ['Tom', 'Jerry'].format()))
+    >>> print(str(join(sep=', ', sep2=' and ', last_sep=', and ') ['Tom', 'Jerry'].format()))
     Tom and Jerry
-    >>> print(six.text_type(join(sep=', ', sep2=' and ', last_sep=', and ') ['Billy', 'Willy', 'Dilly'].format()))
+    >>> print(str(join(sep=', ', sep2=' and ', last_sep=', and ') ['Billy', 'Willy', 'Dilly'].format()))
     Billy, Willy, and Dilly
     """
 
@@ -194,15 +192,15 @@ def together(children, data, last_tie=Fa
     """
     Try to keep words together, like BibTeX does.
 
-    >>> print(six.text_type(together ['very', 'long', 'road'].format()))
+    >>> print(str(together ['very', 'long', 'road'].format()))
     very long road
-    >>> print(six.text_type(together(last_tie=True) ['very', 'long', 'road'].format()))
+    >>> print(str(together(last_tie=True) ['very', 'long', 'road'].format()))
     very long<nbsp>road
-    >>> print(six.text_type(together ['a', 'very', 'long', 'road'].format()))
+    >>> print(str(together ['a', 'very', 'long', 'road'].format()))
     a<nbsp>very long road
-    >>> print(six.text_type(together ['chapter', '8'].format()))
+    >>> print(str(together ['chapter', '8'].format()))
     chapter<nbsp>8
-    >>> print(six.text_type(together ['chapter', '666'].format()))
+    >>> print(str(together ['chapter', '666'].format()))
     chapter 666
     """
     from pybtex.textutils import tie_or_space
@@ -226,11 +224,11 @@ def together(children, data, last_tie=Fa
 def sentence(children, data, capfirst=False, capitalize=False, add_period=True, sep=', '):
     """Join text fragments, capitalyze the first letter, add a period to the end.
 
-    >>> print(six.text_type(sentence.format()))
+    >>> print(str(sentence.format()))
     <BLANKLINE>
-    >>> print(six.text_type(sentence(capitalize=True, sep=' ') ['mary', 'had', 'a', 'little', 'lamb'].format()))
+    >>> print(str(sentence(capitalize=True, sep=' ') ['mary', 'had', 'a', 'little', 'lamb'].format()))
     Mary had a little lamb.
-    >>> print(six.text_type(sentence(capitalize=False, add_period=False) ['uno', 'dos', 'tres'].format()))
+    >>> print(str(sentence(capitalize=False, add_period=False) ['uno', 'dos', 'tres'].format()))
     uno, dos, tres
     """
 
Index: pybtex-0.24.0/pybtex/utils.py
===================================================================
--- pybtex-0.24.0.orig/pybtex/utils.py
+++ pybtex-0.24.0/pybtex/utils.py
@@ -32,7 +32,7 @@ try:
 except ImportError:
     from collections import MutableMapping, MutableSet, Sequence
 
-from six.moves import zip_longest
+from itertools import zip_longest
 
 from .py3compat import fix_unicode_literals_in_doctest
 
Index: pybtex-0.24.0/setup.py
===================================================================
--- pybtex-0.24.0.orig/setup.py
+++ pybtex-0.24.0/setup.py
@@ -56,7 +56,7 @@ class Sdist(sdist):
 ROOT = os.path.abspath(os.path.dirname(__file__))
 README = open(os.path.join(ROOT, 'README')).read()
 
-install_requires = ['PyYAML>=3.01', 'latexcodec>=1.0.4', 'six']
+install_requires = ['PyYAML>=3.01', 'latexcodec>=1.0.4']
 extras_require = {
     'test': ['pytest'],
 }
Index: pybtex-0.24.0/tests/bibtex_parser_test.py
===================================================================
--- pybtex-0.24.0.orig/tests/bibtex_parser_test.py
+++ pybtex-0.24.0/tests/bibtex_parser_test.py
@@ -33,8 +33,7 @@ from __future__ import absolute_import,
 
 from unittest import TestCase
 
-import six
-from six.moves import zip_longest
+from itertools import zip_longest
 
 from pybtex.database import BibliographyData, Entry, Person
 from pybtex.database.input.bibtex import Parser
@@ -68,9 +67,9 @@ class ParserTest(object):
         correct_result = self.correct_result
         assert result == correct_result
         for error, correct_error in zip_longest(parser.errors, self.errors):
-            actual_error = six.text_type(error)
+            actual_error = str(error)
             assert actual_error == correct_error
-    
+
 
 class EmptyDataTest(ParserTest, TestCase):
     input_string = u''
@@ -541,4 +540,4 @@ class DuplicatePersonFieldTest(ParserTes
     )
     errors = [
         'entry with key Me2009 has a duplicate AUTHoR field',
-    ]
\ No newline at end of file
+    ]
Index: pybtex-0.24.0/tests/bst_parser_test/bst_parser_test.py
===================================================================
--- pybtex-0.24.0.orig/tests/bst_parser_test/bst_parser_test.py
+++ pybtex-0.24.0/tests/bst_parser_test/bst_parser_test.py
@@ -23,7 +23,7 @@
 from __future__ import unicode_literals
 
 import pytest
-from six.moves import zip_longest
+from itertools import zip_longest
 
 from pybtex.bibtex import bst
 from ..utils import get_data
Index: pybtex-0.24.0/tests/database_test/database_test.py
===================================================================
--- pybtex-0.24.0.orig/tests/database_test/database_test.py
+++ pybtex-0.24.0/tests/database_test/database_test.py
@@ -27,7 +27,6 @@ from abc import ABCMeta, abstractmethod
 from copy import deepcopy
 from io import BytesIO, TextIOWrapper
 
-import six
 import pytest
 from pybtex.database import parse_bytes, parse_string, BibliographyData, Entry
 from pybtex.plugin import find_plugin
@@ -84,7 +83,7 @@ class PybtexStreamIO(PybtexDatabaseIO):
 class PybtexStringIO(PybtexDatabaseIO):
     def serialize(self, bib_data):
         result = bib_data.to_string(self.bib_format)
-        assert isinstance(result, six.text_type)
+        assert isinstance(result, str)
         return result
 
     def deserialize(self, string):
@@ -105,7 +104,7 @@ class PybtexEntryStringIO(PybtexDatabase
 
     def serialize(self, bib_data):  # Entry.to_string
         result = bib_data.to_string(self.bib_format)
-        assert isinstance(result, six.text_type)
+        assert isinstance(result, str)
         return result
 
     def deserialize(self, string):  # Entry.from_string
Index: pybtex-0.24.0/tests/richtext_test.py
===================================================================
--- pybtex-0.24.0.orig/tests/richtext_test.py
+++ pybtex-0.24.0/tests/richtext_test.py
@@ -29,7 +29,6 @@ from abc import ABCMeta, abstractmethod
 from unittest import TestCase
 
 import pytest
-import six
 
 from pybtex import textutils
 from pybtex.richtext import HRef, Protected, String, Symbol, Tag, Text, nbsp
@@ -117,13 +116,13 @@ class TextTestMixin(object):
 
 class TestText(TextTestMixin, TestCase):
     def test__init__(self):
-        assert six.text_type(Text('a', '', 'c')) == 'ac'
-        assert six.text_type(Text('a', Text(), 'c')) == 'ac'
+        assert str(Text('a', '', 'c')) == 'ac'
+        assert str(Text('a', Text(), 'c')) == 'ac'
 
         text = Text(Text(), Text('mary ', 'had ', 'a little lamb'))
-        assert six.text_type(text) == 'mary had a little lamb'
+        assert str(text) == 'mary had a little lamb'
 
-        text = six.text_type(Text('a', Text('b', 'c'), Tag('em', 'x'), Symbol('nbsp'), 'd'))
+        text = str(Text('a', Text('b', 'c'), Tag('em', 'x'), Symbol('nbsp'), 'd'))
         assert text == 'abcx<nbsp>d'
 
         with pytest.raises(ValueError):
@@ -151,8 +150,8 @@ class TestText(TextTestMixin, TestCase):
         assert len(Text('Never', ' ', Tag('em', HRef('/', 'Knows'), ' '), 'Best')) == len('Never Knows Best')
 
     def test__str__(self):
-        assert six.text_type(Text()) == ''
-        assert six.text_type(Text(u'Чудаки украшают мир')) == u'Чудаки украшают мир'
+        assert str(Text()) == ''
+        assert str(Text(u'Чудаки украшают мир')) == u'Чудаки украшают мир'
 
     def test__contains__(self):
         text = Text('mary ', 'had ', 'a little lamb')
@@ -165,17 +164,17 @@ class TestText(TextTestMixin, TestCase):
 
     def test_capfirst(self):
         text = Text('dear ', 'Alice')
-        assert six.text_type(text.capfirst()) == 'Dear Alice'
+        assert str(text.capfirst()) == 'Dear Alice'
 
     def test_capitalize(self):
         text = Text('mary ', 'had ', 'a Little Lamb')
-        assert six.text_type(text.capitalize()) == 'Mary had a little lamb'
+        assert str(text.capitalize()) == 'Mary had a little lamb'
 
     def test__add__(self):
         t = Text('a')
-        assert six.text_type(t + 'b') == 'ab'
-        assert six.text_type(t + t) == 'aa'
-        assert six.text_type(t) == 'a'
+        assert str(t + 'b') == 'ab'
+        assert str(t + t) == 'aa'
+        assert str(t) == 'a'
 
     def test__getitem__(self):
         t = Text('123', Text('456', Text('78'), '9'), '0')
@@ -239,11 +238,11 @@ class TestText(TextTestMixin, TestCase):
 
     def test_upper(self):
         text = Text('mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.upper()) == 'MARY HAD A LITTLE LAMB'
+        assert str(text.upper()) == 'MARY HAD A LITTLE LAMB'
 
     def test_lower(self):
         text = Text('mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.lower()) == 'mary had a little lamb'
+        assert str(text.lower()) == 'mary had a little lamb'
 
     def test_startswith(self):
         assert not Text().startswith('.')
@@ -282,10 +281,10 @@ class TestText(TextTestMixin, TestCase):
         assert not Text('ab', Tag('em', '12'), 'ef').isalpha()
 
     def test_join(self):
-        assert six.text_type(Text(' ').join(['a', Text('b c')])) == 'a b c'
-        assert six.text_type(Text(nbsp).join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
-        assert six.text_type(nbsp.join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
-        assert six.text_type(String('-').join(['a', 'b', 'c'])) == 'a-b-c'
+        assert str(Text(' ').join(['a', Text('b c')])) == 'a b c'
+        assert str(Text(nbsp).join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
+        assert str(nbsp.join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
+        assert str(String('-').join(['a', 'b', 'c'])) == 'a-b-c'
         result = Tag('em', ' and ').join(['a', 'b', 'c']).render_as('html')
         assert result == 'a<em> and </em>b<em> and </em>c'
         result = HRef('/', ' and ').join(['a', 'b', 'c']).render_as('html')
@@ -308,10 +307,10 @@ class TestText(TextTestMixin, TestCase):
         assert Text().endswith(('.', '!', '?')) == False
         assert textutils.is_terminated(Text()) == False
 
-        assert six.text_type(Text().add_period()) == ''
+        assert str(Text().add_period()) == ''
 
         text = Text("That's all, folks")
-        assert six.text_type(text.add_period()) == "That's all, folks."
+        assert str(text.add_period()) == "That's all, folks."
 
     def test_render_as(self):
         string = Text(u'Detektivbyrån & friends')
@@ -341,7 +340,7 @@ class TestString(TextTestMixin, TestCase
 
     def test__str__(self):
         val = u'Detektivbyrån'
-        assert six.text_type(String(val)) == val
+        assert str(String(val)) == val
 
     def test__contains__(self):
         assert '' in String()
@@ -358,10 +357,10 @@ class TestString(TextTestMixin, TestCase
         assert String('Python') + String(' 3') != 'Python 3'
         assert String('Python') + String(' 3') == Text('Python 3')
         assert String('A').lower() == String('a')
-        assert six.text_type(String('Python') + String(' ') + String('3')) == 'Python 3'
-        assert six.text_type(String('Python') + Text(' ') + String('3')) == 'Python 3'
-        assert six.text_type(String('Python') + ' ' + '3') == 'Python 3'
-        assert six.text_type(String('Python').append(' 3')) == 'Python 3'
+        assert str(String('Python') + String(' ') + String('3')) == 'Python 3'
+        assert str(String('Python') + Text(' ') + String('3')) == 'Python 3'
+        assert str(String('Python') + ' ' + '3') == 'Python 3'
+        assert str(String('Python').append(' 3')) == 'Python 3'
 
     def test_startswith(self):
         assert not String().startswith('n')
@@ -418,27 +417,27 @@ class TestString(TextTestMixin, TestCase
         assert String(', ').join(['tomatoes', 'cucumbers', 'lemons']) == Text('tomatoes, cucumbers, lemons')
 
     def test_capfirst(self):
-        assert six.text_type(String('').capitalize()) == ''
-        assert six.text_type(String('november december').capitalize()) == 'November december'
-        assert six.text_type(String('November December').capitalize()) == 'November december'
-        assert six.text_type(String('NOVEMBER DECEMBER').capitalize()) == 'November december'
+        assert str(String('').capitalize()) == ''
+        assert str(String('november december').capitalize()) == 'November december'
+        assert str(String('November December').capitalize()) == 'November december'
+        assert str(String('NOVEMBER DECEMBER').capitalize()) == 'November december'
 
     def test_capitalize(self):
-        assert six.text_type(String('').capfirst()) == ''
-        assert six.text_type(String('november').capfirst()) == 'November'
-        assert six.text_type(String('November').capfirst()) == 'November'
-        assert six.text_type(String('november december').capfirst()) == 'November december'
-        assert six.text_type(String('November December').capfirst()) == 'November December'
-        assert six.text_type(String('NOVEMBER DECEMBER').capfirst()) == 'NOVEMBER DECEMBER'
+        assert str(String('').capfirst()) == ''
+        assert str(String('november').capfirst()) == 'November'
+        assert str(String('November').capfirst()) == 'November'
+        assert str(String('november december').capfirst()) == 'November december'
+        assert str(String('November December').capfirst()) == 'November December'
+        assert str(String('NOVEMBER DECEMBER').capfirst()) == 'NOVEMBER DECEMBER'
 
     def test_add_period(self):
-        assert six.text_type(String('').add_period()) == ''
-        assert six.text_type(String('').add_period('!')) == ''
-        assert six.text_type(String('').add_period().add_period()) == ''
-        assert six.text_type(String('').add_period().add_period('!')) == ''
-        assert six.text_type(String('').add_period('!').add_period()) == ''
-        six.text_type(String('November').add_period()) == 'November.'
-        result = six.text_type(String('November').add_period().add_period())
+        assert str(String('').add_period()) == ''
+        assert str(String('').add_period('!')) == ''
+        assert str(String('').add_period().add_period()) == ''
+        assert str(String('').add_period().add_period('!')) == ''
+        assert str(String('').add_period('!').add_period()) == ''
+        str(String('November').add_period()) == 'November.'
+        result = str(String('November').add_period().add_period())
         assert result == 'November.'
 
     def test_render_as(self):
@@ -450,12 +449,12 @@ class TestString(TextTestMixin, TestCase
 class TestTag(TextTestMixin, TestCase):
     def test__init__(self):
         empty = Tag('em')
-        assert six.text_type(empty) == ''
+        assert str(empty) == ''
 
         text = Text('This ', Tag('em', 'is'), ' good')
-        assert 'This is' in six.text_type(text)
-        assert six.text_type(text).startswith('This is')
-        assert six.text_type(text).endswith('is good')
+        assert 'This is' in str(text)
+        assert str(text).startswith('This is')
+        assert str(text).endswith('is good')
 
     def test__eq__(self):
         assert Tag('em', '') != ''
@@ -474,11 +473,11 @@ class TestTag(TextTestMixin, TestCase):
 
     def test__str__(self):
         empty = Tag('em')
-        assert six.text_type(empty.lower()) == ''
-        assert six.text_type(empty.capitalize()) == ''
-        assert six.text_type(empty.add_period()) == ''
+        assert str(empty.lower()) == ''
+        assert str(empty.capitalize()) == ''
+        assert str(empty.add_period()) == ''
 
-        assert six.text_type(Tag('strong', u'ねここねこ')) == u'ねここねこ'
+        assert str(Tag('strong', u'ねここねこ')) == u'ねここねこ'
 
     def test__contains__(self):
         tag = Tag('em', Text(), Text('mary ', 'had ', 'a little lamb'))
@@ -705,10 +704,10 @@ class TestHRef(TextTestMixin, TestCase):
 
     def test__str__(self):
         empty = HRef('/')
-        assert six.text_type(empty) == ''
+        assert str(empty) == ''
 
         text = Text('This ', HRef('/', 'is'), ' good')
-        six.text_type(text) == 'This is good'
+        str(text) == 'This is good'
 
     def test__eq__(self):
         assert HRef('/', '') != ''
@@ -986,14 +985,14 @@ class TestHRef(TextTestMixin, TestCase):
 
 class TestProtected(TextTestMixin, TestCase):
     def test__init__(self):
-        assert six.text_type(Protected('a', '', 'c')) == 'ac'
-        assert six.text_type(Protected('a', Text(), 'c')) == 'ac'
+        assert str(Protected('a', '', 'c')) == 'ac'
+        assert str(Protected('a', Text(), 'c')) == 'ac'
 
         text = Protected(Protected(), Protected('mary ', 'had ', 'a little lamb'))
         assert text == Protected(Protected('mary had a little lamb'))
-        assert six.text_type(text) == 'mary had a little lamb'
+        assert str(text) == 'mary had a little lamb'
 
-        text = six.text_type(Protected('a', Protected('b', 'c'), Tag('em', 'x'), Symbol('nbsp'), 'd'))
+        text = str(Protected('a', Protected('b', 'c'), Tag('em', 'x'), Symbol('nbsp'), 'd'))
         assert text == 'abcx<nbsp>d'
 
         with pytest.raises(ValueError):
@@ -1021,8 +1020,8 @@ class TestProtected(TextTestMixin, TestC
         assert len(Protected('Never', ' ', Tag('em', HRef('/', 'Knows'), ' '), 'Best')) == len('Never Knows Best')
 
     def test__str__(self):
-        assert six.text_type(Protected()) == ''
-        assert six.text_type(Protected(u'Чудаки украшают мир')) == u'Чудаки украшают мир'
+        assert str(Protected()) == ''
+        assert str(Protected(u'Чудаки украшают мир')) == u'Чудаки украшают мир'
 
     def test__contains__(self):
         text = Protected('mary ', 'had ', 'a little lamb')
@@ -1035,11 +1034,11 @@ class TestProtected(TextTestMixin, TestC
 
     def test_capfirst(self):
         text = Protected('mary ', 'had ', 'a Little Lamb')
-        assert six.text_type(text.capitalize()) == 'mary had a Little Lamb'
+        assert str(text.capitalize()) == 'mary had a Little Lamb'
 
     def test_capitalize(self):
         text = Protected('mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.capitalize()) == 'mary had a little lamb'
+        assert str(text.capitalize()) == 'mary had a little lamb'
 
     def test__add__(self):
         t = Protected('a')
@@ -1105,15 +1104,15 @@ class TestProtected(TextTestMixin, TestC
 
     def test_upper(self):
         text = Protected('Mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.upper()) == 'Mary had a little lamb'
+        assert str(text.upper()) == 'Mary had a little lamb'
         text = Protected('mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.upper()) == 'mary had a little lamb'
+        assert str(text.upper()) == 'mary had a little lamb'
 
     def test_lower(self):
         text = Protected('Mary ', 'had ', 'a little lamb')
-        assert six.text_type(text.lower()) == 'Mary had a little lamb'
+        assert str(text.lower()) == 'Mary had a little lamb'
         text = Protected('MARY ', 'HAD ', 'A LITTLE LAMB')
-        assert six.text_type(text.lower()) == 'MARY HAD A LITTLE LAMB'
+        assert str(text.lower()) == 'MARY HAD A LITTLE LAMB'
 
     def test_startswith(self):
         assert not Protected().startswith('.')
@@ -1198,7 +1197,7 @@ class TestSymbol(TextTestMixin, TestCase
         assert Text(nbsp, nbsp) == Text(Symbol('nbsp'), Symbol('nbsp'))
 
     def test__str__(self):
-        assert six.text_type(nbsp) == '<nbsp>'
+        assert str(nbsp) == '<nbsp>'
 
     def test__len__(self):
         assert len(nbsp) == 1
openSUSE Build Service is sponsored by