summaryrefslogtreecommitdiff
path: root/eggs/infrae.subversion-1.4.5-py2.6.egg
diff options
context:
space:
mode:
authorNishanth Amuluru2011-01-08 11:20:57 +0530
committerNishanth Amuluru2011-01-08 11:20:57 +0530
commit65411d01d448ff0cd4abd14eee14cf60b5f8fc20 (patch)
treeb4c404363c4c63a61d6e2f8bd26c5b057c1fb09d /eggs/infrae.subversion-1.4.5-py2.6.egg
parent2e35094d43b4cc6974172e1febf76abb50f086ec (diff)
downloadpytask-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')
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/PKG-INFO259
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/SOURCES.txt21
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/dependency_links.txt1
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/entry_points.txt6
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/namespace_packages.txt1
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/not-zip-safe1
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/requires.txt11
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/EGG-INFO/top_level.txt1
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.py4
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.pyobin0 -> 269 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.py244
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.pyobin0 -> 10420 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.py140
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.pyobin0 -> 6354 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.py87
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.pyobin0 -> 3549 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.py22
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.pyobin0 -> 480 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.py0
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.pyobin0 -> 199 bytes
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.py75
-rw-r--r--eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.pyobin0 -> 3349 bytes
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
new file mode 100644
index 0000000..0596d1d
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/__init__.pyo
Binary files differ
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
new file mode 100644
index 0000000..df510e5
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Common.pyo
Binary files differ
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
new file mode 100644
index 0000000..bf95d58
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Native.pyo
Binary files differ
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
new file mode 100644
index 0000000..c2ed51d
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/Py.pyo
Binary files differ
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
new file mode 100644
index 0000000..14c6b2d
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/__init__.pyo
Binary files differ
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
new file mode 100644
index 0000000..f5a5ae4
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/__init__.pyo
Binary files differ
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
new file mode 100644
index 0000000..f30eecb
--- /dev/null
+++ b/eggs/infrae.subversion-1.4.5-py2.6.egg/infrae/subversion/tests/test_impl.pyo
Binary files differ