~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/symbol_versioning.py

Introduce BranchFormats - factoring out intialisation of Branches.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
The methods here allow for api symbol versioning.
21
21
"""
22
22
 
23
 
__all__ = ['warn', 'set_warning_method', 'zero_seven']
 
23
__all__ = ['deprecated_function',
 
24
           'deprecated_method',
 
25
           'deprecated_nonce',
 
26
           'deprecated_passed',
 
27
           'warn', 'set_warning_method', 'zero_seven',
 
28
           ]
24
29
 
25
30
from warnings import warn
26
31
 
27
32
 
 
33
deprecated_nonce = "A deprecated parameter marker."
28
34
zero_seven = "%s was deprecated in version 0.7."
29
35
 
30
36
 
84
90
    return method_decorator
85
91
 
86
92
 
 
93
def deprecated_passed(parameter_value):
 
94
    """Return True if parameter_value was used."""
 
95
    # FIXME: it might be nice to have a parameter deprecation decorator. 
 
96
    # it would need to handle positional and *args and **kwargs parameters,
 
97
    # which means some mechanism to describe how the parameter was being
 
98
    # passed before deprecation, and some way to deprecate parameters that
 
99
    # were not at the end of the arg list. Thats needed for __init__ where
 
100
    # we cannot just forward to a new method name.I.e. in the following
 
101
    # examples we would want to have callers that pass any value to 'bad' be
 
102
    # given a warning - because we have applied:
 
103
    # @deprecated_parameter('bad', zero_seven)
 
104
    #
 
105
    # def __init__(self, bad=None)
 
106
    # def __init__(self, bad, other)
 
107
    # def __init__(self, **kwargs)
 
108
    # RBC 20060116
 
109
    return not parameter_value is deprecated_nonce
 
110
 
 
111
 
87
112
def _decorate_docstring(callable, deprecation_version, label,
88
113
                        decorated_callable):
89
114
    docstring_lines = callable.__doc__.split('\n')