--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.py Sat Jan 08 11:20:57 2011 +0530
@@ -0,0 +1,87 @@
+# Copyright (c) 2007-2008 Infrae. All rights reserved.
+# $Id: Py.py 32775 2009-01-05 10:53:29Z sylvain $
+
+import os
+import py
+
+from Common import BaseRecipe, prepareURLs
+from Common import checkAddedPaths, checkExistPath, reportInvalidFiles
+
+
+class Recipe(BaseRecipe):
+ """infrae.subversion recipe.
+ """
+
+ def __init__(self, buildout, name, options):
+ super(Recipe, self).__init__(buildout, name, options)
+ if self.verbose:
+ print 'Using py implementation.'
+ if not self.offline: # Py is not able to do svn status
+ # without asking something on a
+ # server.
+ self._updateAllRevisionInformation()
+ self._exportInformationToOptions()
+
+ def _updateRevisionInformation(self, link, path):
+ """Update revision information on a path.
+ """
+ if isinstance(path, str):
+ path = py.path.svnwc(path)
+
+ revision = path.status().rev
+ super(Recipe, self)._updateRevisionInformation(link, revision)
+
+ def _updatePath(self, link, path):
+ """Update a single path.
+ """
+ wc = py.path.svnwc(path)
+ wc.update()
+ self._updateRevisionInformation(link, wc)
+
+ def _installPath(self, link, path):
+ """Checkout a single entry.
+ """
+ if self.export:
+ raise NotImplementedError
+ wc = py.path.svnwc(path)
+ wc.checkout(link)
+ self._updateRevisionInformation(link, wc)
+
+
+def uninstall(name, options):
+ r"""
+ This is an uninstallation hook for the 'infrae.subversion' recipe.
+
+ Its only job is to raise an exception when there are changes in a
+ subversion tree that a user might not want to lose. This function
+ does *not* delete or otherwise touch any files.
+
+ The location of the path is passed as options['location'].
+ """
+ if bool(options.get('export', False)):
+ return # SVN Export, there is nothing to check.
+
+ if bool(options.get('ignore_verification', False)):
+ return # Verification disabled.
+
+
+ # XXX This makes the assumption that we're in the buildout
+ # directory and that our part is in 'parts'. We don't have
+ # options['buildout'] available so no
+ # 'buildout:parts-directory'.
+ location = options.get('location', os.path.join('.', 'parts', name))
+ urls = prepareURLs(location, options['urls'])
+
+ if not checkExistPath(location):
+ return
+
+ checkAddedPaths(location, urls)
+
+ for path in urls.keys():
+ if not checkExistPath(path):
+ continue
+
+ wc = py.path.svnwc(path)
+ status = wc.status(rec=1)
+ badfiles = [] + status.modified + status.incomplete + status.unknown
+ reportInvalidFiles(path, name, [file.strpath for file in badfiles])