changeset 13:2227ff372388

decorators module
author Jeff Hammel <k0scist@gmail.com>
date Sun, 10 Dec 2017 17:07:29 -0800
parents 82cd4e0b66cf
children 756dbd3e391e
files lemuriformes/decorators.py
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lemuriformes/decorators.py	Sun Dec 10 17:07:29 2017 -0800
@@ -0,0 +1,26 @@
+try:
+    # python2
+    string = (str, unicode)
+except NameError:
+    # python3
+    string = (str,)
+
+
+class fileobj(object):
+    """
+    fileobj decorator:
+    inner function may take a file-like object or a string as path to file
+    The decorated function must take this as the first argument
+    """
+
+
+    def __init__(self, function):
+        self.wrapped = function
+
+    def __call__(self, fp, *args, **kwargs):
+
+        if isinstance(fp, string):
+            with open(fp) as f:
+                return self.wrapped(f, *args, **kwargs)
+
+        return self.wrapped(fp, *args, **kwargs)