diff options
author | Nishanth Amuluru | 2011-01-08 11:20:57 +0530 |
---|---|---|
committer | Nishanth Amuluru | 2011-01-08 11:20:57 +0530 |
commit | 65411d01d448ff0cd4abd14eee14cf60b5f8fc20 (patch) | |
tree | b4c404363c4c63a61d6e2f8bd26c5b057c1fb09d /eggs/infrae.subversion-1.4.5-py2.6.egg | |
parent | 2e35094d43b4cc6974172e1febf76abb50f086ec (diff) | |
download | pytask-65411d01d448ff0cd4abd14eee14cf60b5f8fc20.tar.gz pytask-65411d01d448ff0cd4abd14eee14cf60b5f8fc20.tar.bz2 pytask-65411d01d448ff0cd4abd14eee14cf60b5f8fc20.zip |
Added buildout stuff and made changes accordingly
--HG--
rename : profile/management/__init__.py => eggs/djangorecipe-0.20-py2.6.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/djangorecipe-0.20-py2.6.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => eggs/py-1.4.0-py2.6.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/py-1.4.0-py2.6.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => eggs/zc.buildout-1.5.2-py2.6.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/zc.buildout-1.5.2-py2.6.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => eggs/zc.recipe.egg-1.3.2-py2.6.egg/EGG-INFO/dependency_links.txt
rename : profile/management/__init__.py => eggs/zc.recipe.egg-1.3.2-py2.6.egg/EGG-INFO/not-zip-safe
rename : profile/management/__init__.py => parts/django/Django.egg-info/dependency_links.txt
rename : taskapp/models.py => parts/django/django/conf/app_template/models.py
rename : taskapp/tests.py => parts/django/django/conf/app_template/tests.py
rename : taskapp/views.py => parts/django/django/conf/app_template/views.py
rename : taskapp/views.py => parts/django/django/contrib/gis/tests/geo3d/views.py
rename : profile/management/__init__.py => parts/django/tests/modeltests/delete/__init__.py
rename : profile/management/__init__.py => parts/django/tests/modeltests/files/__init__.py
rename : profile/management/__init__.py => parts/django/tests/modeltests/invalid_models/__init__.py
rename : profile/management/__init__.py => parts/django/tests/modeltests/m2m_signals/__init__.py
rename : profile/management/__init__.py => parts/django/tests/modeltests/model_package/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/bash_completion/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/bash_completion/management/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/bash_completion/management/commands/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/bash_completion/models.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/delete_regress/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/file_storage/__init__.py
rename : profile/management/__init__.py => parts/django/tests/regressiontests/max_lengths/__init__.py
rename : profile/forms.py => pytask/profile/forms.py
rename : profile/management/__init__.py => pytask/profile/management/__init__.py
rename : profile/management/commands/seed_db.py => pytask/profile/management/commands/seed_db.py
rename : profile/models.py => pytask/profile/models.py
rename : profile/templatetags/user_tags.py => pytask/profile/templatetags/user_tags.py
rename : taskapp/tests.py => pytask/profile/tests.py
rename : profile/urls.py => pytask/profile/urls.py
rename : profile/utils.py => pytask/profile/utils.py
rename : profile/views.py => pytask/profile/views.py
rename : static/css/base.css => pytask/static/css/base.css
rename : taskapp/tests.py => pytask/taskapp/tests.py
rename : taskapp/views.py => pytask/taskapp/views.py
rename : templates/base.html => pytask/templates/base.html
rename : templates/profile/browse_notifications.html => pytask/templates/profile/browse_notifications.html
rename : templates/profile/edit.html => pytask/templates/profile/edit.html
rename : templates/profile/view.html => pytask/templates/profile/view.html
rename : templates/profile/view_notification.html => pytask/templates/profile/view_notification.html
rename : templates/registration/activate.html => pytask/templates/registration/activate.html
rename : templates/registration/activation_email.txt => pytask/templates/registration/activation_email.txt
rename : templates/registration/activation_email_subject.txt => pytask/templates/registration/activation_email_subject.txt
rename : templates/registration/logged_out.html => pytask/templates/registration/logged_out.html
rename : templates/registration/login.html => pytask/templates/registration/login.html
rename : templates/registration/logout.html => pytask/templates/registration/logout.html
rename : templates/registration/password_change_done.html => pytask/templates/registration/password_change_done.html
rename : templates/registration/password_change_form.html => pytask/templates/registration/password_change_form.html
rename : templates/registration/password_reset_complete.html => pytask/templates/registration/password_reset_complete.html
rename : templates/registration/password_reset_confirm.html => pytask/templates/registration/password_reset_confirm.html
rename : templates/registration/password_reset_done.html => pytask/templates/registration/password_reset_done.html
rename : templates/registration/password_reset_email.html => pytask/templates/registration/password_reset_email.html
rename : templates/registration/password_reset_form.html => pytask/templates/registration/password_reset_form.html
rename : templates/registration/registration_complete.html => pytask/templates/registration/registration_complete.html
rename : templates/registration/registration_form.html => pytask/templates/registration/registration_form.html
rename : utils.py => pytask/utils.py
Diffstat (limited to 'eggs/infrae.subversion-1.4.5-py2.6.egg')
22 files changed, 873 insertions, 0 deletions
diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/PKG-INFO b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/PKG-INFO new file mode 100644 index 0000000..c6d2fca --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/PKG-INFO @@ -0,0 +1,259 @@ +Metadata-Version: 1.0 +Name: infrae.subversion +Version: 1.4.5 +Summary: Buildout recipe for checking out from subversion +Home-page: https://svn.infrae.com/buildout/infrae.subversion/trunk/ +Author: Eric Casteleijn, Guido Wesdorp, Daniel Nouri, Sylvain Viollon and Reinout van Rees +Author-email: info@infrae.com +License: ZPL 2.1 +Description: infrae.subversion + ================= + + This zc.buildout recipe will check out a *number* of URLs into its + parts directory. It won't remove its parts directory if there are any + changes in the checkout, so it's safe to work with that checkout for + development. + + This is an example buildout part that uses this recipe:: + + [development-products] + recipe = infrae.subversion + urls = + https://svn.plone.org/svn/collective/PDBDebugMode/trunk PDBDebugMode + + This will maintain a working copy of ``PDBDebugMode`` in the + ``parts/development-products/PDBDebugMode`` directory (*not* in the + parts directory itself). Thus, the recipe handles multiple URLs fine. + + You can select a different location with ``location``, for instance:: + + location = src + + Will extract ``PDBDebugMode`` in ``src/PDBDebugMode`` instead of + ``parts``. + + If you have ``pysvn`` installed on the computer, it will be used. This + implies better performances. + + Update + ------ + + By default, when buildout update the part, an ``svn up`` is done for + each link. However, when a revision number is specified like this:: + + https://svn.infrae.com/buildout/infrae.subversion/trunk@27829 + + The SVN link is skipped for update. If you want to prevent update for + all SVN link of the part even if they do not contain revision number, + you can add the following option:: + + ignore_updates = true + + Export + ------ + + With ``pysvn`` installed, you can specify:: + + export = true + + in your buildout part to get an SVN export instead of an SVN checkout. + + Verification + ------------ + + By default, your checkout are checked against local modification + before any uninstallation step. This can take time on large checkouts, + and you may don't want it in some case (like when used on buildbot for + instance). To prevent this step, you can use this option:: + + ignore_verification = true + + As well, when the recipe update it can emit some warnings because a + directory have been removed. You can suppress that warning with:: + + no_warnings = true + + The verification will still be done, and the directory will be checked + out again to replace the missing one. + + Eggs + ---- + + If you set the option ``as_eggs`` in your configuration file, + checkouted URLs will be registered as development eggs in your + buildout. This only work for non-recipe development eggs. + + .. warning:: If you add a new egg, this will trigger a new + uninstall-reinstall cycle. You may want to use that option to setup + eggs coming from SVN for production, but not for development. + + Exported Variables + ------------------ + + If you set:: + + export_info = true + + Two variables will be exported by this recipe: + + - ``revisions`` which gives for each URL the corresponding revision + number, + + - ``updated`` which gives a list of URLs which have been updated with + new code. + + Since values to these variables changes each time you run buildout + (revision number changes), this trigger an uninstall/reinstall of the + part. We recommand to activate it only if you need it. + + Is always exported a variable ``location`` to say where are done the + checkouts, and a variable ``eggs`` which contains a list of + checkouted eggs. + + Sample + ------ + + For an example buildout that uses this recipe, please see the `Silva + buildout <https://svn.infrae.com/buildout/silva/trunk>`_. + + As well, the `doctest file + <https://svn.infrae.com/buildout/infrae.subversion/trunk/infrae/subversion/tests/IMPL.txt>`_ + can provide more sample. + + Latest version + -------------- + + The latest version is available in a `Subversion repository + <https://svn.infrae.com/buildout/infrae.subversion/trunk#egg=infrae.subversion-dev>`_. + + + Changes + ------- + + 1.4.5 (2009-01-29) + ~~~~~~~~~~~~~~~~~~ + + - Fix an error when some path have been added to the checkout + path. [eric] + + - Still eggify and export information on update when running as + non-newest mode. [sylvain] + + 1.4.4 (2009-01-28) + ~~~~~~~~~~~~~~~~~~ + + - Add a ``no_warnings`` options which remove some warnings when + updating a part. [sylvain] + + 1.4.3 (2009-01-21) + ~~~~~~~~~~~~~~~~~~ + + - Add a login callback for people using PySVN. This let users + authenticate to an unauthorized svn. Thanks to Martin Stadler + (martin at siarp.de) for this fix. [sylvain] + + 1.4.2 (2009-01-05) + ~~~~~~~~~~~~~~~~~~ + + - Automatically ignore ``.pyc`` and ``.pyo`` files while checking for + modified/added/removed files. [sylvain] + + - Fix bug so ``.svn`` directory is really ignored when checking for + added paths in the checkout directory. [sylvain] + + 1.4.1 (2008-10-31) + ~~~~~~~~~~~~~~~~~~ + + Bug fix: + + - Correct typo in README.txt. [sylvain] + + - Ignore ``.svn`` directory when checking for added ones at + uninstall. [sylvain] + + 1.4 (2008-10-31) + ~~~~~~~~~~~~~~~~ + + New features: + + - Added ``location`` option that allows you to override the default + /parts/partname location. [reinout] + + - Added ``as_eggs`` option that installs the checkouts as development + eggs. [reinout] + + Bug fix: + + - Don't export revisions information if you're offline with Py. Py + tries to connect to the SVN repository to do a 'svn info'. [sylvain] + + 1.3.1 + ~~~~~ + + Bug fix: + + - don't try to collect export information if you have a svn + export. [sylvain] + + - path were exported instead of URLs in the Native + implementation. [sylvain] + + 1.3 + ~~~ + + - Remove the restriction to py 0.9.0, now that py 0.9.2 is out and fix + problems on svn status with strange userid. [sylvain] + + - Correct an error rendering. [sylvain] + + - Export information only for top level svn URLs in the native + implementation, this used to inject information from svn:externals + links included in URL list. [sylvain] + + - Add tests for export information feature. [tlotze] + + - Correct URL in setup.py [sylvain]. + + 1.2 + ~~~ + + - Refactor code, performances should be better at uninstall with Py + implementation [sylvain]. + + - Look for the environment variable ``INFRAE_SUBVERSION_IMPL`` to + select which implementation to use. Possible values are ``PYSVN`` + (default) and ``PY`` [sylvain]. + + - Uninstall only look at directory which have been created by the + recipe in the part. Other are just reported [sylvain]. + + - Export two new variables, if ``export_info`` is set to true: + + ``revisions`` + + Which is lines formatted:: + + link current_revision + + ``updated`` + + Which is lines containing updated links. + + + [sylvain]. + + 1.1 + ~~~ + + - Add the ``ignore_verification`` option [sylvain]. + + 1.0 + ~~~ + + - Base version of the recipe. + +Keywords: subversion buildout +Platform: UNKNOWN +Classifier: Framework :: Buildout +Classifier: License :: OSI Approved :: Zope Public License +Classifier: Topic :: Software Development :: Version Control diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/SOURCES.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/SOURCES.txt new file mode 100644 index 0000000..843420c --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/SOURCES.txt @@ -0,0 +1,21 @@ +README.txt +buildout.cfg +setup.cfg +setup.py +docs/HISTORY.txt +infrae/__init__.py +infrae.subversion.egg-info/PKG-INFO +infrae.subversion.egg-info/SOURCES.txt +infrae.subversion.egg-info/dependency_links.txt +infrae.subversion.egg-info/entry_points.txt +infrae.subversion.egg-info/namespace_packages.txt +infrae.subversion.egg-info/requires.txt +infrae.subversion.egg-info/top_level.txt +infrae/subversion/Common.py +infrae/subversion/Native.py +infrae/subversion/Py.py +infrae/subversion/__init__.py +infrae/subversion/tests/EXPORT.txt +infrae/subversion/tests/IMPL.txt +infrae/subversion/tests/__init__.py +infrae/subversion/tests/test_impl.py
\ No newline at end of file diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/dependency_links.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/entry_points.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/entry_points.txt new file mode 100644 index 0000000..578b85e --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/entry_points.txt @@ -0,0 +1,6 @@ +[zc.buildout] +default = infrae.subversion:Recipe + +[zc.buildout.uninstall] +default = infrae.subversion:uninstall + diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/namespace_packages.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/namespace_packages.txt new file mode 100644 index 0000000..b8d1036 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/namespace_packages.txt @@ -0,0 +1 @@ +infrae diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/not-zip-safe b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/not-zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/not-zip-safe @@ -0,0 +1 @@ + diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/requires.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/requires.txt new file mode 100644 index 0000000..c083e73 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/requires.txt @@ -0,0 +1,11 @@ +zc.buildout +setuptools +py + +[test] +setuptools +zc.buildout +zc.recipe.egg +zope.testing +svnhelper +py
\ No newline at end of file diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/top_level.txt b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/top_level.txt new file mode 100644 index 0000000..b8d1036 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/top_level.txt @@ -0,0 +1 @@ +infrae diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.py new file mode 100644 index 0000000..a839e5c --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2007-2008 Infrae. All rights reserved. +# $Id$ + +__import__('pkg_resources').declare_namespace(__name__) diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.pyo Binary files differnew file mode 100644 index 0000000..0596d1d --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.py new file mode 100644 index 0000000..234ef6b --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.py @@ -0,0 +1,244 @@ +# Copyright (c) 2007-2008 Infrae. All rights reserved. +# $Id: Common.py 33243 2009-01-29 10:59:47Z sylvain $ + +from sets import Set # For python 2.3 compatibility +import os.path +import os +import re + + +import zc.buildout + + +def ignoredFile(file): + """Return true if the file should be ignored while checking for + added/changed/modified files. + """ + for suffix in ['.pyc', '.pyo', '.egg-info']: + if file.endswith(suffix): + return True + return False + + +def reportInvalidFiles(path, name, badfiles): + """Report invalid files. + """ + badfiles = [file for file in badfiles if not ignoredFile(file)] + if not badfiles: + return + raise ValueError("""\ +In '%s': +local modifications detected while uninstalling %r: Uninstall aborted! + +Please check for local modifications and make sure these are checked +in. + +If you sure that these modifications can be ignored, remove the +checkout manually: + + rm -rf %s + +Or if applicable, add the file to the 'svn:ignore' property of the +file's container directory. Alternatively, add an ignore glob pattern +to your subversion client's 'global-ignores' configuration variable. +""" % (path, name, """ + rm -rf """.join(badfiles))) + + +def checkExistPath(path, warning=True): + """Check that a path exist. + """ + status = os.path.exists(path) + if not status and warning: + print "-------- WARNING --------" + print "Directory %s have been removed." % os.path.abspath(path) + print "Changes might be lost." + print "-------- WARNING --------" + return status + + +def checkAddedPaths(location, urls): + """Check that no path have been added to that location. + """ + current_paths = Set([os.path.join(location, s) for s in + os.listdir(location)]) + recipe_paths = Set(urls.keys()) + added_paths = list(current_paths - recipe_paths) + for path in added_paths[:]: + if path.endswith('.svn'): + added_paths.remove(path) + if added_paths: + msg = "New path have been added to the location: %s." + raise ValueError(msg % ', '.join(added_paths)) + + +def prepareURLs(location, urls): + """Given a list of urls/path, and a location, prepare a list of + tuple with url, full path. + """ + + def prepareEntry(line): + link, path = line.split() + return os.path.join(location, path), link + + return dict([prepareEntry(l) for l in urls.splitlines() if l.strip()]) + + +def extractNames(urls): + """Return just the target names of the urls (used for egg names)""" + + def extractName(line): + link, name = line.split() + return name + + return [extractName(line) for line in urls.splitlines() if line.strip()] + + +class BaseRecipe(object): + """infrae.subversion recipe. Base class. + """ + + def __init__(self, buildout, name, options): + self.buildout = buildout + self.name = name + self.options = options + # location is overridable if desired. + location = options.get('location', None) + if location: + self.location = os.path.abspath(os.path.join( + buildout['buildout']['directory'], location)) + else: + self.location = os.path.join( + buildout['buildout']['parts-directory'], self.name) + options['location'] = self.location + self.revisions = {} # Store revision information for each link + self.updated = [] # Store updated links + self.urls = prepareURLs(self.location, options['urls']) + self.export = options.get('export') + self.offline = buildout['buildout'].get('offline', 'false') == 'true' + self.eggify = options.get('as_eggs', False) + self.eggs = self.eggify and extractNames(options['urls']) or [] + self.newest = ( + not self.offline and + buildout['buildout'].get('newest', 'true') == 'true' + ) + self.verbose = buildout['buildout'].get('verbosity', 0) + self.warning = not (options.get('no_warnings', 'false') == 'true') + + def _exportInformationToOptions(self): + """Export revision and changed information to options. + + Options can only contains strings. + """ + if self.options.get('export_info', False): + self.options['updated'] = str('\n'.join(self.updated)) + str_revisions = ['%s %s' % r for r in self.revisions.items() + if r[1]] + self.options['revisions'] = str('\n'.join(sorted(str_revisions))) + # Always export egg list + self.options['eggs'] = '\n'.join(sorted(self.eggs)) + + def _updateAllRevisionInformation(self): + """Update all revision information for defined urls. + """ + for path, link in self.urls.items(): + if os.path.exists(path): + self._updateRevisionInformation(link, path) + + def _updateRevisionInformation(self, link, revision): + """Update revision information on a path. + """ + old_revision = self.revisions.get(link, None) + self.revisions[link] = revision + if not (old_revision is None): + self.updated.append(link) + + def _updatePath(self, link, path): + """Update a single path. + """ + raise NotImplementedError + + def _updateAllPaths(self): + """Update the checkouts. + """ + ignore = self.options.get('ignore_updates', False) or self.export + + num_release = re.compile('.*@[0-9]+$') + for path, link in self.urls.items(): + if not checkExistPath(path, warning=self.warning): + if self.verbose: + print "Entry %s missing, checkout a new version ..." % link + self._installPath(link, path) + continue + + if ignore: + continue + + if num_release.match(link): + if self.verbose: + print "Given num release for %s, skipping." % link + continue + + if self.verbose: + print "Updating %s" % path + self._updatePath(link, path) + + def update(self): + """Update the recipe. + + Does not update SVN path if the buildout is in offline mode, + but still eggify and export information. + """ + if self.newest: + self._updateAllPaths() + + if self.eggify: + self._eggify() + self._exportInformationToOptions() + return self.location + + def _installPath(self, link, path): + """Checkout a single entry. + """ + raise NotImplementedError + + def _installPathVerbose(self, link, path): + """Checkout a single entry with verbose. + """ + if self.verbose: + print "%s %s to %s" % (self.export and 'Export' or 'Fetch', + link, path) + self._installPath(link, path) + + def _eggify(self): + """Install everything as development eggs if eggs=true""" + if self.eggify: + target = self.buildout['buildout']['develop-eggs-directory'] + for path in self.urls.keys(): + # If we update the recipe, and we don't have newest, + # and that some path have been deleted, all of them + # might not be there. + if checkExistPath(path, warning=self.warning): + zc.buildout.easy_install.develop(path, target) + + def install(self): + """Checkout the checkouts. + + Fails if buildout is running in offline mode. + """ + + for path, link in self.urls.items(): + self._installPathVerbose(link, path) + installed = [self.location] + + if self.eggify: + self._eggify() + # And also return the develop-eggs/*.egg-link files that are + # ours so that an uninstall automatically zaps them. + dev_dir = self.buildout['buildout']['develop-eggs-directory'] + egg_links = ['%s.egg-link' % egg for egg in self.eggs] + egg_links = [os.path.join(dev_dir, link) for link in egg_links] + installed += egg_links + self._exportInformationToOptions() + + return installed diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.pyo Binary files differnew file mode 100644 index 0000000..df510e5 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.py new file mode 100644 index 0000000..d43b4b7 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.py @@ -0,0 +1,140 @@ +# Copyright (c) 2007-2008 Infrae. All rights reserved. +# $Id: Native.py 33170 2009-01-21 15:46:45Z sylvain $ + +from pysvn import wc_status_kind, opt_revision_kind, wc_notify_action +import pysvn + +from Common import BaseRecipe, prepareURLs +from Common import checkAddedPaths, checkExistPath, reportInvalidFiles + +import os +import re +import getpass + + +def createSVNClient(recipe): + """Create a pysvn client, and setup some callback and options. + """ + + def callback_ssl(info): + print "-------- SECURITY WARNING --------" + print "There is no valid SSL certificat for %s." % info['realm'] + print "Check that the files are correct after being fetched." + print "-------- SECURITY WARNING --------" + return True, 0, False + + def callback_login(realm, username, may_save): + print 'Authentication realm: ' + realm + user = raw_input('Username: ') + password = getpass.getpass('Password for ' + "'" + user + "': ") + return True, user, password, True + + def callback_notify(info): + if info['action'] == wc_notify_action.update_completed: + path = info['path'] + url = recipe.urls.get(path, None) + if not (url is None): + recipe._updateRevisionInformation(url, path, info['revision']) + + client = pysvn.Client() + client.set_interactive(True) + client.callback_ssl_server_trust_prompt = callback_ssl + client.callback_get_login = callback_login + if not (recipe is None): + client.callback_notify = callback_notify + return client + + +class Recipe(BaseRecipe): + """infrae.subversion recipe. + """ + + def __init__(self, buildout, name, options): + super(Recipe, self).__init__(buildout, name, options) + if self.verbose: + print 'Using pysvn implementation.' + self.client = createSVNClient(self) + if not self.export: + self._updateAllRevisionInformation() + self._exportInformationToOptions() + + def _updateRevisionInformation(self, link, path, revision=None): + """Update revision information on a path. + """ + if revision is None: + if self.export: + return + info = self.client.info(path) + revision = info['revision'] + + assert (revision.kind == opt_revision_kind.number) + super(Recipe, self)._updateRevisionInformation(link, revision.number) + + def _updatePath(self, link, path): + """Update a single path. + """ + self.client.update(path) + + def _parseRevisionInUrl(self, url): + """Parse URL to extract revision number. This is not done by + pysvn, so we have to do it by ourself. + """ + num_release = re.compile('(.*)@([0-9]+)$') + match = num_release.match(url) + if match: + return (match.group(1), + pysvn.Revision(opt_revision_kind.number, + int(match.group(2)))) + return (url, pysvn.Revision(opt_revision_kind.head)) + + def _installPath(self, link, path): + """Checkout a single entry. + """ + link, wanted_revision = self._parseRevisionInUrl(link) + if self.export: + method = self.client.export + else: + method = self.client.checkout + method(link, path, revision=wanted_revision, recurse=True) + + +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']) + client = createSVNClient(None) + + bad_svn_status = [wc_status_kind.modified, + wc_status_kind.missing, + wc_status_kind.unversioned, ] + + if not checkExistPath(location): + return + + checkAddedPaths(location, urls) + + for path in urls.keys(): + if not checkExistPath(path): + continue + + badfiles = filter(lambda e: e['text_status'] in bad_svn_status, + client.status(path)) + reportInvalidFiles(path, name, [file['path'] for file in badfiles]) diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.pyo Binary files differnew file mode 100644 index 0000000..bf95d58 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.py new file mode 100644 index 0000000..05e297b --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.py @@ -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]) diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.pyo Binary files differnew file mode 100644 index 0000000..c2ed51d --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.py new file mode 100644 index 0000000..d13d541 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.py @@ -0,0 +1,22 @@ +# Copyright (c) 2007-2008 Infrae. All rights reserved. +# $Id$ + +import os + +impl = os.getenv('INFRAE_SUBVERSION_IMPL', 'PYSVN') + +if impl == 'PYSVN': + try: + # Try to use a native binding, use native SVN. + import Native + Recipe = Native.Recipe + uninstall = Native.uninstall + except: + # Or if the binding is not present, use slow py. + impl = 'PY' + +if impl == 'PY': + import Py + Recipe = Py.Recipe + uninstall = Py.uninstall + diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.pyo Binary files differnew file mode 100644 index 0000000..14c6b2d --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.py diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.pyo Binary files differnew file mode 100644 index 0000000..f5a5ae4 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.pyo diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.py b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.py new file mode 100644 index 0000000..55e6988 --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.py @@ -0,0 +1,75 @@ +## -*- coding: utf-8 -*- + +__author__ = "sylvain@infrae.com" +__format__ = "plaintext" +__version__ = "$Id: test_impl.py 31670 2008-10-31 10:21:14Z sylvain $" + +import doctest +import os +import os.path +import sys +import unittest +from doctest import DocFileSuite + +import py +import svnhelper.testing +import svnhelper.tests +import zc.buildout.testing +from svnhelper.core import helper + +import infrae.subversion + + +def setUp(test): + test_package = os.path.dirname(svnhelper.tests.__file__) + test_package = os.path.join(test_package, 'tests', 'my.testing') + tested_package = os.path.dirname(infrae.subversion.__file__) + + zc.buildout.testing.buildoutSetUp(test) + zc.buildout.testing.install('py', test) + zc.buildout.testing.install_develop('infrae.subversion', test) + svnhelper.testing.setUpRepository(test) + test.globs['init_test_package'](test_package) + helper.import_to(test_package, + test.globs['repository']) + helper.import_to(tested_package, + test.globs['repository'] + '/infrae.subversion/trunk/infrae.subversion') + +def tearDown(test): + svnhelper.testing.tearDownRepository(test) + zc.buildout.testing.buildoutTearDown(test) + +flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | + doctest.REPORT_ONLY_FIRST_FAILURE | doctest.REPORT_NDIFF) + +def have_pysvn(): + impl = os.getenv('INFRAE_SUBVERSION_IMPL', 'PYSVN') + if impl == 'PYSVN': + try: + import pysvn + return True + except: + pass + return False + +def test_file(name): + return os.path.join(os.path.dirname(__file__), name) + +def test_suite(): + tests = [DocFileSuite(test_file('IMPL.txt'), + optionflags=flags, + globs=globals(), + setUp=setUp, + tearDown=tearDown, + module_relative=False)] + if have_pysvn(): + tests += [DocFileSuite(test_file('EXPORT.txt'), + optionflags=flags, + globs=globals(), + setUp=setUp, + tearDown=tearDown, + module_relative=False)] + return unittest.TestSuite(tests) + +if __name__ == '__main__': + unittest.main(defaultTest='test_suite') diff --git a/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.pyo b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.pyo Binary files differnew file mode 100644 index 0000000..f30eecb --- /dev/null +++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.pyo |