Mercurial > hg > mercurial-crew-with-dirclash
annotate hgext/convert/transport.py @ 5053:47a8ea1eb2c3
del transaction before lock before wlock
This way rollbacks happen while the repo is still locked.
Deleting lock before wlock is not strictly necessary, but is
more consistent with the locking order.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 02 Aug 2007 01:56:08 -0300 |
parents | cdd33a048289 |
children | 117dab48ca99 |
rev | line source |
---|---|
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
2 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
3 # Copyright (C) 2007 Daniel Holth <dholth@fastmail.fm> |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
4 # This is a stripped-down version of the original bzr-svn transport.py, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
5 # Copyright (C) 2006 Jelmer Vernooij <jelmer@samba.org> |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
6 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
7 # This program is free software; you can redistribute it and/or modify |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
8 # it under the terms of the GNU General Public License as published by |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
9 # the Free Software Foundation; either version 2 of the License, or |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
10 # (at your option) any later version. |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
11 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
15 # GNU General Public License for more details. |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
16 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU General Public License |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
18 # along with this program; if not, write to the Free Software |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
20 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
21 from cStringIO import StringIO |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
22 import os |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
23 from tempfile import mktemp |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
24 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
25 from svn.core import SubversionException, Pool |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
26 import svn.ra |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
27 import svn.client |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
28 import svn.core |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
29 |
4939
cdd33a048289
removed trailing whitespace
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4920
diff
changeset
|
30 # Some older versions of the Python bindings need to be |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
31 # explicitly initialized. But what we want to do probably |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
32 # won't work worth a darn against those libraries anyway! |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
33 svn.ra.initialize() |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
34 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
35 svn_config = svn.core.svn_config_get_config(None) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
36 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
37 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
38 def _create_auth_baton(pool): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
39 """Create a Subversion authentication baton. """ |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
40 import svn.client |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
41 # Give the client context baton a suite of authentication |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
42 # providers.h |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
43 providers = [ |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
44 svn.client.get_simple_provider(pool), |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
45 svn.client.get_username_provider(pool), |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
46 svn.client.get_ssl_client_cert_file_provider(pool), |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
47 svn.client.get_ssl_client_cert_pw_file_provider(pool), |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
48 svn.client.get_ssl_server_trust_file_provider(pool), |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
49 ] |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
50 return svn.core.svn_auth_open(providers, pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
51 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
52 class NotBranchError(SubversionException): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
53 pass |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
54 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
55 class SvnRaTransport(object): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
56 """ |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
57 Open an ra connection to a Subversion repository. |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
58 """ |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
59 def __init__(self, url="", ra=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
60 self.pool = Pool() |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
61 self.svn_url = url |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
62 self.username = '' |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
63 self.password = '' |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
64 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
65 # Only Subversion 1.4 has reparent() |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
66 if ra is None or not hasattr(svn.ra, 'reparent'): |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
67 self.client = svn.client.create_context(self.pool) |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
68 ab = _create_auth_baton(self.pool) |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
69 if False: |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
70 svn.core.svn_auth_set_parameter( |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
71 ab, svn.core.SVN_AUTH_PARAM_DEFAULT_USERNAME, self.username) |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
72 svn.core.svn_auth_set_parameter( |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
73 ab, svn.core.SVN_AUTH_PARAM_DEFAULT_PASSWORD, self.password) |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
74 self.client.auth_baton = ab |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
75 self.client.config = svn_config |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
76 try: |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
77 self.ra = svn.client.open_ra_session( |
4939
cdd33a048289
removed trailing whitespace
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4920
diff
changeset
|
78 self.svn_url.encode('utf8'), |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
79 self.client, self.pool) |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
80 except SubversionException, (_, num): |
4920
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
81 if num in (svn.core.SVN_ERR_RA_ILLEGAL_URL, |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
82 svn.core.SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED, |
4db03fa58bd5
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4757
diff
changeset
|
83 svn.core.SVN_ERR_BAD_URL): |
4757
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
84 raise NotBranchError(url) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
85 raise |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
86 else: |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
87 self.ra = ra |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
88 svn.ra.reparent(self.ra, self.svn_url.encode('utf8')) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
89 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
90 class Reporter: |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
91 def __init__(self, (reporter, report_baton)): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
92 self._reporter = reporter |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
93 self._baton = report_baton |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
94 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
95 def set_path(self, path, revnum, start_empty, lock_token, pool=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
96 svn.ra.reporter2_invoke_set_path(self._reporter, self._baton, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
97 path, revnum, start_empty, lock_token, pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
98 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
99 def delete_path(self, path, pool=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
100 svn.ra.reporter2_invoke_delete_path(self._reporter, self._baton, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
101 path, pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
102 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
103 def link_path(self, path, url, revision, start_empty, lock_token, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
104 pool=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
105 svn.ra.reporter2_invoke_link_path(self._reporter, self._baton, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
106 path, url, revision, start_empty, lock_token, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
107 pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
108 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
109 def finish_report(self, pool=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
110 svn.ra.reporter2_invoke_finish_report(self._reporter, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
111 self._baton, pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
112 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
113 def abort_report(self, pool=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
114 svn.ra.reporter2_invoke_abort_report(self._reporter, |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
115 self._baton, pool) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
116 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
117 def do_update(self, revnum, path, *args, **kwargs): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
118 return self.Reporter(svn.ra.do_update(self.ra, revnum, path, *args, **kwargs)) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
119 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
120 def clone(self, offset=None): |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
121 """See Transport.clone().""" |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
122 if offset is None: |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
123 return self.__class__(self.base) |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
124 |
6a16ef0d1c7c
convert extension: stripped-down svn transport module
Daniel Holth <dholth@fastmail.fm>
parents:
diff
changeset
|
125 return SvnRaTransport(urlutils.join(self.base, offset), ra=self.ra) |