_util module¶
-
pyflyby._util.AdviceCtx(joinpoint, hook)¶
-
class
pyflyby._util.Aspect(joinpoint)¶ Monkey-patch a target method (joinpoint) with “around” advice.
The advice can call “__original__(…)”. At run time, a global named “__original__” will magically be available to the wrapped function. This refers to the original function.
Suppose someone else wrote Foo.bar():
>>> class Foo(object): ... def __init__(self, x): ... self.x = x ... def bar(self, y): ... return "bar(self.x=%s,y=%s)" % (self.x,y) >>> foo = Foo(42)
To monkey patch
foo.bar, decorate the wrapper with"@advise(foo.bar)":>>> @advise(foo.bar) ... def addthousand(y): ... return "advised foo.bar(y=%s): %s" % (y, __original__(y+1000)) >>> foo.bar(100) 'advised foo.bar(y=100): bar(self.x=42,y=1100)'
You can uninstall the advice and get the original behavior back:
>>> addthousand.unadvise() >>> foo.bar(100) 'bar(self.x=42,y=100)'
-
_wrapper= None¶
-
advise(hook, once=False)¶
-
unadvise()¶
-
-
pyflyby._util.CwdCtx(path)¶ Context manager that temporarily enters a new working directory.
-
pyflyby._util.EnvVarCtx(**kwargs)¶ Context manager that temporarily modifies os.environ.
-
pyflyby._util.ExcludeImplicitCwdFromPathCtx()¶ Context manager that temporarily removes “.” from
sys.path.
-
class
pyflyby._util.FunctionWithGlobals(function, **variables)¶ A callable that at runtime adds extra variables to the target function’s global namespace.
This is written as a class with a __call__ method. We do so rather than using a metafunction, so that we can also implement __getattr__ to look through to the target.
-
pyflyby._util.ImportPathCtx(path_additions)¶ Context manager that temporarily prepends
sys.pathwithpath_additions.
-
pyflyby._util.NullCtx()¶ Context manager that does nothing.
-
class
pyflyby._util.Object¶
-
exception
pyflyby._util.WrappedAttributeError¶
-
class
pyflyby._util._WritableDictProxy(cls)¶ Writable equivalent of cls.__dict__.
-
get(k, default=None)¶
-
-
pyflyby._util.advise(joinpoint)¶ Advise
joinpoint.See Aspect.
-
class
pyflyby._util.cached_attribute(method, name=None)¶ Computes attribute value and caches it in instance.
Example:
class MyClass(object): @cached_attribute def myMethod(self): # ...
Use “del inst.myMethod” to clear cache.
-
pyflyby._util.cmp(a, b)¶
-
pyflyby._util.indent(lines, prefix)¶ >>> indent('hello\nworld\n', '@@') '@@hello\n@@world\n'
-
pyflyby._util.longest_common_prefix(items1, items2)¶ Return the longest common prefix.
>>> longest_common_prefix("abcde", "abcxy") 'abc'
- Return type
type(items1)
-
pyflyby._util.memoize(function)¶
-
pyflyby._util.nested(*mgrs)¶
-
pyflyby._util.partition(iterable, predicate)¶ >>> partition('12321233221', lambda c: int(c) % 2 == 0) (['2', '2', '2', '2', '2'], ['1', '3', '1', '3', '3', '1'])
-
pyflyby._util.prefixes(parts)¶ >>> list(prefixes("abcd")) ['a', 'ab', 'abc', 'abcd']
-
pyflyby._util.stable_unique(items)¶ Return a copy of
itemswithout duplicates. The order of other items is unchanged.>>> stable_unique([1,4,6,4,6,5,7]) [1, 4, 6, 5, 7]