/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/__init__.py

  • Committer: Martin von Gagern
  • Date: 2010-04-20 08:47:38 UTC
  • mfrom: (5167 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5195.
  • Revision ID: martin.vgagern@gmx.net-20100420084738-ygymnqmdllzrhpfn
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""bzr library"""
18
18
 
22
22
# timestamps relative to program start in the log file kept by bzrlib.trace.
23
23
_start_time = time.time()
24
24
 
25
 
from bzrlib.osutils import get_user_encoding
 
25
import sys
 
26
if getattr(sys, '_bzr_lazy_regex', False):
 
27
    # The 'bzr' executable sets _bzr_lazy_regex.  We install the lazy regex
 
28
    # hack as soon as possible so that as much of the standard library can
 
29
    # benefit, including the 'string' module.
 
30
    del sys._bzr_lazy_regex
 
31
    import bzrlib.lazy_regex
 
32
    bzrlib.lazy_regex.install_lazy_compile()
26
33
 
27
34
 
28
35
IGNORE_FILENAME = ".bzrignore"
29
36
 
30
37
 
31
 
# XXX: Compatibility. This should probably be deprecated
32
 
user_encoding = get_user_encoding()
33
 
 
34
 
 
35
 
__copyright__ = "Copyright 2005, 2006, 2007, 2008 Canonical Ltd."
 
38
__copyright__ = "Copyright 2005-2010 Canonical Ltd."
36
39
 
37
40
# same format as sys.version_info: "A tuple containing the five components of
38
41
# the version number: major, minor, micro, releaselevel, and serial. All
41
44
# Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
42
45
# releaselevel of 'dev' for unreleased under-development code.
43
46
 
44
 
version_info = (1, 8, 0, 'dev', 0)
45
 
 
46
 
 
47
 
# API compatibility version: bzrlib is currently API compatible with 1.7.
48
 
api_minimum_version = (1, 7, 0)
 
47
version_info = (2, 2, 0, 'dev', 1)
 
48
 
 
49
# API compatibility version
 
50
api_minimum_version = (2, 2, 0)
49
51
 
50
52
 
51
53
def _format_version_tuple(version_info):
52
 
    """Turn a version number 3-tuple or 5-tuple into a short string.
 
54
    """Turn a version number 2, 3 or 5-tuple into a short string.
53
55
 
54
56
    This format matches <http://docs.python.org/dist/meta-data.html>
55
57
    and the typical presentation used in Python output.
56
58
 
57
59
    This also checks that the version is reasonable: the sub-release must be
58
 
    zero for final releases, and non-zero for alpha, beta and preview.
 
60
    zero for final releases.
59
61
 
60
62
    >>> print _format_version_tuple((1, 0, 0, 'final', 0))
61
 
    1.0
 
63
    1.0.0
62
64
    >>> print _format_version_tuple((1, 2, 0, 'dev', 0))
63
 
    1.2dev
 
65
    1.2.0dev
 
66
    >>> print bzrlib._format_version_tuple((1, 2, 0, 'dev', 1))
 
67
    1.2.0dev1
64
68
    >>> print _format_version_tuple((1, 1, 1, 'candidate', 2))
65
69
    1.1.1rc2
 
70
    >>> print bzrlib._format_version_tuple((2, 1, 0, 'beta', 1))
 
71
    2.1b1
66
72
    >>> print _format_version_tuple((1, 4, 0))
 
73
    1.4.0
 
74
    >>> print _format_version_tuple((1, 4))
67
75
    1.4
 
76
    >>> print bzrlib._format_version_tuple((2, 1, 0, 'final', 1))
 
77
    Traceback (most recent call last):
 
78
    ...
 
79
    ValueError: version_info (2, 1, 0, 'final', 1) not valid
68
80
    >>> print _format_version_tuple((1, 4, 0, 'wibble', 0))
69
81
    Traceback (most recent call last):
70
82
    ...
71
83
    ValueError: version_info (1, 4, 0, 'wibble', 0) not valid
72
84
    """
73
 
    if version_info[2] == 0:
 
85
    if len(version_info) == 2:
74
86
        main_version = '%d.%d' % version_info[:2]
75
87
    else:
76
88
        main_version = '%d.%d.%d' % version_info[:3]
77
89
    if len(version_info) <= 3:
78
90
        return main_version
79
91
 
80
 
    __release_type = version_info[3]
81
 
    __sub = version_info[4]
 
92
    release_type = version_info[3]
 
93
    sub = version_info[4]
82
94
 
83
95
    # check they're consistent
84
 
    if __release_type == 'final' and __sub == 0:
85
 
        __sub_string = ''
86
 
    elif __release_type == 'dev' and __sub == 0:
87
 
        __sub_string = 'dev'
88
 
    elif __release_type in ('alpha', 'beta') and __sub != 0:
89
 
        __sub_string = __release_type[0] + str(__sub)
90
 
    elif __release_type == 'candidate' and __sub != 0:
91
 
        __sub_string = 'rc' + str(__sub)
 
96
    if release_type == 'final' and sub == 0:
 
97
        sub_string = ''
 
98
    elif release_type == 'dev' and sub == 0:
 
99
        sub_string = 'dev'
 
100
    elif release_type == 'dev':
 
101
        sub_string = 'dev' + str(sub)
 
102
    elif release_type in ('alpha', 'beta'):
 
103
        if version_info[2] == 0:
 
104
            main_version = '%d.%d' % version_info[:2]
 
105
        sub_string = release_type[0] + str(sub)
 
106
    elif release_type == 'candidate':
 
107
        sub_string = 'rc' + str(sub)
92
108
    else:
93
109
        raise ValueError("version_info %r not valid" % (version_info,))
94
110
 
95
 
    version_string = '%d.%d.%d.%s.%d' % version_info
96
 
    return main_version + __sub_string
 
111
    return main_version + sub_string
 
112
 
97
113
 
98
114
__version__ = _format_version_tuple(version_info)
99
115
version_string = __version__
100
116
 
101
117
 
102
 
# allow bzrlib plugins to be imported.
103
 
import bzrlib.plugin
104
 
bzrlib.plugin.set_plugins_path()
105
 
 
106
 
 
107
118
def test_suite():
108
119
    import tests
109
120
    return tests.test_suite()
 
121
 
 
122
 
 
123
def initialize(
 
124
    setup_ui=True,
 
125
    stdin=None, stdout=None, stderr=None):
 
126
    """Set up everything needed for normal use of bzrlib.
 
127
 
 
128
    Most applications that embed bzrlib, including bzr itself, should call
 
129
    this function to initialize various subsystems.  
 
130
 
 
131
    More options may be added in future so callers should use named arguments.
 
132
 
 
133
    :param setup_ui: If true (default) use a terminal UI; otherwise 
 
134
        something else must be put into `bzrlib.ui.ui_factory`.
 
135
    :param stdin, stdout, stderr: If provided, use these for terminal IO;
 
136
        otherwise use the files in `sys`.
 
137
    """
 
138
    # TODO: mention this in a guide to embedding bzrlib
 
139
    #
 
140
    # NB: This function tweaks so much global state it's hard to test it in
 
141
    # isolation within the same interpreter.  It's not reached on normal
 
142
    # in-process run_bzr calls.  If it's broken, we expect that
 
143
    # TestRunBzrSubprocess may fail.
 
144
    
 
145
    import atexit
 
146
    import bzrlib.trace
 
147
 
 
148
    bzrlib.trace.enable_default_logging()
 
149
    atexit.register(bzrlib.trace._flush_stdout_stderr)
 
150
    atexit.register(bzrlib.trace._flush_trace)
 
151
 
 
152
    import bzrlib.ui
 
153
    if stdin is None:
 
154
        stdin = sys.stdin
 
155
    if stdout is None:
 
156
        stdout = sys.stdout
 
157
    if stderr is None:
 
158
        stderr = sys.stderr
 
159
 
 
160
    if setup_ui:
 
161
        bzrlib.ui.ui_factory = bzrlib.ui.make_ui_for_terminal(
 
162
            stdin, stdout, stderr)
 
163
 
 
164
    if bzrlib.version_info[3] == 'final':
 
165
        from bzrlib.symbol_versioning import suppress_deprecation_warnings
 
166
        suppress_deprecation_warnings(override=True)
 
167
 
 
168
    import bzrlib.osutils
 
169
    atexit.register(osutils.report_extension_load_failures)