aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyspark/__init__.py')
-rw-r--r--python/pyspark/__init__.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/python/pyspark/__init__.py b/python/pyspark/__init__.py
index d530723ca9..111ebaafee 100644
--- a/python/pyspark/__init__.py
+++ b/python/pyspark/__init__.py
@@ -37,6 +37,8 @@ Public classes:
"""
+import types
+
from pyspark.conf import SparkConf
from pyspark.context import SparkContext
from pyspark.rdd import RDD
@@ -64,6 +66,24 @@ def since(version):
return deco
+def copy_func(f, name=None, sinceversion=None, doc=None):
+ """
+ Returns a function with same code, globals, defaults, closure, and
+ name (or provide a new name).
+ """
+ # See
+ # http://stackoverflow.com/questions/6527633/how-can-i-make-a-deepcopy-of-a-function-in-python
+ fn = types.FunctionType(f.__code__, f.__globals__, name or f.__name__, f.__defaults__,
+ f.__closure__)
+ # in case f was given attrs (note this dict is a shallow copy):
+ fn.__dict__.update(f.__dict__)
+ if doc is not None:
+ fn.__doc__ = doc
+ if sinceversion is not None:
+ fn = since(sinceversion)(fn)
+ return fn
+
+
# for back compatibility
from pyspark.sql import SQLContext, HiveContext, Row