diff planemo/lib/python3.7/site-packages/future/builtins/disabled.py @ 0:d30785e31577 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:18:57 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/future/builtins/disabled.py	Fri Jul 31 00:18:57 2020 -0400
@@ -0,0 +1,66 @@
+"""
+This disables builtin functions (and one exception class) which are
+removed from Python 3.3.
+
+This module is designed to be used like this::
+
+    from future.builtins.disabled import *
+
+This disables the following obsolete Py2 builtin functions::
+
+    apply, cmp, coerce, execfile, file, input, long,
+    raw_input, reduce, reload, unicode, xrange
+
+We don't hack __builtin__, which is very fragile because it contaminates
+imported modules too. Instead, we just create new functions with
+the same names as the obsolete builtins from Python 2 which raise
+NameError exceptions when called.
+
+Note that both ``input()`` and ``raw_input()`` are among the disabled
+functions (in this module). Although ``input()`` exists as a builtin in
+Python 3, the Python 2 ``input()`` builtin is unsafe to use because it
+can lead to shell injection. Therefore we shadow it by default upon ``from
+future.builtins.disabled import *``, in case someone forgets to import our
+replacement ``input()`` somehow and expects Python 3 semantics.
+
+See the ``future.builtins.misc`` module for a working version of
+``input`` with Python 3 semantics.
+
+(Note that callable() is not among the functions disabled; this was
+reintroduced into Python 3.2.)
+
+This exception class is also disabled:
+
+    StandardError
+
+"""
+
+from __future__ import division, absolute_import, print_function
+
+from future import utils
+
+
+OBSOLETE_BUILTINS = ['apply', 'chr', 'cmp', 'coerce', 'execfile', 'file',
+                     'input', 'long', 'raw_input', 'reduce', 'reload',
+                     'unicode', 'xrange', 'StandardError']
+
+
+def disabled_function(name):
+    '''
+    Returns a function that cannot be called
+    '''
+    def disabled(*args, **kwargs):
+        '''
+        A function disabled by the ``future`` module. This function is
+        no longer a builtin in Python 3.
+        '''
+        raise NameError('obsolete Python 2 builtin {0} is disabled'.format(name))
+    return disabled
+
+
+if not utils.PY3:
+    for fname in OBSOLETE_BUILTINS:
+        locals()[fname] = disabled_function(fname)
+    __all__ = OBSOLETE_BUILTINS
+else:
+    __all__ = []