[tor-commits] [ooni-probe/master] Minor refactor to move hacks into separate module

isis at torproject.org isis at torproject.org
Thu Oct 4 14:41:15 UTC 2012


commit fbd9ecdbbe0c8463716c3f0d7a70648e068c3bc7
Author: Arturo Filastò <arturo at filasto.net>
Date:   Fri Sep 28 22:03:42 2012 +0000

    Minor refactor to move hacks into separate module
---
 bin/ooniprobe              |    3 +-
 nettests/example_scapyt.py |    2 +-
 ooni/utils/__init__.py     |   53 --------------------------------------------
 3 files changed, 3 insertions(+), 55 deletions(-)

diff --git a/bin/ooniprobe b/bin/ooniprobe
index f25be7a..62d60bb 100755
--- a/bin/ooniprobe
+++ b/bin/ooniprobe
@@ -9,9 +9,10 @@
 
 
 import os, sys
+import copy_reg
 
 # This is a hack to overcome a bug in python
-from ooni.utils import patched_reduce_ex
+from ooni.utils.hacks import patched_reduce_ex
 copy_reg._reduce_ex = patched_reduce_ex
 
 sys.path[:] = map(os.path.abspath, sys.path)
diff --git a/nettests/example_scapyt.py b/nettests/example_scapyt.py
index ef61f3d..4c31567 100644
--- a/nettests/example_scapyt.py
+++ b/nettests/example_scapyt.py
@@ -6,4 +6,4 @@
 from ooni.templates import scapyt
 from scapy.all import *
 class ExampleScapy(scapyt.ScapyTest):
-    inputs = [IP()/TCP()]
+    inputs = [IP(dst='8.8.8.8')/UDP(), IP()/TCP()]
diff --git a/ooni/utils/__init__.py b/ooni/utils/__init__.py
index 5593027..38239ba 100644
--- a/ooni/utils/__init__.py
+++ b/ooni/utils/__init__.py
@@ -143,56 +143,3 @@ class Log():
         except:
             raise StopIteration
 
-import copy_reg
-
-def patched_reduce_ex(self, proto):
-    """
-    This is a hack to overcome a bug in one of pythons core functions. It is
-    located inside of copy_reg and is called _reduce_ex.
-
-    Some background on the issue can be found here:
-    http://stackoverflow.com/questions/569754/how-to-tell-for-which-object-attribute-pickle-fails
-    http://stackoverflow.com/questions/2049849/why-cant-i-pickle-this-object
-
-    There was also an open bug on the pyyaml trac repo, but it got closed because
-    they could not reproduce.
-    http://pyyaml.org/ticket/190
-
-    It turned out to be easier to patch the python core library than to monkey
-    patch yaml.
-
-    XXX see if there is a better way. sigh...
-    """
-    _HEAPTYPE = 1<<9
-    assert proto < 2
-    for base in self.__class__.__mro__:
-        if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE:
-            break
-    else:
-        base = object # not really reachable
-    if base is object:
-        state = None
-    elif base is int:
-        state = None
-    else:
-        if base is self.__class__:
-            raise TypeError, "can't pickle %s objects" % base.__name__
-        state = base(self)
-    args = (self.__class__, base, state)
-    try:
-        getstate = self.__getstate__
-    except AttributeError:
-        if getattr(self, "__slots__", None):
-            raise TypeError("a class that defines __slots__ without "
-                            "defining __getstate__ cannot be pickled")
-        try:
-            dict = self.__dict__
-        except AttributeError:
-            dict = None
-    else:
-        dict = getstate()
-    if dict:
-        return copy_reg._reconstructor, args, dict
-    else:
-        return copy_reg._reconstructor, args
-





More information about the tor-commits mailing list