[Checkins] SVN: ZEO/trunk/ ZEO was moved to Github a while ago; there's even one commit not present in SVN
Marius Gedminas
cvs-admin at zope.org
Fri Mar 1 15:55:41 UTC 2013
Log message for revision 129970:
ZEO was moved to Github a while ago; there's even one commit not present in SVN
Changed:
D ZEO/trunk/CHANGES.txt
D ZEO/trunk/COPYING
D ZEO/trunk/COPYRIGHT.txt
D ZEO/trunk/LICENSE.txt
A ZEO/trunk/MOVED_TO_GITHUB
D ZEO/trunk/README.txt
D ZEO/trunk/bootstrap.py
D ZEO/trunk/buildout.cfg
D ZEO/trunk/doc/
D ZEO/trunk/ez_setup.py
D ZEO/trunk/log.ini
D ZEO/trunk/release.py
D ZEO/trunk/setup.py
D ZEO/trunk/src/
-=-
Deleted: ZEO/trunk/CHANGES.txt
===================================================================
--- ZEO/trunk/CHANGES.txt 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/CHANGES.txt 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,19 +0,0 @@
-CHANGES
-=======
-
-4.0.0a1 (2012-11-19)
---------------------
-
-First (in a long time) separate ZEO release.
-
-Since ZODB 3.10.5:
-
-- Storage servers now emit Serving and Closed events so subscribers
- can discover addresses when dynamic port assignment (bind to port 0)
- is used. This could, for example, be used to update address
- information in a ZooKeeper database.
-
-- Client storages have a method, new_addr, that can be used to change
- the server address(es). This can be used, for example, to update a
- dynamically determined server address from information in a
- ZooKeeper database.
Deleted: ZEO/trunk/COPYING
===================================================================
--- ZEO/trunk/COPYING 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/COPYING 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,5 +0,0 @@
-See:
-
- - the copyright notice in: COPYRIGHT.txt
-
- - The Zope Public License in LICENSE.txt
Deleted: ZEO/trunk/COPYRIGHT.txt
===================================================================
--- ZEO/trunk/COPYRIGHT.txt 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/COPYRIGHT.txt 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1 +0,0 @@
-Zope Foundation and Contributors
\ No newline at end of file
Deleted: ZEO/trunk/LICENSE.txt
===================================================================
--- ZEO/trunk/LICENSE.txt 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/LICENSE.txt 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,44 +0,0 @@
-Zope Public License (ZPL) Version 2.1
-
-A copyright notice accompanies this license document that identifies the
-copyright holders.
-
-This license has been certified as open source. It has also been designated as
-GPL compatible by the Free Software Foundation (FSF).
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions in source code must retain the accompanying copyright
-notice, this list of conditions, and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the accompanying copyright
-notice, this list of conditions, and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-3. Names of the copyright holders must not be used to endorse or promote
-products derived from this software without prior written permission from the
-copyright holders.
-
-4. The right to distribute this software or to use it for any purpose does not
-give you the right to use Servicemarks (sm) or Trademarks (tm) of the
-copyright
-holders. Use of them is covered by separate agreement with the copyright
-holders.
-
-5. If any files are modified, you must cause the modified files to carry
-prominent notices stating that you changed the files and the date of any
-change.
-
-Disclaimer
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Added: ZEO/trunk/MOVED_TO_GITHUB
===================================================================
--- ZEO/trunk/MOVED_TO_GITHUB (rev 0)
+++ ZEO/trunk/MOVED_TO_GITHUB 2013-03-01 15:55:41 UTC (rev 129970)
@@ -0,0 +1 @@
+See https://github.com/zopefoundation/ZEO
Deleted: ZEO/trunk/README.txt
===================================================================
--- ZEO/trunk/README.txt 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/README.txt 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,483 +0,0 @@
-===
-ZEO
-===
-
-ZEO provides a client-server storage implementation for ZODB.
-
-.. contents::
-
-Usage
-=====
-
-ZEO is a client-server system for sharing a single storage among many
-clients. When you use ZEO, the storage is opened in the ZEO server
-process. Client programs connect to this process using a ZEO
-ClientStorage. ZEO provides a consistent view of the database to all
-clients. The ZEO client and server communicate using a custom RPC
-protocol layered on top of TCP.
-
-Options
--------
-
-There are several configuration options that affect the behavior of a
-ZEO server. This section describes how a few of these features
-working. Subsequent sections describe how to configure every option.
-
-Client cache
-~~~~~~~~~~~~
-
-Each ZEO client keeps an on-disk cache of recently used objects to
-avoid fetching those objects from the server each time they are
-requested. It is usually faster to read the objects from disk than it
-is to fetch them over the network. The cache can also provide
-read-only copies of objects during server outages.
-
-The cache may be persistent or transient. If the cache is persistent,
-then the cache files are retained for use after process restarts. A
-non-persistent cache uses temporary files that are removed when the
-client storage is closed.
-
-The client cache size is configured when the ClientStorage is created.
-The default size is 20MB, but the right size depends entirely on the
-particular database. Setting the cache size too small can hurt
-performance, but in most cases making it too big just wastes disk
-space. The document "Client cache tracing" describes how to collect a
-cache trace that can be used to determine a good cache size.
-
-ZEO uses invalidations for cache consistency. Every time an object is
-modified, the server sends a message to each client informing it of
-the change. The client will discard the object from its cache when it
-receives an invalidation. These invalidations are often batched.
-
-Each time a client connects to a server, it must verify that its cache
-contents are still valid. (It did not receive any invalidation
-messages while it was disconnected.) There are several mechanisms
-used to perform cache verification. In the worst case, the client
-sends the server a list of all objects in its cache along with their
-timestamps; the server sends back an invalidation message for each
-stale object. The cost of verification is one drawback to making the
-cache too large.
-
-Note that every time a client crashes or disconnects, it must verify
-its cache. Every time a server crashes, all of its clients must
-verify their caches.
-
-The cache verification process is optimized in two ways to eliminate
-costs when restarting clients and servers. Each client keeps the
-timestamp of the last invalidation message it has seen. When it
-connects to the server, it checks to see if any invalidation messages
-were sent after that timestamp. If not, then the cache is up-to-date
-and no further verification occurs. The other optimization is the
-invalidation queue, described below.
-
-Invalidation queue
-~~~~~~~~~~~~~~~~~~
-
-The ZEO server keeps a queue of recent invalidation messages in
-memory. When a client connects to the server, it sends the timestamp
-of the most recent invalidation message it has received. If that
-message is still in the invalidation queue, then the server sends the
-client all the missing invalidations. This is often cheaper than
-perform full cache verification.
-
-The default size of the invalidation queue is 100. If the
-invalidation queue is larger, it will be more likely that a client
-that reconnects will be able to verify its cache using the queue. On
-the other hand, a large queue uses more memory on the server to store
-the message. Invalidation messages tend to be small, perhaps a few
-hundred bytes each on average; it depends on the number of objects
-modified by a transaction.
-
-Transaction timeouts
-~~~~~~~~~~~~~~~~~~~~
-
-A ZEO server can be configured to timeout a transaction if it takes
-too long to complete. Only a single transaction can commit at a time;
-so if one transaction takes too long, all other clients will be
-delayed waiting for it. In the extreme, a client can hang during the
-commit process. If the client hangs, the server will be unable to
-commit other transactions until it restarts. A well-behaved client
-will not hang, but the server can be configured with a transaction
-timeout to guard against bugs that cause a client to hang.
-
-If any transaction exceeds the timeout threshold, the client's
-connection to the server will be closed and the transaction aborted.
-Once the transaction is aborted, the server can start processing other
-client's requests. Most transactions should take very little time to
-commit. The timer begins for a transaction after all the data has
-been sent to the server. At this point, the cost of commit should be
-dominated by the cost of writing data to disk; it should be unusual
-for a commit to take longer than 1 second. A transaction timeout of
-30 seconds should tolerate heavy load and slow communications between
-client and server, while guarding against hung servers.
-
-When a transaction times out, the client can be left in an awkward
-position. If the timeout occurs during the second phase of the two
-phase commit, the client will log a panic message. This should only
-cause problems if the client transaction involved multiple storages.
-If it did, it is possible that some storages committed the client
-changes and others did not.
-
-Connection management
-~~~~~~~~~~~~~~~~~~~~~
-
-A ZEO client manages its connection to the ZEO server. If it loses
-the connection, it attempts to reconnect. While
-it is disconnected, it can satisfy some reads by using its cache.
-
-The client can be configured to wait for a connection when it is created
-or to return immediately and provide data from its persistent cache.
-It usually simplifies programming to have the client wait for a
-connection on startup.
-
-When the client is disconnected, it polls periodically to see if the
-server is available. The rate at which it polls is configurable.
-
-The client can be configured with multiple server addresses. In this
-case, it assumes that each server has identical content and will use
-any server that is available. It is possible to configure the client
-to accept a read-only connection to one of these servers if no
-read-write connection is available. If it has a read-only connection,
-it will continue to poll for a read-write connection. This feature
-supports the Zope Replication Services product,
-http://www.zope.com/Products/ZopeProducts/ZRS. In general, it could
-be used to with a system that arranges to provide hot backups of
-servers in the case of failure.
-
-If a single address resolves to multiple IPv4 or IPv6 addresses,
-the client will connect to an arbitrary of these addresses.
-
-Authentication
-~~~~~~~~~~~~~~
-
-ZEO supports optional authentication of client and server using a
-password scheme similar to HTTP digest authentication (RFC 2069). It
-is a simple challenge-response protocol that does not send passwords
-in the clear, but does not offer strong security. The RFC discusses
-many of the limitations of this kind of protocol. Note that this
-feature provides authentication only. It does not provide encryption
-or confidentiality.
-
-The challenge-response also produces a session key that is used to
-generate message authentication codes for each ZEO message. This
-should prevent session hijacking.
-
-Guard the password database as if it contained plaintext passwords.
-It stores the hash of a username and password. This does not expose
-the plaintext password, but it is sensitive nonetheless. An attacker
-with the hash can impersonate the real user. This is a limitation of
-the simple digest scheme.
-
-The authentication framework allows third-party developers to provide
-new authentication modules.
-
-Installing software
--------------------
-
-ZEO is installed like other Python packages using pip, easy_install,
-buildout, etc.
-
-Configuring server
-------------------
-
-The script ``runzeo`` runs the ZEO server. The server can be
-configured using command-line arguments or a config file. This
-document only describes the config file. Run runzeo.py
--h to see the list of command-line arguments.
-
-The ``runzeo`` script imports the ZEO package. ZEO must either be
-installed in Python's site-packages directory or be in a directory on
-PYTHONPATH.
-
-The configuration file specifies the underlying storage the server
-uses, the address it binds, and a few other optional parameters.
-An example is::
-
- <zeo>
- address zeo.example.com:8090
- </zeo>
-
- <filestorage>
- path /var/tmp/Data.fs
- </filestorage>
-
- <eventlog>
- <logfile>
- path /var/tmp/zeo.log
- format %(asctime)s %(message)s
- </logfile>
- </eventlog>
-
-This file configures a server to use a FileStorage from
-``/var/tmp/Data.fs``. The server listens on port 8090 of
-zeo.example.com. The ZEO server writes its log file to
-/var/tmp/zeo.log and uses a custom format for each line. Assuming the
-example configuration it stored in zeo.config, you can run a server by
-typing::
-
- python runzeo -C zeo.config
-
-A configuration file consists of a <zeo> section and a storage
-section, where the storage section can use any of the valid ZODB
-storage types. It may also contain an eventlog configuration. See
-the document "Configuring a ZODB database" for more information about
-configuring storages and eventlogs.
-
-The zeo section must list the address. All the other keys are
-optional.
-
-address
- The address at which the server should listen. This can be in
- the form 'host:port' to signify a TCP/IP connection or a
- pathname string to signify a Unix domain socket connection (at
- least one '/' is required). A hostname may be a DNS name or a
- dotted IP address. If the hostname is omitted, the platform's
- default behavior is used when binding the listening socket (''
- is passed to socket.bind() as the hostname portion of the
- address).
-
-read-only
- Flag indicating whether the server should operate in read-only
- mode. Defaults to false. Note that even if the server is
- operating in writable mode, individual storages may still be
- read-only. But if the server is in read-only mode, no write
- operations are allowed, even if the storages are writable. Note
- that pack() is considered a read-only operation.
-
-invalidation-queue-size
- The storage server keeps a queue of the objects modified by the
- last N transactions, where N == invalidation_queue_size. This
- queue is used to speed client cache verification when a client
- disconnects for a short period of time.
-
-transaction-timeout
- The maximum amount of time to wait for a transaction to commit
- after acquiring the storage lock, specified in seconds. If the
- transaction takes too long, the client connection will be closed
- and the transaction aborted.
-
-authentication-protocol
- The name of the protocol used for authentication. The
- only protocol provided with ZEO is "digest," but extensions
- may provide other protocols.
-
-authentication-database
- The path of the database containing authentication credentials.
-
-authentication-realm
- The authentication realm of the server. Some authentication
- schemes use a realm to identify the logic set of usernames
- that are accepted by this server.
-
-Configuring clients
--------------------
-
-The ZEO client can also be configured using ZConfig. The ZODB.config
-module provides several function for opening a storage based on its
-configuration.
-
-- ZODB.config.storageFromString()
-- ZODB.config.storageFromFile()
-- ZODB.config.storageFromURL()
-
-The ZEO client configuration requires the server address be
-specified. Everything else is optional. An example configuration is::
-
- <zeoclient>
- server zeo.example.com:8090
- </zeoclient>
-
-The other configuration options are listed below.
-
-cache-size
- The maximum size of the client cache, in bytes.
-
-name
- The storage name. If unspecified, the address of the server
- will be used as the name.
-
-client
- Enables persistent cache files. The string passed here is
- used to construct the cache filenames. If it is not
- specified, the client creates a temporary cache that will
- only be used by the current object.
-
-var
- The directory where persistent cache files are stored. By
- default cache files, if they are persistent, are stored in
- the current directory.
-
-min-disconnect-poll
- The minimum delay in seconds between attempts to connect to
- the server, in seconds. Defaults to 5 seconds.
-
-max-disconnect-poll
- The maximum delay in seconds between attempts to connect to
- the server, in seconds. Defaults to 300 seconds.
-
-wait
- A boolean indicating whether the constructor should wait
- for the client to connect to the server and verify the cache
- before returning. The default is true.
-
-read-only
- A flag indicating whether this should be a read-only storage,
- defaulting to false (i.e. writing is allowed by default).
-
-read-only-fallback
- A flag indicating whether a read-only remote storage should be
- acceptable as a fallback when no writable storages are
- available. Defaults to false. At most one of read_only and
- read_only_fallback should be true.
-
-realm
- The authentication realm of the server. Some authentication
- schemes use a realm to identify the logic set of usernames
- that are accepted by this server.
-
-A ZEO client can also be created by calling the ClientStorage
-constructor explicitly. For example::
-
- from ZEO.ClientStorage import ClientStorage
- storage = ClientStorage(("zeo.example.com", 8090))
-
-Running the ZEO server as a daemon
-----------------------------------
-
-In an operational setting, you will want to run the ZEO server a
-daemon process that is restarted when it dies. The zdaemon package
-provides two tools for running daemons: zdrun.py and zdctl.py. You can
-find zdaemon and it's documentation at
-http://pypi.python.org/pypi/zdaemon.
-
-Rotating log files
-~~~~~~~~~~~~~~~~~~
-
-ZEO will re-initialize its logging subsystem when it receives a
-SIGUSR2 signal. If you are using the standard event logger, you
-should first rename the log file and then send the signal to the
-server. The server will continue writing to the renamed log file
-until it receives the signal. After it receives the signal, the
-server will create a new file with the old name and write to it.
-
-Tools
------
-
-There are a few scripts that may help running a ZEO server. The
-zeopack script connects to a server and packs the storage. It can
-be run as a cron job. The zeopasswd.py script
-manages a ZEO servers password database.
-
-Diagnosing problems
--------------------
-
-If an exception occurs on the server, the server will log a traceback
-and send an exception to the client. The traceback on the client will
-show a ZEO protocol library as the source of the error. If you need
-to diagnose the problem, you will have to look in the server log for
-the rest of the traceback.
-
-Compatibility
-=============
-
-ZEO 4.0.0 requires Python 2.6 or later.
-
-Note --
- When using ZEO and upgrading from Python 2.4, you need to upgrade
- clients and servers at the same time, or upgrade clients first and
- then servers. Clients running Python 2.5 or 2.6 will work with
- servers running Python 2.4. Clients running Python 2.4 won't work
- properly with servers running Python 2.5 or later due to changes in
- the way Python implements exceptions.
-
-For a long time ZEO has been distributes with ZODB. ZEO 4 is
-is now maintained as a separate project.
-
-ZEO clients from ZODB 3.2 on can talk to ZEO 4.0 servers.
-ZEO 4.0 clients talk to ZODB 3.8, 3.9, and 3.10 and ZEO 4.0 servers.
-
-Note --
- ZEO 4.0 servers don't support undo for clients older than ZODB 3.10.
-
-Testing for downloaders
-=======================
-
-You can run the tests with::
-
- python setup.py test
-
-however, there's an issue with getting the dependencies installed
-propely in a single run. If the first run fails installing
-dependencies, try running the above command a second time.
-
-Testing for Developers
-======================
-
-The ZEO checkouts are `buildouts <http://www.python.org/pypi/zc.buildout>`_.
-When working from a ZODB checkout, first run the bootstrap.py script
-to initialize the buildout:
-
- % python bootstrap.py
-
-and then use the buildout script to build ZODB and gather the dependencies:
-
- % bin/buildout
-
-This creates a test script:
-
- % bin/test -v
-
-This command will run all the tests, printing a single dot for each
-test. When it finishes, it will print a test summary. The exact
-number of tests can vary depending on platform and available
-third-party libraries.::
-
- Ran 1182 tests in 241.269s
-
- OK
-
-The test script has many more options. Use the ``-h`` or ``--help``
-options to see a file list of options. The default test suite omits
-several tests that depend on third-party software or that take a long
-time to run. To run all the available tests use the ``--all`` option.
-Running all the tests takes much longer.::
-
- Ran 1561 tests in 1461.557s
-
- OK
-
-More information
-================
-
-For more information on ZEO, see http://zodb.org
-
-There is a Mailman mailing list in place to discuss all issues related
-to ZODB, including ZEO. You can send questions to
-
- zodb-dev at zope.org
-
-or subscribe at
-
- http://lists.zope.org/mailman/listinfo/zodb-dev
-
-and view its archives at
-
- http://lists.zope.org/pipermail/zodb-dev
-
-Note that Zope mailing lists have a subscriber-only posting policy.
-
-Bugs and Patches
-================
-
-Bug reports and patches should be added to the Launchpad:
-
- https://launchpad.net/zodb
-
-
-..
- Local Variables:
- mode: indented-text
- indent-tabs-mode: nil
- sentence-end-double-space: t
- fill-column: 70
- End:
Deleted: ZEO/trunk/bootstrap.py
===================================================================
--- ZEO/trunk/bootstrap.py 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/bootstrap.py 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,66 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Bootstrap a buildout-based project
-
-Simply run this script in a directory containing a buildout.cfg.
-The script accepts buildout command-line options, so you can
-use the -c option to specify an alternate configuration file.
-"""
-
-import os, shutil, sys, tempfile, urllib2
-
-tmpeggs = tempfile.mkdtemp()
-
-ez = {}
-exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
- ).read() in ez
-ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
-
-import pkg_resources
-
-is_jython = sys.platform.startswith('java')
-
-if is_jython:
- import subprocess
-
-cmd = 'from setuptools.command.easy_install import main; main()'
-if sys.platform == 'win32':
- cmd = '"%s"' % cmd # work around spawn lamosity on windows
-
-ws = pkg_resources.working_set
-
-if is_jython:
- assert subprocess.Popen(
- [sys.executable] + ['-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout'],
- env = dict(os.environ,
- PYTHONPATH=
- ws.find(pkg_resources.Requirement.parse('setuptools')).location
- ),
- ).wait() == 0
-
-else:
- assert os.spawnle(
- os.P_WAIT, sys.executable, sys.executable,
- '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
- dict(os.environ,
- PYTHONPATH=
- ws.find(pkg_resources.Requirement.parse('setuptools')).location
- ),
- ) == 0
-
-ws.add_entry(tmpeggs)
-ws.require('zc.buildout')
-import zc.buildout.buildout
-zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
-shutil.rmtree(tmpeggs)
Deleted: ZEO/trunk/buildout.cfg
===================================================================
--- ZEO/trunk/buildout.cfg 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/buildout.cfg 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,26 +0,0 @@
-[buildout]
-develop = .
-parts =
- test
- scripts
-versions = versions
-
-[versions]
-zc.recipe.testrunner = 1.3.0
-
-[test]
-recipe = zc.recipe.testrunner
-eggs =
- ZEO [test]
-initialization =
- import os, tempfile
- try: os.mkdir('tmp')
- except: pass
- tempfile.tempdir = os.path.abspath('tmp')
-defaults = ['--all']
-
-[scripts]
-recipe = zc.recipe.egg
-eggs =
- ZEO [test]
-interpreter = py
Deleted: ZEO/trunk/ez_setup.py
===================================================================
--- ZEO/trunk/ez_setup.py 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/ez_setup.py 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,284 +0,0 @@
-#!python
-"""Bootstrap setuptools installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
- from ez_setup import use_setuptools
- use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import sys
-DEFAULT_VERSION = "0.6c11"
-DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
-
-md5_data = {
- 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
- 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
- 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
- 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
- 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
- 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
- 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
- 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
- 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
- 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
- 'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
- 'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
- 'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
- 'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
- 'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
- 'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
- 'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
- 'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
- 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
- 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
- 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
- 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
- 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
- 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
- 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
- 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
- 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
- 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
- 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
- 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
- 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
- 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
- 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
- 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
- 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
- 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
- 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
- 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
- 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
- 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
- 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
- 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
-}
-
-import sys, os
-try: from hashlib import md5
-except ImportError: from md5 import md5
-
-def _validate_md5(egg_name, data):
- if egg_name in md5_data:
- digest = md5(data).hexdigest()
- if digest != md5_data[egg_name]:
- print >>sys.stderr, (
- "md5 validation of %s failed! (Possible download problem?)"
- % egg_name
- )
- sys.exit(2)
- return data
-
-def use_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- download_delay=15
-):
- """Automatically find/download setuptools and make it available on sys.path
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end with
- a '/'). `to_dir` is the directory where setuptools will be downloaded, if
- it is not already available. If `download_delay` is specified, it should
- be the number of seconds that will be paused before initiating a download,
- should one be required. If an older version of setuptools is installed,
- this routine will print a message to ``sys.stderr`` and raise SystemExit in
- an attempt to abort the calling script.
- """
- was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
- def do_download():
- egg = download_setuptools(version, download_base, to_dir, download_delay)
- sys.path.insert(0, egg)
- import setuptools; setuptools.bootstrap_install_from = egg
- try:
- import pkg_resources
- except ImportError:
- return do_download()
- try:
- pkg_resources.require("setuptools>="+version); return
- except pkg_resources.VersionConflict, e:
- if was_imported:
- print >>sys.stderr, (
- "The required version of setuptools (>=%s) is not available, and\n"
- "can't be installed while this script is running. Please install\n"
- " a more recent version first, using 'easy_install -U setuptools'."
- "\n\n(Currently using %r)"
- ) % (version, e.args[0])
- sys.exit(2)
- except pkg_resources.DistributionNotFound:
- pass
-
- del pkg_resources, sys.modules['pkg_resources'] # reload ok
- return do_download()
-
-def download_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- delay = 15
-):
- """Download setuptools from a specified location and return its filename
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end
- with a '/'). `to_dir` is the directory where the egg will be downloaded.
- `delay` is the number of seconds to pause before an actual download attempt.
- """
- import urllib2, shutil
- egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
- url = download_base + egg_name
- saveto = os.path.join(to_dir, egg_name)
- src = dst = None
- if not os.path.exists(saveto): # Avoid repeated downloads
- try:
- from distutils import log
- if delay:
- log.warn("""
----------------------------------------------------------------------------
-This script requires setuptools version %s to run (even to display
-help). I will attempt to download it for you (from
-%s), but
-you may need to enable firewall access for this script first.
-I will start the download in %d seconds.
-
-(Note: if this machine does not have network access, please obtain the file
-
- %s
-
-and place it in this directory before rerunning this script.)
----------------------------------------------------------------------------""",
- version, download_base, delay, url
- ); from time import sleep; sleep(delay)
- log.warn("Downloading %s", url)
- src = urllib2.urlopen(url)
- # Read/write all in one block, so we don't create a corrupt file
- # if the download is interrupted.
- data = _validate_md5(egg_name, src.read())
- dst = open(saveto,"wb"); dst.write(data)
- finally:
- if src: src.close()
- if dst: dst.close()
- return os.path.realpath(saveto)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def main(argv, version=DEFAULT_VERSION):
- """Install or upgrade setuptools and EasyInstall"""
- try:
- import setuptools
- except ImportError:
- egg = None
- try:
- egg = download_setuptools(version, delay=0)
- sys.path.insert(0,egg)
- from setuptools.command.easy_install import main
- return main(list(argv)+[egg]) # we're done here
- finally:
- if egg and os.path.exists(egg):
- os.unlink(egg)
- else:
- if setuptools.__version__ == '0.0.1':
- print >>sys.stderr, (
- "You have an obsolete version of setuptools installed. Please\n"
- "remove it from your system entirely before rerunning this script."
- )
- sys.exit(2)
-
- req = "setuptools>="+version
- import pkg_resources
- try:
- pkg_resources.require(req)
- except pkg_resources.VersionConflict:
- try:
- from setuptools.command.easy_install import main
- except ImportError:
- from easy_install import main
- main(list(argv)+[download_setuptools(delay=0)])
- sys.exit(0) # try to force an exit
- else:
- if argv:
- from setuptools.command.easy_install import main
- main(argv)
- else:
- print "Setuptools version",version,"or greater has been installed."
- print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
-
-def update_md5(filenames):
- """Update our built-in md5 registry"""
-
- import re
-
- for name in filenames:
- base = os.path.basename(name)
- f = open(name,'rb')
- md5_data[base] = md5(f.read()).hexdigest()
- f.close()
-
- data = [" %r: %r,\n" % it for it in md5_data.items()]
- data.sort()
- repl = "".join(data)
-
- import inspect
- srcfile = inspect.getsourcefile(sys.modules[__name__])
- f = open(srcfile, 'rb'); src = f.read(); f.close()
-
- match = re.search("\nmd5_data = {\n([^}]+)}", src)
- if not match:
- print >>sys.stderr, "Internal error!"
- sys.exit(2)
-
- src = src[:match.start(1)] + repl + src[match.end(1):]
- f = open(srcfile,'w')
- f.write(src)
- f.close()
-
-
-if __name__=='__main__':
- if len(sys.argv)>2 and sys.argv[1]=='--md5update':
- update_md5(sys.argv[2:])
- else:
- main(sys.argv[1:])
-
-
-
-
-
-
Deleted: ZEO/trunk/log.ini
===================================================================
--- ZEO/trunk/log.ini 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/log.ini 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,32 +0,0 @@
-# This file configures the logging module for the test harness:
-# critical errors are logged to testing.log; everything else is
-# ignored.
-
-# Documentation for the file format is at
-# http://www.red-dove.com/python_logging.html#config
-
-[logger_root]
-level=CRITICAL
-handlers=normal
-
-[handler_normal]
-class=FileHandler
-level=NOTSET
-formatter=common
-args=('testing.log', 'a')
-filename=testing.log
-mode=a
-
-[formatter_common]
-format=------
- %(asctime)s %(levelname)s %(name)s %(message)s
-datefmt=%Y-%m-%dT%H:%M:%S
-
-[loggers]
-keys=root
-
-[handlers]
-keys=normal
-
-[formatters]
-keys=common
Deleted: ZEO/trunk/release.py
===================================================================
--- ZEO/trunk/release.py 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/release.py 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,81 +0,0 @@
-#! /usr/bin/env python
-"""Update version numbers and release dates for the next release.
-
-usage: release.py version date
-
-version should be a string like "3.2.0c1"
-date should be a string like "23-Sep-2003"
-
-The following files are updated:
- - setup.py
- - NEWS.txt
- - doc/guide/zodb.tex
- - src/ZEO/__init__.py
- - src/ZEO/version.txt
- - src/ZODB/__init__.py
-"""
-
-import fileinput
-import os
-import re
-
-# In file filename, replace the first occurrence of regexp pat with
-# string repl.
-def replace(filename, pat, repl):
- from sys import stderr as e # fileinput hijacks sys.stdout
- foundone = False
- for line in fileinput.input([filename], inplace=True, backup="~"):
- if foundone:
- print line,
- else:
- match = re.search(pat, line)
- if match is not None:
- foundone = True
-
- new = re.sub(pat, repl, line)
- print new,
-
- print >> e, "In %s, replaced:" % filename
- print >> e, " ", repr(line)
- print >> e, " ", repr(new)
-
- else:
- print line,
-
- if not foundone:
- print >> e, "*" * 60, "Oops!"
- print >> e, " Failed to find %r in %r" % (pat, filename)
-
-# Nothing in our codebase cares about ZEO/version.txt. Jeremy said
-# someone asked for it so that a shell script could read up the ZEO
-# version easily.
-# Before ZODB 3.4, the ZEO version was one smaller than the ZODB version;
-# e.g., ZEO 2.2.7 shipped with ZODB 3.2.7. Now ZEO and ZODB share their
-# version number.
-def write_zeoversion(path, version):
- f = open(path, "w")
- print >> f, version
- f.close()
-
-def main(args):
- version, date = args
-
- replace("setup.py",
- r'^VERSION = "\S+"$',
- 'VERSION = "%s"' % version)
- replace("src/ZODB/__init__.py",
- r'__version__ = "\S+"',
- '__version__ = "%s"' % version)
- replace("src/ZEO/__init__.py",
- r'version = "\S+"',
- 'version = "%s"' % version)
- write_zeoversion("src/ZEO/version.txt", version)
- replace("NEWS.txt",
- r"^Release date: .*",
- "Release date: %s" % date)
- replace("doc/guide/zodb.tex",
- r"release{\S+}",
- "release{%s}" % version)
-if __name__ == "__main__":
- import sys
- main(sys.argv[1:])
Deleted: ZEO/trunk/setup.py
===================================================================
--- ZEO/trunk/setup.py 2013-03-01 15:44:05 UTC (rev 129969)
+++ ZEO/trunk/setup.py 2013-03-01 15:55:41 UTC (rev 129970)
@@ -1,117 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2002, 2003 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-
-VERSION = "4.0.0dev"
-
-from ez_setup import use_setuptools
-use_setuptools()
-
-from setuptools import setup, find_packages
-from setuptools.extension import Extension
-import os
-import sys
-
-if sys.version_info < (2, 6):
- print "This version of ZEO requires Python 2.6 or higher"
- sys.exit(0)
-
-classifiers = """\
-Intended Audience :: Developers
-License :: OSI Approved :: Zope Public License
-Programming Language :: Python
-Programming Language :: Python :: 2.6
-Programming Language :: Python :: 2.7
-Topic :: Database
-Topic :: Software Development :: Libraries :: Python Modules
-Operating System :: Microsoft :: Windows
-Operating System :: Unix
-Framework :: ZODB
-"""
-
-def _modname(path, base, name=''):
- if path == base:
- return name
- dirname, basename = os.path.split(path)
- return _modname(dirname, base, basename + '.' + name)
-
-def alltests():
- import logging
- import pkg_resources
- import unittest
- import ZEO.ClientStorage
-
- class NullHandler(logging.Handler):
- level = 50
-
- def emit(self, record):
- pass
-
- logging.getLogger().addHandler(NullHandler())
-
- suite = unittest.TestSuite()
- base = pkg_resources.working_set.find(
- pkg_resources.Requirement.parse('ZEO')).location
- for dirpath, dirnames, filenames in os.walk(base):
- if os.path.basename(dirpath) == 'tests':
- for filename in filenames:
- if filename != 'testZEO.py': continue
- if filename.endswith('.py') and filename.startswith('test'):
- mod = __import__(
- _modname(dirpath, base, os.path.splitext(filename)[0]),
- {}, {}, ['*'])
- suite.addTest(mod.test_suite())
- return suite
-
-tests_require = ['zope.testing', 'manuel']
-
-long_description = (
- open('README.txt').read()
- + '\n' +
- open('CHANGES.txt').read()
- )
-setup(name="ZEO",
- description = long_description.split('\n', 2)[1],
- long_description = long_description,
- version=VERSION,
- maintainer="Zope Foundation and Contributors",
- maintainer_email="zodb-dev at zope.org",
- packages = find_packages('src'),
- package_dir = {'': 'src'},
- license = "ZPL 2.1",
- platforms = ["any"],
- # description = doclines[0],
- classifiers = filter(None, classifiers.split("\n")),
- # long_description = long_description,
- test_suite="__main__.alltests", # to support "setup.py test"
- tests_require = tests_require,
- extras_require = dict(test=tests_require),
- install_requires = [
- 'ZODB',
- 'transaction',
- 'persistent',
- 'zc.lockfile',
- 'ZConfig',
- 'zdaemon',
- 'zope.interface',
- ],
- zip_safe = False,
- entry_points = """
- [console_scripts]
- zeopack = ZEO.scripts.zeopack:main
- runzeo = ZEO.runzeo:main
- zeopasswd = ZEO.zeopasswd:main
- zeoctl = ZEO.zeoctl:main
- """,
- include_package_data = True,
- )
More information about the checkins
mailing list