From 4da2bde3d14a24b0623ee45ae10afd192d6fa771 Mon Sep 17 00:00:00 2001 From: John Vandenberg Date: Sat, 23 Feb 2019 16:54:20 +0700 Subject: [PATCH] Use functools.singledispatch on Python 3.4+ singledispatch dependency is a backport of the Python 3.4+ implementation of PEP 443 Closes https://github.com/vfaronov/httpolice/issues/6 --- httpolice/reports/common.py | 2 +- httpolice/reports/html.py | 3 ++- httpolice/reports/text.py | 2 +- httpolice/util/moves.py | 5 +++++ setup.py | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/httpolice/reports/common.py b/httpolice/reports/common.py index 7382851..fea50d8 100644 --- a/httpolice/reports/common.py +++ b/httpolice/reports/common.py @@ -1,6 +1,5 @@ # -*- coding: utf-8; -*- -from singledispatch import singledispatch import six from httpolice import known, notice @@ -8,6 +7,7 @@ from httpolice.parse import ParseError, Symbol from httpolice.structure import HeaderEntry, Parametrized from httpolice.util.text import format_chars +from httpolice.util.moves import singledispatch def resolve_reference(ctx, path): diff --git a/httpolice/reports/html.py b/httpolice/reports/html.py index 9ba7f55..0e4f26f 100644 --- a/httpolice/reports/html.py +++ b/httpolice/reports/html.py @@ -5,7 +5,7 @@ import dominate import dominate.tags as H from dominate.util import text as text_node -from singledispatch import singledispatch + import six from httpolice import known, message, notice, structure @@ -16,6 +16,7 @@ find_reason_phrase, resolve_reference) from httpolice.structure import Unavailable from httpolice.util.text import nicely_join, printable +from httpolice.util.moves import singledispatch ############################################################################### diff --git a/httpolice/reports/text.py b/httpolice/reports/text.py index 243c812..62ceebf 100644 --- a/httpolice/reports/text.py +++ b/httpolice/reports/text.py @@ -2,7 +2,6 @@ import codecs -from singledispatch import singledispatch import six from httpolice import notice @@ -10,6 +9,7 @@ resolve_reference) from httpolice.util.text import (detypographize, ellipsize, printable, write_if_any) +from httpolice.util.moves import singledispatch def text_report(exchanges, buf): diff --git a/httpolice/util/moves.py b/httpolice/util/moves.py index 1cd93f9..630bfab 100644 --- a/httpolice/util/moves.py +++ b/httpolice/util/moves.py @@ -13,3 +13,8 @@ from urllib.parse import unquote_to_bytes except ImportError: # Python 2; pragma: no cover from urllib import unquote as unquote_to_bytes + +try: # pragma: no cover + from functools import singledispatch +except ImportError: # Python 2 backport; pragma: no cover + from singledispatch import singledispatch diff --git a/setup.py b/setup.py index b514760..fae8f83 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,6 @@ # NB: when updating these fields, # make sure you don't break ``tools/minimum_requires.sh``. install_requires=[ - 'singledispatch >= 3.4.0.3', 'six >= 1.10.0', 'lxml >= 4.1.0', 'bitstring >= 3.1.4', @@ -44,6 +43,7 @@ extras_require={ ':python_version == "2.7"': [ 'enum34 >= 1.1.6', + 'singledispatch >= 3.4.0.3', ], },