Remove use of six.binary_type

Remove type checks for cases that don't apply to Python 3.

For remaining uses, use bytes instead
This commit is contained in:
Jon Dufresne 2018-09-23 15:11:35 -07:00
parent 7ff3d1875a
commit 27a6787d63
10 changed files with 21 additions and 50 deletions

View File

@ -22,6 +22,7 @@ Deprecated
* The ``suffix`` argument of ``env.doc2path()`` is deprecated.
* The string style ``base`` argument of ``env.doc2path()`` is deprecated.
* ``sphinx.application.Sphinx._setting_up_extension``
* ``sphinx.ext.config.check_unicode()``
* ``sphinx.ext.doctest.doctest_encode()``
* ``sphinx.testing.util.remove_unicode_literal()``
* ``sphinx.util.get_matching_docs()`` is deprecated

View File

@ -133,6 +133,11 @@ The following is a list of deprecated interfaces.
- 4.0
- ``os.path.join()``
* - ``sphinx.ext.config.check_unicode()``
- 2.0
- 4.0
- N/A
* - ``sphinx.ext.doctest.doctest_encode()``
- 2.0
- 4.0

View File

@ -25,7 +25,7 @@ from docutils.parsers.rst import Directive, directives, roles
import sphinx
from sphinx import package_dir, locale
from sphinx.config import Config, check_unicode
from sphinx.config import Config
from sphinx.config import CONFIG_FILENAME # NOQA # for compatibility (RemovedInSphinx30)
from sphinx.deprecation import (
RemovedInSphinx30Warning, RemovedInSphinx40Warning
@ -200,7 +200,6 @@ class Sphinx:
self.config = Config({}, confoverrides or {})
else:
self.config = Config.read(self.confdir, confoverrides or {}, self.tags)
check_unicode(self.config)
# initialize some limited config variables before initialize i18n and loading
# extensions

View File

@ -18,7 +18,7 @@ import sys
import traceback
from docutils.utils import SystemMessage
from six import text_type, binary_type
from six import text_type
import sphinx.locale
from sphinx import __display_version__, package_dir
@ -230,13 +230,6 @@ def build_main(argv=sys.argv[1:]): # type: ignore
if missing_files:
parser.error(__('cannot find files %r') % missing_files)
# likely encoding used for command-line arguments
try:
locale = __import__('locale') # due to submodule of the same name
likely_encoding = locale.getpreferredencoding()
except Exception:
likely_encoding = None
if args.force_all and filenames:
parser.error(__('cannot combine -a option and filenames'))
@ -268,11 +261,6 @@ def build_main(argv=sys.argv[1:]): # type: ignore
key, val = val.split('=', 1)
except ValueError:
parser.error(__('-D option argument must be in the form name=value'))
if likely_encoding and isinstance(val, binary_type):
try:
val = val.decode(likely_encoding)
except UnicodeError:
pass
confoverrides[key] = val
for val in args.htmldefine:
@ -283,11 +271,7 @@ def build_main(argv=sys.argv[1:]): # type: ignore
try:
val = int(val)
except ValueError:
if likely_encoding and isinstance(val, binary_type):
try:
val = val.decode(likely_encoding)
except UnicodeError:
pass
pass
confoverrides['html_context.%s' % key] = val
if args.nitpicky:

View File

@ -35,7 +35,7 @@ except ImportError:
USE_LIBEDIT = False
from docutils.utils import column_width
from six import text_type, binary_type
from six import text_type
import sphinx.locale
from sphinx import __display_version__, package_dir
@ -644,11 +644,6 @@ def main(argv=sys.argv[1:]):
print('[Interrupted.]')
return 130 # 128 + SIGINT
# decode values in d if value is a Python string literal
for key, value in d.items():
if isinstance(value, binary_type):
d[key] = term_decode(value)
# handle use of CSV-style extension values
d.setdefault('extensions', [])
for ext in d['extensions'][:]:

View File

@ -17,9 +17,9 @@ from collections import OrderedDict
from os import path, getenv
from typing import Any, NamedTuple, Union
from six import string_types, binary_type, text_type, integer_types
from six import string_types, text_type, integer_types
from sphinx.deprecation import RemovedInSphinx30Warning
from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
from sphinx.errors import ConfigError, ExtensionError
from sphinx.locale import _, __
from sphinx.util import logging
@ -488,10 +488,13 @@ def check_unicode(config):
"""check all string values for non-ASCII characters in bytestrings,
since that can result in UnicodeErrors all over the place
"""
warnings.warn('sphinx.config.check_unicode() is deprecated.',
RemovedInSphinx40Warning)
nonascii_re = re.compile(br'[\x80-\xff]')
for name, value in config._raw_config.items():
if isinstance(value, binary_type) and nonascii_re.search(value):
if isinstance(value, bytes) and nonascii_re.search(value):
logger.warning(__('the config value %r is set to a string with non-ASCII '
'characters; this can lead to Unicode errors occurring. '
'Please use Unicode strings, e.g. %r.'), name, u'Content')

View File

@ -25,8 +25,6 @@ import sys
from fnmatch import fnmatch
from os import path
from six import binary_type
import sphinx.locale
from sphinx import __display_version__, package_dir
from sphinx.cmd.quickstart import EXTENSIONS
@ -444,15 +442,6 @@ def main(argv=sys.argv[1:]):
if args.extensions:
d['extensions'].extend(args.extensions)
if isinstance(args.header, binary_type):
d['project'] = d['project'].decode('utf-8')
if isinstance(args.author, binary_type):
d['author'] = d['author'].decode('utf-8')
if isinstance(args.version, binary_type):
d['version'] = d['version'].decode('utf-8')
if isinstance(args.release, binary_type):
d['release'] = d['release'].decode('utf-8')
if not args.dryrun:
qs.generate(d, silent=True, overwrite=args.force)
elif args.tocfile:

View File

@ -22,13 +22,13 @@ from docutils import nodes
from docutils.parsers.rst import directives
from packaging.specifiers import SpecifierSet, InvalidSpecifier
from packaging.version import Version
from six import StringIO, binary_type
from six import StringIO
import sphinx
from sphinx.builders import Builder
from sphinx.deprecation import RemovedInSphinx40Warning
from sphinx.locale import __
from sphinx.util import force_decode, logging
from sphinx.util import logging
from sphinx.util.console import bold # type: ignore
from sphinx.util.docutils import SphinxDirective
from sphinx.util.nodes import set_source_info
@ -330,8 +330,6 @@ class DocTestBuilder(Builder):
logger.warning(text)
else:
logger.info(text, nonl=True)
if isinstance(text, binary_type):
text = force_decode(text, None)
self.outfile.write(text)
def get_target_uri(self, docname, typ=None):

View File

@ -28,7 +28,7 @@ from time import mktime, strptime
from urllib.parse import urlsplit, urlunsplit, quote_plus, parse_qsl, urlencode
from docutils.utils import relative_path
from six import text_type, binary_type
from six import text_type
from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
from sphinx.errors import PycodeError, SphinxParallelError, ExtensionError
@ -458,7 +458,7 @@ def parselinenos(spec, total):
def force_decode(string, encoding):
# type: (unicode, unicode) -> unicode
"""Forcibly get a unicode string out of a bytestring."""
if isinstance(string, binary_type):
if isinstance(string, bytes):
try:
if encoding:
string = string.decode(encoding)

View File

@ -18,9 +18,8 @@ import sys
import typing
from functools import partial
from six import StringIO, binary_type, string_types
from six import StringIO, string_types
from sphinx.util import force_decode
from sphinx.util import logging
from sphinx.util.pycompat import NoneType
@ -249,8 +248,6 @@ def object_description(object):
s = repr(object)
except Exception:
raise ValueError
if isinstance(s, binary_type):
s = force_decode(s, None) # type: ignore
# Strip non-deterministic memory addresses such as
# ``<__main__.A at 0x7f68cb685710>``
s = memory_address_re.sub('', s)