Mercurial > hgsubversion
comparison svnwrap/svn_swig_wrapper.py @ 298:32d3f1716e66
Two minor optimisations/cleanups for svn_swig_wrapper:
- 'self' is not used in 'RaCallbacks', so use the @staticmethod
decorator syntax introduced in Python 2.4.
- Make 'Revision' derive from 'tuple' and use property getters to
obtain the individual values. In N+1 years, we can use the
NamedRecord introduced in Python 2.6.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Fri, 27 Mar 2009 02:50:01 +0100 |
parents | fa26c7ef0180 |
children | 4aba7542f6a9 |
comparison
equal
deleted
inserted
replaced
297:1611834e39ee | 298:32d3f1716e66 |
---|---|
31 optrev.value.number = revnum | 31 optrev.value.number = revnum |
32 return optrev | 32 return optrev |
33 | 33 |
34 svn_config = core.svn_config_get_config(None) | 34 svn_config = core.svn_config_get_config(None) |
35 class RaCallbacks(ra.Callbacks): | 35 class RaCallbacks(ra.Callbacks): |
36 def open_tmp_file(self, pool): #pragma: no cover | 36 @staticmethod |
37 def open_tmp_file(pool): #pragma: no cover | |
37 (fd, fn) = tempfile.mkstemp() | 38 (fd, fn) = tempfile.mkstemp() |
38 os.close(fd) | 39 os.close(fd) |
39 return fn | 40 return fn |
40 | 41 |
41 def get_client_string(self, pool): | 42 @staticmethod |
43 def get_client_string(pool): | |
42 return 'hgsubversion' | 44 return 'hgsubversion' |
43 | 45 |
44 | 46 |
45 def user_pass_prompt(realm, default_username, ms, pool): #pragma: no cover | 47 def user_pass_prompt(realm, default_username, ms, pool): #pragma: no cover |
46 creds = core.svn_auth_cred_simple_t() | 48 creds = core.svn_auth_cred_simple_t() |
90 ] | 92 ] |
91 | 93 |
92 return core.svn_auth_open(providers, pool) | 94 return core.svn_auth_open(providers, pool) |
93 | 95 |
94 | 96 |
95 class Revision(object): | 97 class Revision(tuple): |
96 """Wrapper for a Subversion revision. | 98 """Wrapper for a Subversion revision. |
99 | |
100 Derives from tuple in an attempt to minimise the memory footprint. | |
97 """ | 101 """ |
98 def __init__(self, revnum, author, message, date, paths, strip_path=''): | 102 def __new__(self, revnum, author, message, date, paths, strip_path=''): |
99 self.revnum, self.author, self.message = revnum, author, message | 103 _paths = {} |
100 # TODO parse this into a datetime | |
101 self.date = date | |
102 self.paths = {} | |
103 if paths: | 104 if paths: |
104 for p in paths: | 105 for p in paths: |
105 self.paths[p[len(strip_path):]] = paths[p] | 106 _paths[p[len(strip_path):]] = paths[p] |
107 return tuple.__new__(self, | |
108 (revnum, author, message, date, _paths)) | |
109 | |
110 def get_revnum(self): | |
111 return self[0] | |
112 revnum = property(get_revnum) | |
113 | |
114 def get_author(self): | |
115 return self[1] | |
116 author = property(get_author) | |
117 | |
118 def get_message(self): | |
119 return self[2] | |
120 message = property(get_message) | |
121 | |
122 def get_date(self): | |
123 return self[3] | |
124 date = property(get_date) | |
125 | |
126 def get_paths(self): | |
127 return self[4] | |
128 paths = property(get_paths) | |
106 | 129 |
107 def __str__(self): | 130 def __str__(self): |
108 return 'r%d by %s' % (self.revnum, self.author) | 131 return 'r%d by %s' % (self.revnum, self.author) |
109 | 132 |
110 _svntypes = { | 133 _svntypes = { |