~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

(jelmer) Use the absolute_import feature everywhere in bzrlib,
 and add a source test to make sure it's used everywhere. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
WorkingTree.open(dir).
30
30
"""
31
31
 
 
32
from __future__ import absolute_import
32
33
 
33
34
from cStringIO import StringIO
34
35
import os
69
70
    )
70
71
""")
71
72
 
 
73
# Explicitly import bzrlib.bzrdir so that the BzrProber
 
74
# is guaranteed to be registered.
 
75
import bzrlib.bzrdir
 
76
 
72
77
from bzrlib import symbol_versioning
73
78
from bzrlib.decorators import needs_read_lock, needs_write_lock
74
79
from bzrlib.i18n import gettext
2795
2800
                # something is wrong, so lets determine what exactly
2796
2801
                if not self.has_filename(from_rel) and \
2797
2802
                   not self.has_filename(to_rel):
2798
 
                    raise errors.BzrRenameFailedError(from_rel,to_rel,
2799
 
                        errors.PathsDoNotExist(paths=(str(from_rel),
2800
 
                        str(to_rel))))
 
2803
                    raise errors.BzrRenameFailedError(from_rel, to_rel,
 
2804
                        errors.PathsDoNotExist(paths=(from_rel, to_rel)))
2801
2805
                else:
2802
2806
                    raise errors.RenameFailedFilesExist(from_rel, to_rel)
2803
2807
            rename_entry.only_change_inv = only_change_inv
3029
3033
 
3030
3034
    supports_versioned_directories = None
3031
3035
 
3032
 
    @classmethod
3033
 
    def find_format_string(klass, controldir):
3034
 
        """Return format name for the working tree object in controldir."""
3035
 
        try:
3036
 
            transport = controldir.get_workingtree_transport(None)
3037
 
            return transport.get_bytes("format")
3038
 
        except errors.NoSuchFile:
3039
 
            raise errors.NoWorkingTree(base=transport.base)
3040
 
 
3041
 
    @classmethod
3042
 
    def find_format(klass, controldir):
3043
 
        """Return the format for the working tree object in controldir."""
3044
 
        try:
3045
 
            format_string = klass.find_format_string(controldir)
3046
 
            return format_registry.get(format_string)
3047
 
        except KeyError:
3048
 
            raise errors.UnknownFormatError(format=format_string,
3049
 
                                            kind="working tree")
3050
 
 
3051
3036
    def initialize(self, controldir, revision_id=None, from_branch=None,
3052
3037
                   accelerator_tree=None, hardlink=False):
3053
3038
        """Initialize a new working tree in controldir.
3078
3063
        """Return the current default format."""
3079
3064
        return format_registry.get_default()
3080
3065
 
3081
 
    def get_format_string(self):
3082
 
        """Return the ASCII format string that identifies this format."""
3083
 
        raise NotImplementedError(self.get_format_string)
3084
 
 
3085
3066
    def get_format_description(self):
3086
3067
        """Return the short description for this format."""
3087
3068
        raise NotImplementedError(self.get_format_description)
3148
3129
        return self._matchingbzrdir
3149
3130
 
3150
3131
 
 
3132
class WorkingTreeFormatMetaDir(bzrdir.BzrDirMetaComponentFormat, WorkingTreeFormat):
 
3133
    """Base class for working trees that live in bzr meta directories."""
 
3134
 
 
3135
    def __init__(self):
 
3136
        WorkingTreeFormat.__init__(self)
 
3137
        bzrdir.BzrDirMetaComponentFormat.__init__(self)
 
3138
 
 
3139
    @classmethod
 
3140
    def find_format_string(klass, controldir):
 
3141
        """Return format name for the working tree object in controldir."""
 
3142
        try:
 
3143
            transport = controldir.get_workingtree_transport(None)
 
3144
            return transport.get_bytes("format")
 
3145
        except errors.NoSuchFile:
 
3146
            raise errors.NoWorkingTree(base=transport.base)
 
3147
 
 
3148
    @classmethod
 
3149
    def find_format(klass, controldir):
 
3150
        """Return the format for the working tree object in controldir."""
 
3151
        format_string = klass.find_format_string(controldir)
 
3152
        return klass._find_format(format_registry, 'working tree',
 
3153
                format_string)
 
3154
 
 
3155
 
3151
3156
format_registry.register_lazy("Bazaar Working Tree Format 4 (bzr 0.15)\n",
3152
3157
    "bzrlib.workingtree_4", "WorkingTreeFormat4")
3153
3158
format_registry.register_lazy("Bazaar Working Tree Format 5 (bzr 1.11)\n",