summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2016-04-19 00:01:37 -0700
committerBenjamin Peterson <benjamin@python.org>2016-04-19 00:01:37 -0700
commit648c4dddb7703c32161780def0563d3d806bd5b4 (patch)
treeae3e9033e4dfae12ed2ddbfc026035f56090a0e0
parent2c1141f9d8b74e2fea72281080bc091eb2319f8d (diff)
parentfe838eb31308f92e9967443c6c3dcb0ce488b0cc (diff)
downloadsix-648c4dddb7703c32161780def0563d3d806bd5b4.tar.gz
Merged in asottile/six (pull request #75)
Add six.moves.email_mime_image
-rw-r--r--CHANGES6
-rw-r--r--documentation/index.rst2
-rw-r--r--six.py33
-rw-r--r--tox.ini2
4 files changed, 31 insertions, 12 deletions
diff --git a/CHANGES b/CHANGES
index 6e9df6d..c4948ee 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,12 @@ Changelog for six
This file lists the changes in each six version.
+Development version
+-------------------
+
+- Pull request #72: Avoid creating reference cycles through tracebacks in
+ `reraise`.
+
1.10.0
------
diff --git a/documentation/index.rst b/documentation/index.rst
index 1cb53ad..e43ab43 100644
--- a/documentation/index.rst
+++ b/documentation/index.rst
@@ -345,7 +345,7 @@ Python 2 and 3.
on Python 3 or ::
class MyClass(object):
- __metaclass__ = MyMeta
+ __metaclass__ = Meta
on Python 2.
diff --git a/six.py b/six.py
index bb16a17..e37af77 100644
--- a/six.py
+++ b/six.py
@@ -680,11 +680,15 @@ if PY3:
exec_ = getattr(moves.builtins, "exec")
def reraise(tp, value, tb=None):
- if value is None:
- value = tp()
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
+ try:
+ if value is None:
+ value = tp()
+ if value.__traceback__ is not tb:
+ raise value.with_traceback(tb)
+ raise value
+ finally:
+ value = None
+ tb = None
else:
def exec_(_code_, _globs_=None, _locs_=None):
@@ -700,19 +704,28 @@ else:
exec("""exec _code_ in _globs_, _locs_""")
exec_("""def reraise(tp, value, tb=None):
- raise tp, value, tb
+ try:
+ raise tp, value, tb
+ finally:
+ tb = None
""")
if sys.version_info[:2] == (3, 2):
exec_("""def raise_from(value, from_value):
- if from_value is None:
- raise value
- raise value from from_value
+ try:
+ if from_value is None:
+ raise value
+ raise value from from_value
+ finally:
+ value = None
""")
elif sys.version_info[:2] > (3, 2):
exec_("""def raise_from(value, from_value):
- raise value from from_value
+ try:
+ raise value from from_value
+ finally:
+ value = None
""")
else:
def raise_from(value, from_value):
diff --git a/tox.ini b/tox.ini
index 617b7df..d581326 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
[tox]
envlist=py26,py27,py31,py32,py33,py34,pypy,flake8
indexserver=
- default = http://pypi.python.org/simple
+ default = https://pypi.python.org/simple
testrun = http://pypi.testrun.org
[testenv]