/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 breezy/library_state.py

  • Committer: Jelmer Vernooij
  • Date: 2018-02-18 21:42:57 UTC
  • mto: This revision was merged to the branch mainline in revision 6859.
  • Revision ID: jelmer@jelmer.uk-20180218214257-jpevutp1wa30tz3v
Update TODO to reference Breezy, not Bazaar.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""The core state needed to make use of bzr is managed here."""
18
18
 
 
19
from __future__ import absolute_import
 
20
 
19
21
__all__ = [
20
22
    'BzrLibraryState',
21
23
    ]
22
24
 
23
25
 
24
 
import contextlib
25
 
 
26
 
 
27
26
import breezy
28
27
from .lazy_import import lazy_import
29
28
lazy_import(globals(), """
30
29
from breezy import (
 
30
    cleanup,
31
31
    config,
32
32
    osutils,
33
33
    symbol_versioning,
44
44
    currently always exposed as breezy._global_state, but we desired to move
45
45
    to a point where no global state is needed at all.
46
46
 
47
 
    :ivar exit_stack: An ExitStack which can be used for cleanups that
 
47
    :ivar cleanups: An ObjectWithCleanups which can be used for cleanups that
48
48
        should occur when the use of breezy is completed. This is initialised
49
49
        in __enter__ and executed in __exit__.
50
50
    """
75
75
        # arguments are parsed.
76
76
        self.cmdline_overrides = config.CommandLineStore()
77
77
        # No config stores are cached to start with
78
 
        self.config_stores = {}  # By url
 
78
        self.config_stores = {} # By url
79
79
        self.started = False
80
80
 
81
81
    def __enter__(self):
82
82
        if not self.started:
83
83
            self._start()
84
 
        return self  # This is bound to the 'as' clause in a with statement.
 
84
        return self # This is bound to the 'as' clause in a with statement.
85
85
 
86
86
    def _start(self):
87
87
        """Do all initialization."""
89
89
        # isolation within the same interpreter.  It's not reached on normal
90
90
        # in-process run_bzr calls.  If it's broken, we expect that
91
91
        # TestRunBzrSubprocess may fail.
92
 
        self.exit_stack = contextlib.ExitStack()
 
92
        self.cleanups = cleanup.ObjectWithCleanups()
93
93
 
94
94
        if breezy.version_info[3] == 'final':
95
 
            self.exit_stack.callback(
 
95
            self.cleanups.add_cleanup(
96
96
                symbol_versioning.suppress_deprecation_warnings(override=True))
97
97
 
98
98
        self._trace.__enter__()
99
99
 
100
100
        self._orig_ui = breezy.ui.ui_factory
101
 
        if self._ui is not None:
102
 
            breezy.ui.ui_factory = self._ui
103
 
            self._ui.__enter__()
 
101
        breezy.ui.ui_factory = self._ui
 
102
        self._ui.__enter__()
104
103
 
105
104
        if breezy._global_state is not None:
106
105
            raise RuntimeError("Breezy already initialized")
112
111
            # Save config changes
113
112
            for k, store in self.config_stores.items():
114
113
                store.save_changes()
115
 
        self.exit_stack.close()
 
114
        self.cleanups.cleanup_now()
116
115
        trace._flush_stdout_stderr()
117
116
        trace._flush_trace()
118
117
        osutils.report_extension_load_failures()
119
 
        if self._ui is not None:
120
 
            self._ui.__exit__(None, None, None)
 
118
        self._ui.__exit__(None, None, None)
121
119
        self._trace.__exit__(None, None, None)
122
120
        ui.ui_factory = self._orig_ui
123
121
        breezy._global_state = None
124
 
        return False  # propogate exceptions.
 
122
        return False # propogate exceptions.