Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/boltons/deprutils.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:18:57 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d30785e31577 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 | |
| 3 """ | |
| 4 Note that DeprecationWarnings are ignored by default in Python | |
| 5 2.7/3.2+, so be sure to either un-ignore them in your code, or run | |
| 6 Python with the -Wd flag. | |
| 7 """ | |
| 8 | |
| 9 import sys | |
| 10 from warnings import warn | |
| 11 | |
| 12 ModuleType = type(sys) | |
| 13 | |
| 14 # todo: only warn once | |
| 15 | |
| 16 | |
| 17 class DeprecatableModule(ModuleType): | |
| 18 def __init__(self, module): | |
| 19 name = module.__name__ | |
| 20 super(DeprecatableModule, self).__init__(name=name) | |
| 21 self.__dict__.update(module.__dict__) | |
| 22 | |
| 23 def __getattribute__(self, name): | |
| 24 get_attribute = super(DeprecatableModule, self).__getattribute__ | |
| 25 try: | |
| 26 depros = get_attribute('_deprecated_members') | |
| 27 except AttributeError: | |
| 28 self._deprecated_members = depros = {} | |
| 29 ret = get_attribute(name) | |
| 30 message = depros.get(name) | |
| 31 if message is not None: | |
| 32 warn(message, DeprecationWarning, stacklevel=2) | |
| 33 return ret | |
| 34 | |
| 35 | |
| 36 def deprecate_module_member(mod_name, name, message): | |
| 37 module = sys.modules[mod_name] | |
| 38 if not isinstance(module, DeprecatableModule): | |
| 39 sys.modules[mod_name] = module = DeprecatableModule(module) | |
| 40 module._deprecated_members[name] = message | |
| 41 return |
