summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2015-11-02 00:39:56 -0500
committerRaymond Hettinger <python@rcn.com>2015-11-02 00:39:56 -0500
commitc38bea2ca0cb9280027ec446627ed2c8276007c5 (patch)
tree9d114bdeb2a93a0d8c584d2328de4de513069b78
parent87b55626ace092ef0dddfbd47c0b7d6097015726 (diff)
downloadcpython-c38bea2ca0cb9280027ec446627ed2c8276007c5.tar.gz
Issue #24379: Revert the operator.subscript patch (dccc4e63aef5) pending resolution of the related refcnt leak.
-rw-r--r--Doc/library/operator.rst15
-rw-r--r--Doc/whatsnew/3.6.rst8
-rw-r--r--Lib/operator.py28
-rw-r--r--Lib/test/test_operator.py33
4 files changed, 1 insertions, 83 deletions
diff --git a/Doc/library/operator.rst b/Doc/library/operator.rst
index 06953917e7..c01e63b77a 100644
--- a/Doc/library/operator.rst
+++ b/Doc/library/operator.rst
@@ -333,21 +333,6 @@ expect a function argument.
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
-.. data:: subscript
-
- A helper to turn subscript notation into indexing objects. This can be
- used to create item access patterns ahead of time to pass them into
- various subscriptable objects.
-
- For example:
-
- * ``subscript[5] == 5``
- * ``subscript[3:7:2] == slice(3, 7, 2)``
- * ``subscript[5, 8] == (5, 8)``
-
- .. versionadded:: 3.6
-
-
.. function:: methodcaller(name[, args...])
Return a callable object that calls the method *name* on its operand. If
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
index b500550c22..0d387bb9bc 100644
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -104,14 +104,6 @@ directives ``%G``, ``%u`` and ``%V``.
(Contributed by Ashley Anderson in :issue:`12006`.)
-operator
---------
-
-New object :data:`operator.subscript` makes it easier to create complex
-indexers. For example: ``subscript[0:10:2] == slice(0, 10, 2)``
-(Contributed by Joe Jevnik in :issue:`24379`.)
-
-
pickle
------
diff --git a/Lib/operator.py b/Lib/operator.py
index bc2a9478b8..0e2e53efc6 100644
--- a/Lib/operator.py
+++ b/Lib/operator.py
@@ -17,7 +17,7 @@ __all__ = ['abs', 'add', 'and_', 'attrgetter', 'concat', 'contains', 'countOf',
'is_', 'is_not', 'isub', 'itemgetter', 'itruediv', 'ixor', 'le',
'length_hint', 'lshift', 'lt', 'matmul', 'methodcaller', 'mod',
'mul', 'ne', 'neg', 'not_', 'or_', 'pos', 'pow', 'rshift',
- 'setitem', 'sub', 'subscript', 'truediv', 'truth', 'xor']
+ 'setitem', 'sub', 'truediv', 'truth', 'xor']
from builtins import abs as _abs
@@ -408,32 +408,6 @@ def ixor(a, b):
return a
-@object.__new__ # create a singleton instance
-class subscript:
- """
- A helper to turn subscript notation into indexing objects. This can be
- used to create item access patterns ahead of time to pass them into
- various subscriptable objects.
-
- For example:
- subscript[5] == 5
- subscript[3:7:2] == slice(3, 7, 2)
- subscript[5, 8] == (5, 8)
- """
- __slots__ = ()
-
- def __new__(cls):
- raise TypeError("cannot create '{}' instances".format(cls.__name__))
-
- @staticmethod
- def __getitem__(key):
- return key
-
- @staticmethod
- def __reduce__():
- return 'subscript'
-
-
try:
from _operator import *
except ImportError:
diff --git a/Lib/test/test_operator.py b/Lib/test/test_operator.py
index 27501c2466..54fd1f4e52 100644
--- a/Lib/test/test_operator.py
+++ b/Lib/test/test_operator.py
@@ -596,38 +596,5 @@ class CCOperatorPickleTestCase(OperatorPickleTestCase, unittest.TestCase):
module2 = c_operator
-class SubscriptTestCase:
- def test_subscript(self):
- subscript = self.module.subscript
- self.assertIsNone(subscript[None])
- self.assertEqual(subscript[0], 0)
- self.assertEqual(subscript[0:1:2], slice(0, 1, 2))
- self.assertEqual(
- subscript[0, ..., :2, ...],
- (0, Ellipsis, slice(2), Ellipsis),
- )
-
- def test_pickle(self):
- from operator import subscript
- for proto in range(pickle.HIGHEST_PROTOCOL + 1):
- with self.subTest(proto=proto):
- self.assertIs(
- pickle.loads(pickle.dumps(subscript, proto)),
- subscript,
- )
-
- def test_singleton(self):
- with self.assertRaises(TypeError):
- type(self.module.subscript)()
-
- def test_immutable(self):
- with self.assertRaises(AttributeError):
- self.module.subscript.attr = None
-
-
-class PySubscriptTestCase(SubscriptTestCase, PyOperatorTestCase):
- pass
-
-
if __name__ == "__main__":
unittest.main()