I (Julian Foad) wrote: > I committed this API change (below) in the ctypes-python bindings. > Should I be revving these APIs in some way, to maintain backward > compatibility, or is this kind of fix considered fair game?
A bit of context. I'm trying to use the Python bindings in order to write tests for the libsvn_client diff API, the 'diff summarize' in particular. I need to bypass the 'svn' command-line client and test the raw results (callbacks), not the screen output that 'svn' produces. And I want to make use of the existing test support functions for setting up a working copy, checking tree results, etc. Greg said just now in another thread <http://svn.haxx.se/dev/archive-2011-08/0205.shtml>: > There is some experimental work using ctypesgen-based bindings. I did > a small amount of work on them a couple years ago, but it could use > more work. [...] Does anyone have a feeling for whether it would make more sense for me to use the swig-py bindings instead for this task at this time? - Julian > Julian Foad wrote: > > In the ctypes-python bindings: fix two RemoteRepository methods to return > > the Python types they claim to return, and add tests for these and other > > methods that had no tests. > > > > This is an API change in the ctypes-python bindings. > > > > * subversion/bindings/ctypes-python/csvn/repos.py > > (RemoteRepository.list): Create and return a Python dictionary of > > svn_dirent_t objects instead of the Hash of pointer objects. > > (RemoteRepository.info): Dereference the pointer object and so return a > > svn_dirent_t object. [...] > > @@ -154,7 +154,12 @@ class RemoteRepository(object): > > svn_ra_get_dir2(self, dirents.byref(), NULL, NULL, path, > > rev, fields, dirents.pool) > > self.iterpool.clear() > > - return dirents > > + # Create a Python dict of svn_dirent_t objects from this Hash of > > + # pointers to svn_dirent_t. > > + result = {} > > + for path, dirent_p in dirents.items(): > > + result[path] = dirent_p[0] > > + return result [...] > > @@ -178,7 +183,7 @@ class RemoteRepository(object): > > rev = self.latest_revnum() > > svn_ra_stat(self, path, rev, byref(dirent), dirent.pool) > > self.iterpool.clear() > > - return dirent > > + return dirent[0]