From 854afc095f033269795f9593012d2284ae733ca0 Mon Sep 17 00:00:00 2001
From: david-sarah <david-sarah@jacaranda.org>
Date: Thu, 14 Jun 2012 21:23:08 +0000
Subject: [PATCH] Suppress DeprecationWarning about
 twisted.internet.interfaces.IFinishableConsumer. This also unifies the
 handling of DeprecationWarnings that need to be suppressed globally. refs
 #1295

---
 src/allmydata/__init__.py   | 13 ++++---------
 src/allmydata/_auto_deps.py | 10 ++++++++++
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/allmydata/__init__.py b/src/allmydata/__init__.py
index 083567b3..51af4fe5 100644
--- a/src/allmydata/__init__.py
+++ b/src/allmydata/__init__.py
@@ -144,7 +144,7 @@ def normalized_version(verstr, what=None):
 
 def get_package_versions_and_locations():
     import warnings
-    from _auto_deps import package_imports, deprecation_messages, \
+    from _auto_deps import package_imports, global_deprecation_messages, deprecation_messages, \
         user_warning_messages, runtime_warning_messages, warning_imports
 
     def package_dir(srcfile):
@@ -155,16 +155,10 @@ def get_package_versions_and_locations():
     # or any other bug that causes sys.path to be set up incorrectly. Therefore we
     # must import the packages in order to check their versions and paths.
 
-    # This warning is generated by twisted, PyRex, and possibly other packages,
-    # but can happen at any time, not only when they are imported. See ticket #1129.
-    warnings.filterwarnings("ignore", category=DeprecationWarning,
-        message="BaseException.message has been deprecated as of Python 2.6",
-        append=True)
-
     # This is to suppress various DeprecationWarnings, UserWarnings, and RuntimeWarnings
-    # (listed in _auto_deps.py) that occur when modules are imported.
+    # (listed in _auto_deps.py).
 
-    for msg in deprecation_messages:
+    for msg in global_deprecation_messages + deprecation_messages:
         warnings.filterwarnings("ignore", category=DeprecationWarning, message=msg, append=True)
     for msg in user_warning_messages:
         warnings.filterwarnings("ignore", category=UserWarning, message=msg, append=True)
@@ -177,6 +171,7 @@ def get_package_versions_and_locations():
             except ImportError:
                 pass
     finally:
+        # Leave suppressions for global_deprecation_messages active.
         for ign in runtime_warning_messages + user_warning_messages + deprecation_messages:
             warnings.filters.pop()
 
diff --git a/src/allmydata/_auto_deps.py b/src/allmydata/_auto_deps.py
index 3b602e1a..ddc670e6 100644
--- a/src/allmydata/_auto_deps.py
+++ b/src/allmydata/_auto_deps.py
@@ -89,6 +89,16 @@ def require_more():
 
 require_more()
 
+
+# These are suppressed globally:
+
+global_deprecation_messages = [
+    "BaseException.message has been deprecated as of Python 2.6",
+    "twisted.internet.interfaces.IFinishableConsumer was deprecated in Twisted 11.1.0: Please use IConsumer (and IConsumer.unregisterProducer) instead.",
+]
+
+# These are suppressed while importing dependencies:
+
 deprecation_messages = [
     "the sha module is deprecated; use the hashlib module instead",
     "object.__new__\(\) takes no parameters",
-- 
2.45.2