summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dent <cdent@anticdent.org>2018-10-24 22:46:20 +0100
committerChris Dent <cdent@anticdent.org>2018-10-24 22:46:20 +0100
commit00f4fde04bdd841ec88c2b62dd9dcab92a3d019d (patch)
treedbd1466a951c44cb7f5f94847d8b1dbde024b89c
parent9ceef07267ba83ea5c00533f85f9edf9ba38cd71 (diff)
downloadpaste-git-00f4fde04bdd841ec88c2b62dd9dcab92a3d019d.tar.gz
Remove use of future
Future is calling installation endless recursion. We are only using it for an html.escape method, so we make our own and get rid of future. Related-Bug: #6
-rw-r--r--paste/evalexception/middleware.py2
-rw-r--r--paste/exceptions/formatter.py2
-rw-r--r--paste/url.py2
-rw-r--r--paste/urlmap.py2
-rw-r--r--paste/util/html.py24
-rw-r--r--paste/util/quoting.py3
-rw-r--r--setup.py2
7 files changed, 31 insertions, 6 deletions
diff --git a/paste/evalexception/middleware.py b/paste/evalexception/middleware.py
index f41a4f5..d086344 100644
--- a/paste/evalexception/middleware.py
+++ b/paste/evalexception/middleware.py
@@ -29,7 +29,6 @@ from __future__ import print_function
import sys
import os
-import html
import traceback
import six
from six.moves import cStringIO as StringIO
@@ -45,6 +44,7 @@ from paste import registry
from paste import request
from paste import response
from paste.evalexception import evalcontext
+from paste.util import html
limit = 200
diff --git a/paste/exceptions/formatter.py b/paste/exceptions/formatter.py
index 3be07ef..3ff7e6c 100644
--- a/paste/exceptions/formatter.py
+++ b/paste/exceptions/formatter.py
@@ -7,9 +7,9 @@ Formatters for the exception data that comes from ExceptionCollector.
# @@: TODO:
# Use this: http://www.zope.org/Members/tino/VisualTraceback/VisualTracebackNews
-import html
import six
import re
+from paste.util import html
from paste.util import PySourceColor
def html_quote(s):
diff --git a/paste/url.py b/paste/url.py
index 653c657..b13d575 100644
--- a/paste/url.py
+++ b/paste/url.py
@@ -5,9 +5,9 @@
This module implements a class for handling URLs.
"""
from six.moves.urllib.parse import parse_qsl, quote, unquote, urlencode
-import html
from paste import request
import six
+from paste.util import html
# Imported lazily from FormEncode:
variabledecode = None
diff --git a/paste/urlmap.py b/paste/urlmap.py
index 4ba19c1..3de23db 100644
--- a/paste/urlmap.py
+++ b/paste/urlmap.py
@@ -6,7 +6,7 @@ Map URL prefixes to WSGI applications. See ``URLMap``
import re
import os
-import html
+from paste.util import html
try:
# Python 3
from collections import MutableMapping as DictMixin
diff --git a/paste/util/html.py b/paste/util/html.py
new file mode 100644
index 0000000..b0e2ab3
--- /dev/null
+++ b/paste/util/html.py
@@ -0,0 +1,24 @@
+# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
+
+"""Provide an html.escape method that is python method safe."""
+
+import six
+
+if six.PY3:
+ from html import escape
+else:
+ # This is a copy from Python3.
+ def escape(s, quote=True):
+ """
+ Replace special characters "&", "<" and ">" to HTML-safe sequences. If
+ the optional flag quote is true (the default), the quotation mark
+ characters, both double quote (") and single quote (') characters are
+ also translated.
+ """
+ s = s.replace("&", "&amp;") # Must be done first!
+ s = s.replace("<", "&lt;")
+ s = s.replace(">", "&gt;")
+ if quote:
+ s = s.replace('"', "&quot;")
+ s = s.replace('\'', "&#x27;")
+ return s
diff --git a/paste/util/quoting.py b/paste/util/quoting.py
index c1f635f..58ea308 100644
--- a/paste/util/quoting.py
+++ b/paste/util/quoting.py
@@ -1,12 +1,13 @@
# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
-import html
import six
import re
from six.moves import html_entities
from six.moves.urllib.parse import quote, unquote
+from paste.util import html
+
__all__ = ['html_quote', 'html_unquote', 'url_quote', 'url_unquote',
'strip_html']
diff --git a/setup.py b/setup.py
index 84df215..84a1685 100644
--- a/setup.py
+++ b/setup.py
@@ -53,7 +53,7 @@ setup(name="Paste",
namespace_packages=['paste'],
zip_safe=False,
test_suite='nose.collector',
- install_requires=['six>=1.4.0', 'future'],
+ install_requires=['six>=1.4.0'],
tests_require=['nose>=0.11'],
extras_require={
'subprocess': [],