/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4679.8.3 by John Arbash Meinel
Expose bzrlib.static_tuple.StaticTuple as a thunk
1
# Copyright (C) 2009 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
17
"""Interface thunk for a StaticTuple implementation."""
18
4668.3.1 by John Arbash Meinel
Fix bug #471193, allow tuples into the CHK code.
19
from bzrlib import debug
20
4679.8.3 by John Arbash Meinel
Expose bzrlib.static_tuple.StaticTuple as a thunk
21
try:
22
    from bzrlib._static_tuple_c import StaticTuple
23
except ImportError, e:
24
    from bzrlib import osutils
25
    osutils.failed_to_load_extension(e)
26
    from bzrlib._static_tuple_py import StaticTuple
27
4668.3.1 by John Arbash Meinel
Fix bug #471193, allow tuples into the CHK code.
28
29
def expect_static_tuple(obj):
30
    """Check if the passed object is a StaticTuple.
31
32
    Cast it if necessary, but if the 'static_tuple' debug flag is set, raise an
33
    error instead.
34
    """
35
    if 'static_tuple' not in debug.debug_flags:
36
        return StaticTuple.from_sequence(obj)
37
    if type(obj) is not StaticTuple:
38
        raise TypeError('We expected a StaticTuple not a %s' % (type(obj),))
39
    return obj