# -*- test-case-name: twisted.test.test_nooldstyle -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Utilities to assist in the "flag day" new-style object transition. """ from __future__ import absolute_import, division import types from functools import wraps from twisted.python.compat import _shouldEnableNewStyle, _PY3 def _replaceIf(condition, alternative): """ If C{condition}, replace this function with C{alternative}. @param condition: A L{bool} which says whether this should be replaced. @param alternative: An alternative function that will be swapped in instead of the original, if C{condition} is truthy. @return: A decorator. """ def decorator(func): if condition is True: call = alternative elif condition is False: call = func else: raise ValueError(("condition argument to _replaceIf requires a " "bool, not {}").format(repr(condition))) @wraps(func) def wrapped(*args, **kwargs): return call(*args, **kwargs) return wrapped return decorator def passthru(arg): """ Return C{arg}. Do nothing. @param arg: The arg to return. @return: C{arg} """ return arg def _ensureOldClass(cls): """ Ensure that C{cls} is an old-style class. @param cls: The class to check. @return: The class, if it is an old-style class. @raises: L{ValueError} if it is a new-style class. """ if not type(cls) is types.ClassType: from twisted.python.reflect import fullyQualifiedName raise ValueError( ("twisted.python._oldstyle._oldStyle is being used to decorate a " "new-style class ({cls}). This should only be used to " "decorate old-style classes.").format( cls=fullyQualifiedName(cls))) return cls @_replaceIf(_PY3, passthru) @_replaceIf(not _shouldEnableNewStyle(), _ensureOldClass) def _oldStyle(cls): """ A decorator which conditionally converts old-style classes to new-style classes. If it is Python 3, or if the C{TWISTED_NEWSTYLE} environment variable has a falsey (C{no}, C{false}, C{False}, or C{0}) value in the environment, this decorator is a no-op. @param cls: An old-style class to convert to new-style. @type cls: L{types.ClassType} @return: A new-style version of C{cls}. """ _ensureOldClass(cls) _bases = cls.__bases__ + (object,) return type(cls.__name__, _bases, cls.__dict__)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
_pydoctortemplates | Folder | 0755 |
|
|
test | Folder | 0755 |
|
|
__init__.py | File | 674 B | 0644 |
|
_appdirs.py | File | 788 B | 0644 |
|
_inotify.py | File | 3.37 KB | 0644 |
|
_oldstyle.py | File | 2.53 KB | 0644 |
|
_release.py | File | 18.03 KB | 0644 |
|
_sendmsg.c | File | 15.42 KB | 0644 |
|
_setup.py | File | 12.6 KB | 0644 |
|
_shellcomp.py | File | 23.76 KB | 0644 |
|
_textattributes.py | File | 8.87 KB | 0644 |
|
_tzhelper.py | File | 3.12 KB | 0644 |
|
_url.py | File | 253 B | 0644 |
|
compat.py | File | 21.91 KB | 0644 |
|
components.py | File | 13.96 KB | 0644 |
|
constants.py | File | 544 B | 0644 |
|
context.py | File | 3.93 KB | 0644 |
|
deprecate.py | File | 26.15 KB | 0644 |
|
failure.py | File | 23.38 KB | 0644 |
|
fakepwd.py | File | 5.99 KB | 0644 |
|
filepath.py | File | 57.51 KB | 0644 |
|
formmethod.py | File | 11.19 KB | 0644 |
|
htmlizer.py | File | 3.27 KB | 0644 |
|
lockfile.py | File | 7.54 KB | 0644 |
|
log.py | File | 21.95 KB | 0644 |
|
logfile.py | File | 9.85 KB | 0644 |
|
modules.py | File | 26.5 KB | 0644 |
|
monkey.py | File | 2.17 KB | 0644 |
|
procutils.py | File | 1.39 KB | 0644 |
|
randbytes.py | File | 3.87 KB | 0644 |
|
rebuild.py | File | 9.04 KB | 0644 |
|
reflect.py | File | 19.02 KB | 0644 |
|
release.py | File | 1.16 KB | 0644 |
|
roots.py | File | 7.23 KB | 0644 |
|
runtime.py | File | 6.13 KB | 0644 |
|
sendmsg.py | File | 3.34 KB | 0644 |
|
shortcut.py | File | 2.2 KB | 0644 |
|
syslog.py | File | 3.64 KB | 0644 |
|
systemd.py | File | 2.77 KB | 0644 |
|
text.py | File | 5.35 KB | 0644 |
|
threadable.py | File | 3.22 KB | 0644 |
|
threadpool.py | File | 9.61 KB | 0644 |
|
twisted-completion.zsh | File | 1.33 KB | 0644 |
|
url.py | File | 244 B | 0644 |
|
urlpath.py | File | 8.87 KB | 0644 |
|
usage.py | File | 34.19 KB | 0644 |
|
util.py | File | 27.29 KB | 0644 |
|
versions.py | File | 322 B | 0644 |
|
win32.py | File | 5.42 KB | 0644 |
|
zippath.py | File | 9.02 KB | 0644 |
|
zipstream.py | File | 9.53 KB | 0644 |
|