_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.path
withpath_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
items
without duplicates. The order of other items is unchanged.>>> stable_unique([1,4,6,4,6,5,7]) [1, 4, 6, 5, 7]