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 |