Statistiques
| Révision :

root / ase / utils / deprecate.py @ 13

Historique | Voir | Annoter | Télécharger (1,38 ko)

1
import warnings
2

    
3
class Deprecate:
4
    def __init__(self, obj, name, newmodule, oldmodule='ase'):
5
        self.obj = obj
6
        self.name = name
7
        self.newmodule = newmodule
8
        self.oldmodule = oldmodule
9

    
10
    def __call__(self, *args, **kwargs):
11
        message = ('%s.%s is deprecated, use %s.%s instead' %
12
                   (self.oldmodule, self.name, self.newmodule, self.name))
13
        warnings.warn(message, DeprecationWarning, stacklevel=2)
14
        return self.obj(*args, **kwargs)
15

    
16
def _dep(method):
17
    def _method(self, *args):
18
        message = ('ase.%s is deprecated, use %s.%s instead' %
19
                   (self.name, self.newmodule, self.name))
20
        warnings.warn(message, DeprecationWarning, stacklevel=2)
21
        return method(self, *args)
22
    return _method
23

    
24
class DeprecatedFloat(float):
25
    def __new__(cls, value, name, newmodule):
26
        return float.__new__(cls, value)
27

    
28
    def __init__(self, value, name, newmodule):
29
        self.name = name
30
        self.newmodule = newmodule
31

    
32
    __mul__ = _dep(float.__mul__)
33
    __rmul__ = _dep(float.__rmul__)
34
    __div__ = _dep(float.__div__)
35
    __rdiv__ = _dep(float.__rdiv__)
36

    
37
class DeprecatedNumpyImport:
38
    def __init__(self):
39
        import numpy
40
        self.numpy = numpy
41

    
42
    def __getattr__(self, key):
43
        warnings.warn('ase.np is deprecated; use import numpy as np instead')
44
        return getattr(self.numpy, key)