/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
6609.2.3 by Vincent Ladeuil
Merge trunk resolving conflicts
1
# Copyright (C) 2006, 2007, 2009, 2010, 2011, 2016 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
16
6379.6.7 by Jelmer Vernooij
Move importing from future until after doc string, otherwise the doc string will disappear.
17
"""Implementation of Transport that adapts another transport to be readonly."""
18
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
19
from ..errors import TransportNotPossible, NoSmartMedium
20
from ..transport import decorator
5017.3.5 by Vincent Ladeuil
Move ReadonlyServer to bzrlib.tests.readonly
21
22
23
class ReadonlyTransportDecorator(decorator.TransportDecorator):
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
24
    """A decorator that can convert any transport to be readonly.
1558.10.2 by Robert Collins
Refactor the FakeNFS support into a TransportDecorator.
25
26
    This is requested via the 'readonly+' prefix to get_transport().
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
27
    """
28
1955.3.15 by John Arbash Meinel
Deprecate 'Transport.append' in favor of Transport.append_file or Transport.append_bytes
29
    def append_file(self, relpath, f, mode=None):
30
        """See Transport.append_file()."""
31
        raise TransportNotPossible('readonly transport')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
32
1955.3.15 by John Arbash Meinel
Deprecate 'Transport.append' in favor of Transport.append_file or Transport.append_bytes
33
    def append_bytes(self, relpath, bytes, mode=None):
34
        """See Transport.append_bytes()."""
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
35
        raise TransportNotPossible('readonly transport')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
36
1558.10.2 by Robert Collins
Refactor the FakeNFS support into a TransportDecorator.
37
    @classmethod
38
    def _get_url_prefix(self):
39
        """Readonly transport decorators are invoked via 'readonly+'"""
40
        return 'readonly+'
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
41
6606.3.1 by Vincent Ladeuil
Add rename() and open_write_stream() as explicitly not supported via the ReadonlyTransportDecorator to give better feedback when a decorated transport is misused
42
    def rename(self, rel_from, rel_to):
43
        """See Transport.rename."""
44
        raise TransportNotPossible('readonly transport')
45
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
46
    def delete(self, relpath):
47
        """See Transport.delete()."""
48
        raise TransportNotPossible('readonly transport')
49
1534.4.15 by Robert Collins
Remove shutil dependency in upgrade - create a delete_tree method for transports.
50
    def delete_tree(self, relpath):
51
        """See Transport.delete_tree()."""
52
        raise TransportNotPossible('readonly transport')
53
1955.3.6 by John Arbash Meinel
Lots of deprecation warnings, but no errors
54
    def put_file(self, relpath, f, mode=None):
55
        """See Transport.put_file()."""
56
        raise TransportNotPossible('readonly transport')
57
58
    def put_bytes(self, relpath, bytes, mode=None):
59
        """See Transport.put_bytes()."""
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
60
        raise TransportNotPossible('readonly transport')
61
62
    def mkdir(self, relpath, mode=None):
63
        """See Transport.mkdir()."""
64
        raise TransportNotPossible('readonly transport')
65
6606.3.1 by Vincent Ladeuil
Add rename() and open_write_stream() as explicitly not supported via the ReadonlyTransportDecorator to give better feedback when a decorated transport is misused
66
    def open_write_stream(self, relpath, mode=None):
67
        """See Transport.open_write_stream()."""
68
        raise TransportNotPossible('readonly transport')
69
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
70
    def is_readonly(self):
71
        """See Transport.is_readonly."""
72
        return True
73
1534.4.15 by Robert Collins
Remove shutil dependency in upgrade - create a delete_tree method for transports.
74
    def rmdir(self, relpath):
75
        """See Transport.rmdir."""
76
        raise TransportNotPossible('readonly transport')
77
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
78
    def lock_write(self, relpath):
79
        """See Transport.lock_write."""
80
        raise TransportNotPossible('readonly transport')
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
81
2018.5.95 by Andrew Bennetts
Add a Transport.is_readonly remote call, let {Branch,Repository}.lock_write remote call return UnlockableTransport, and miscellaneous test fixes.
82
    def get_smart_client(self):
6606.3.1 by Vincent Ladeuil
Add rename() and open_write_stream() as explicitly not supported via the ReadonlyTransportDecorator to give better feedback when a decorated transport is misused
83
        raise NoSmartMedium(self)
2018.5.95 by Andrew Bennetts
Add a Transport.is_readonly remote call, let {Branch,Repository}.lock_write remote call return UnlockableTransport, and miscellaneous test fixes.
84
85
    def get_smart_medium(self):
86
        raise NoSmartMedium(self)
87
88
1534.4.9 by Robert Collins
Add a readonly decorator for transports.
89
def get_test_permutations():
90
    """Return the permutations to be used in testing."""
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
91
    from ..tests import test_server
6606.3.1 by Vincent Ladeuil
Add rename() and open_write_stream() as explicitly not supported via the ReadonlyTransportDecorator to give better feedback when a decorated transport is misused
92
    return [(ReadonlyTransportDecorator, test_server.ReadonlyServer)]