1# encoding: utf-8 2""" 3This module provides compatibility between Python 2 and 3. Hardly 4anything is used by this project to constitute including `six`_. 5 6.. _`six`: http://pythonhosted.org/six 7""" 8 9import sys 10 11if sys.version_info[0] < 3: 12 # Python 2. 13 unicode = unicode 14 string_types = (basestring,) 15 16 from collections import Iterable 17 from itertools import izip_longest 18 19 def iterkeys(mapping): 20 return mapping.iterkeys() 21 22else: 23 # Python 3. 24 unicode = str 25 string_types = (unicode,) 26 27 from collections.abc import Iterable 28 from itertools import zip_longest as izip_longest 29 30 def iterkeys(mapping): 31 return mapping.keys() 32 33try: 34 # Python 3.6+. 35 from collections.abc import Collection 36except ImportError: 37 # Python 2.7 - 3.5. 38 from collections import Container as Collection 39