_isstring(): Factor out "stringiness" test, e.g. for StringType or
UnicodeType, which is different between Python 2.1 and 2.2.
diff --git a/Lib/email/_compat21.py b/Lib/email/_compat21.py
index 76d6f50..de8c447 100644
--- a/Lib/email/_compat21.py
+++ b/Lib/email/_compat21.py
@@ -30,6 +30,10 @@
return i / j
+def _isstring(obj):
+ return isinstance(obj, StringType) or isinstance(obj, UnicodeType)
+
+
# These two functions are imported into the Iterators.py interface module.
# The Python 2.2 version uses generators for efficiency.
@@ -38,7 +42,7 @@
lines = []
for subpart in msg.walk():
payload = subpart.get_payload()
- if isinstance(payload, StringType) or isinstance(payload, UnicodeType):
+ if _isstring(payload):
for line in StringIO(payload).readlines():
lines.append(line)
return lines
diff --git a/Lib/email/_compat22.py b/Lib/email/_compat22.py
index 2581568..a05451f 100644
--- a/Lib/email/_compat22.py
+++ b/Lib/email/_compat22.py
@@ -31,6 +31,10 @@
return i // j
+def _isstring(obj):
+ return isinstance(obj, StringTypes)
+
+
# These two functions are imported into the Iterators.py interface module.
# The Python 2.2 version uses generators for efficiency.
@@ -38,7 +42,7 @@
"""Iterate over the parts, returning string payloads line-by-line."""
for subpart in msg.walk():
payload = subpart.get_payload()
- if isinstance(payload, StringTypes):
+ if _isstring(payload):
for line in StringIO(payload):
yield line