~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/symbol_versioning.py

  • Committer: John Arbash Meinel
  • Date: 2009-03-30 18:42:38 UTC
  • mto: (3735.2.171 brisbane-core)
  • mto: This revision was merged to the branch mainline in revision 4280.
  • Revision ID: john@arbash-meinel.com-20090330184238-yc8t2i9wr2mjkxiu
For now, we handle the case of a root node being referenced in the unwanted set.
However, it requires buffering, which is something we want to get rid of.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
29
29
           'warn',
30
30
           ]
31
31
 
32
 
 
33
 
import warnings
34
 
# Import the 'warn' symbol so bzrlib can call it even if we redefine it
35
32
from warnings import warn
36
33
 
37
34
import bzrlib
44
41
    """Generate a message that something was deprecated in a release.
45
42
 
46
43
    >>> deprecated_in((1, 4, 0))
47
 
    '%s was deprecated in version 1.4.0.'
 
44
    '%s was deprecated in version 1.4.'
48
45
    """
49
46
    return ("%%s was deprecated in version %s."
50
47
            % bzrlib._format_version_tuple(version_tuple))
283
280
            return self._warn_deprecated(list.remove, value)
284
281
 
285
282
        def pop(self, index=None):
286
 
            """pop'ing from %s is deprecated""" % (variable_name,)
 
283
            """pop'ing from from %s is deprecated""" % (variable_name,)
287
284
            if index:
288
285
                return self._warn_deprecated(list.pop, index)
289
286
            else:
299
296
    :param error_only: Only match an 'error' filter
300
297
    :return: True if a filter is found, False otherwise
301
298
    """
 
299
    import warnings
302
300
    for filter in warnings.filters:
303
301
        if issubclass(DeprecationWarning, filter[2]):
304
302
            # This filter will effect DeprecationWarning
307
305
    return False
308
306
 
309
307
 
310
 
def _remove_filter_callable(filter):
311
 
    """Build and returns a callable removing filter from the warnings.
312
 
 
313
 
    :param filter: The filter to remove (can be None).
314
 
 
315
 
    :return: A callable that will remove filter from warnings.filters.
316
 
    """
317
 
    def cleanup():
318
 
        if filter:
319
 
            warnings.filters.remove(filter)
320
 
    return cleanup
321
 
 
322
 
 
323
308
def suppress_deprecation_warnings(override=True):
324
309
    """Call this function to suppress all deprecation warnings.
325
310
 
329
314
 
330
315
    :param override: If True, always set the ignore, if False, only set the
331
316
        ignore if there isn't already a filter.
332
 
 
333
 
    :return: A callable to remove the new warnings this added.
334
317
    """
 
318
    import warnings
335
319
    if not override and _check_for_filter(error_only=False):
336
320
        # If there is already a filter effecting suppress_deprecation_warnings,
337
321
        # then skip it.
338
 
        filter = None
339
 
    else:
340
 
        warnings.filterwarnings('ignore', category=DeprecationWarning)
341
 
        filter = warnings.filters[0]
342
 
    return _remove_filter_callable(filter)
 
322
        return
 
323
    warnings.filterwarnings('ignore', category=DeprecationWarning)
343
324
 
344
325
 
345
326
def activate_deprecation_warnings(override=True):
356
337
    :param override: If False, only add a filter if there isn't an error filter
357
338
        already. (This slightly differs from suppress_deprecation_warnings, in
358
339
        because it always overrides everything but -Werror).
359
 
 
360
 
    :return: A callable to remove the new warnings this added.
361
340
    """
 
341
    import warnings
362
342
    if not override and _check_for_filter(error_only=True):
363
343
        # DeprecationWarnings are already turned into errors, don't downgrade
364
344
        # them to 'default'.
365
 
        filter = None
366
 
    else:
367
 
        warnings.filterwarnings('default', category=DeprecationWarning)
368
 
        filter = warnings.filters[0]
369
 
    return _remove_filter_callable(filter)
 
345
        return
 
346
    warnings.filterwarnings('default', category=DeprecationWarning)