{ "info": { "author": "Philipp von Weitershausen", "author_email": "philipp@weitershausen.de", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: WSGI" ], "description": ".. contents::\n\nQuickstart\n==========\n\nYou can start a new Zope-based web application from scratch with just\ntwo commands::\n\n $ easy_install zopeproject\n $ zopeproject HelloWorld\n\nThe second command will ask you for a name and password for an\ninitial administrator user. It will also ask you where to put the\nPython packages (\"eggs\") that it downloads. This way multiple\nprojects created with ``zopeproject`` can share the same packages and\nwon't have to download them each time (see also `Sharing eggs among\nsandboxes`_ below).\n\n(Note: Depending on how they installed Python, Unix/Linux users may\nhave to invoke ``easy_install`` with ``sudo``. If that's not wanted\nor possible, ``easy_install`` can be invoked with normal privileges\ninside a `virtual-python`_ or workingenv_).\n\nAfter asking these questions, ``zopeproject`` will download the\n`zc.buildout`_ package that will be used to build the sandbox, unless\nit is already installed locally. Then it will invoke ``buildout`` to\ndownload Zope and its dependencies. If you're doing this for the first\ntime or not sharing packages between different projects, this may take\na while.\n\nWhen ``zopeproject`` is done, you will find a typical Python package\ndevelopment environment in the ``HelloWorld`` directory: the package\nitself (``helloworld``) and a ``setup.py`` script. There's also a\n``bin`` directory that contains scripts, such as ``paster`` which can\nbe used to start the application::\n\n $ cd HelloWorld\n $ bin/paster serve deploy.ini\n\nYou may also use the ``helloworld-ctl`` script which works much like\nthe ``zopectl`` script from Zope instances::\n\n $ bin/helloworld-ctl foreground\n\nAfter starting the application, you should now be able to go to\nhttp://localhost:8080 and see the default start screen of Zope. You\nwill also be able to log in with the administrator user account that\nyou specified earlier.\n\nNotes for Windows users\n-----------------------\n\nSome packages required by Zope contain C extension modules. There may\nnot always be binary Windows distributions available for these\npackages. In this case, setuptools will try to compile them from\nsource which will likely fail if you don't have a compiler such as the\nMicrosoft Visual C compiler installed. Alternatively, you can install \nthe free MinGW_ compiler:\n\n1. Download ``MinGW-x.y.z.exe`` from http://www.mingw.org/ and run it \n to do a full install into the standard location (ie. ``C:\\MinGW``).\n\n2. Tell Python to use the MinGW compiler by creating\n ``C:\\Documents and Settings\\YOUR USER\\pydistutils.cfg``\n with the following contents::\n\n [build]\n compiler=mingw32\n\n3. Let Python know about the MinGW installation and the\n ``pydistutils.cfg`` file. To do that, go to the *Control Panel*,\n *System* section, *Advanced* tab and click on the *Environment\n variables* button. Add the ``C:\\MinGW\\bin`` directory to your\n ``Path`` environment variable (individual paths are delimited by\n semicolons). Also add another environment variable called ``HOME``\n with the following value::\n\n C:\\Documents and Settings\\YOUR USER\n\nWhen installing packages from source, Python should now automatically \nuse the MinGW compiler to build binaries.\n\nSharing eggs among sandboxes\n----------------------------\n\nA great feature of `zc.buildout`_ is the ability to share downloaded\nPython packages (\"eggs\") between sandboxes. This is achieved by\nplacing all eggs in a shared location. zopeproject will ask for this\nlocation each time. The setting will become part of ``buildout.cfg``.\n\nIt could very well be that your shared eggs directory is different\nfrom the suggested default value, so it would be good to avoid having\nto type it in every time. Furthermore, you may want to avoid having\nsystem-dependent paths appear in ``buildout.cfg`` because they hinder\nthe repeatibility of the setup on other machines.\n\nA way to solve these problems is to configure a user-specific default\neggs directory for buildout in your home directory:\n``~/.buildout/default.cfg``::\n\n [buildout]\n eggs-directory = /home/philipp/eggs\n\nzopeproject will understand that you have this default value and\nchange its own default when asking you for the eggs directory. If you\njust hit enter there (thereby accepting the default in\n``~/.buildout/default.cfg``), the generated ``buildout.cfg`` will not\ncontain a reference to a path.\n\nCommand line options for zopeproject\n====================================\n\n``--no-buildout``\n When invoked with this option, ``zopeproject`` will only create the\n project directory with the standard files in it, but it won't\n download and invoke ``zc.buildout``.\n\n``--newer``\n This option enables the ``newest = true`` setting in\n ``buildout.cfg``. That way, buildout will always check for newer\n versions of eggs online. If, for example, you have outdated\n versions of your dependencies in your shared eggs directory, this\n switch will force the download of newer versions. Note that you can\n always edit ``buildout.cfg`` to change this behaviour in an existing\n project area, or you can invoke ``bin/buildout`` with the ``-n``\n option.\n\n``--svn-repository=REPOS``\n This option will import the project directory and the files in it\n into the given subversion repository and provide you with a checkout\n of the ``trunk``. ``REPOS`` is supposed to be a repository path\n that is going to be created, along with ``tags``, ``branches`` and\n ``trunk`` below that. This checkin ignores any files and directories\n created by zc.buildout.\n\n``-v``, ``--verbose``\n When this option is enabled, ``zopeproject`` won't hide the output\n of ``easy_install`` (used to install ``zc.buildout``) and the\n ``buildout`` command.\n\nThe sandbox\n===========\n\nWhat are the different files and directories for?\n-------------------------------------------------\n\n``deploy.ini``\n Configuration file for PasteDeploy_. It defines which server\n software to launch and which WSGI application to invoke upon each\n request (which is defined in ``src/helloworld/startup.py``). You\n may also define WSGI middlewares here. Invoke ``bin/paster serve``\n with this file as an argument.\n\n``debug.ini``\n Alternate configuration for PasteDeploy_ that configures \n middleware which intercepts exceptions for interactive debugging.\n See `Debugging exceptions`_ below.\n\n``zope.conf``\n This file will be read by the application factory in\n ``src/helloworld/startup.py``. Here you can define which ZCML file\n the application factory should load upon startup, the ZODB database\n instance, an event log as well as whether developer mode is switched\n on or not.\n\n``site.zcml``\n This file is referred to by ``zope.conf`` and will be loaded by the\n application factory. It is the root ZCML file and includes\n everything else that needs to be loaded. 'Everything else' typically\n is just the application package itself, ``helloworld``, which then\n goes on to include its dependencies. Apart from this, ``site.zcml``\n also defines the anonymous principal and the initial admin principal.\n\n``setup.py``\n This file defines the egg of your application. That definition\n includes listing the package's dependencies (mostly Zope eggs) and\n the entry point for the PasteDeploy_ application factory.\n\n``buildout.cfg``\n This file tells `zc.buildout`_ what to do when the buildout is\n executed. This mostly involves executing ``setup.py`` to enable the\n ``HelloWorld`` egg (which also includes downloading its\n dependencies), as well as installing PasteDeploy_ for the server.\n This files also refers to the shared eggs directory\n (``eggs-directory``) and determines whether buildout should check\n whether newer eggs are available online or not (``newest``).\n\n``bin/``\n This directory contains all executable scripts, e.g for starting the\n application (``paster``), installing or reinstalling dependencies\n (``buildout``), or invoking the debug prompt (``helloworld-debug``).\n It also contains a script (``python``) that invokes the standard\n interpreter prompt with all packages on the module search path.\n\n``src/``\n This directory contains the Python package(s) of your application.\n Normally there's just one package (``helloworld``), but you may add\n more to this directory if you like. The ``src`` directory will be\n placed on the interpreter's search path by `zc.buildout`_.\n\n``var/``\n The ZODB filestorage will place its files (``Data.fs``, lock files,\n etc.) here.\n\nRenaming\n--------\n\nYou can rename or move the sandbox directory any time you like. Just\nbe sure to run ``bin/buildout`` again after doing so. Renaming the\nsandbox directory won't change the name of the egg, however. To do\nthat, you'll have to change the ``name`` parameter in ``setup.py``.\n\nSharing and archiving sandboxes\n-------------------------------\n\nYou can easily share sandboxes with co-developers or archive them in a\nversion control system such as subversion. You can theoretically\nshare or archive the whole sandbox directory, though it's recommended\n**not to include** the following files and directories because they\ncan and will be generated by zc.buildout from the configuration files:\n\n* ``bin/``\n\n* ``parts/``\n\n* ``develop-eggs/``\n\n* all files in ``var/``\n\n* all files in ``log/``\n\n* ``.installed.cfg``\n\nIf you receive a sandbox thas has been archived (e.g. by checking it\nout from a version control system), you will first have to bootstrap\nit in order to obtain the ``bin/buildout`` executable. To do that,\nuse the ``buildout`` script from any other sandbox on your machine::\n\n $ .../path/to/some/sandbox/bin/buildout bootstrap\n\nNow the sandbox has its own ``bin/buildout`` script and can be\ninstalled::\n\n $ bin/buildout\n\nDeveloping\n==========\n\nFirst steps with your application\n---------------------------------\n\nAfter having started up Zope for the first time, you'll likely want to\nstart developing your web application. Code for your application goes\ninto the ``helloworld`` package that was created by zopeproject in the\n``src`` directory.\n\nFor example, to get a simple \"Hello world!\" message displayed, create\n``src/helloworld/browser.py`` with the following contents::\n\n from zope.publisher.browser import BrowserPage\n\n class HelloPage(BrowserPage):\n def __call__(self):\n return \"

Hello World!

\"\n\nThen all you need to do is hook up the page in ZCML. To do that, add\nthe following directive towards the end of\n``src/helloworld/configure.zcml``::\n\n \n\nNote that you'll likely need to define the ``browser`` namespace\nprefix at the top of the file::\n\n \n\nAfter having restarted the application using ``paster serve``, you can\nvisit http://localhost:8080/hello to see the page in action.\n\nAdding dependencies to the application\n--------------------------------------\n\nThe standard ``setup.py`` and ``configure.zcml`` files list a set of\nstandard dependencies that are typical for most Zope applications.\nYou may obviously remove things from this list, but typically you'll\nwant to re-use more libraries that others have written. Many, if not\nmost, of additional Zope and third party libraries are `listed on the\nPython Cheeseshop`_.\n\nLet's say you wanted to reuse the ``some.library`` package in your\napplication. The first step would be to add it to the list of\ndependencies in ``setup.py`` (``install_requires``). If this package\ndefined any Zope components, you would probably also have to load its\nZCML configuration by adding the following line to\n``src/helloworld/configure.zcml``::\n\n \n\nAfter having changed ``setup.py``, you would want the newly added\ndependency to be downloaded and added to the search path of\n``bin/paster``. To do that, simply invoke the buildout::\n\n $ bin/buildout\n\nWriting and running tests\n-------------------------\n\nAutomated tests should be placed in Python modules. If they all fit\nin one module, the module should simply be named ``tests``. If you\nneed many modules, create a ``tests`` package and put the modules in\nthere. Each module should start with ``test`` (for example, the full\ndotted name of a test module could be ``helloworld.tests.test_app``).\n\nIf you prefer to separate functional tests from unit tests, you can\nput functional tests in an ``ftests`` module or package. Note that\nthis doesn't matter to the test runner whatsoever, it doesn't care\nabout the location of a test case.\n\nEach test module should define a ``test_suite`` function that\nconstructs the test suites for the test runner, e.g.::\n\n def test_suite():\n return unittest.TestSuite([\n unittest.makeSuite(ClassicTestCase),\n DocTestSuite(),\n DocFileSuite('README.txt', package='helloworld'),\n ])\n\nTo run all tests in your application's packages, simply invoke the\n``bin/test`` script::\n\n $ bin/test\n\nFunctional tests\n----------------\n\nWhile unit test typically require no or very little test setup,\nfunctional tests normally bootstrap the whole application's\nconfiguration to create a real-life test harness. The configuration\nfile that's responsible for this test harness is ``ftesting.zcml``.\nYou can add more configuration directives to it if you have components\nthat are specific to functional tests (e.g. mockup components).\n\nTo let a particular test run inside this test harness, simply apply\nthe ``helloworld.testing.FunctionalLayer`` layer to it::\n\n from helloworld.testing import FunctionalLayer\n suite.layer = FunctionalLayer\n\nYou can also simply use one of the convenience test suites in\n``helloworld.testing``:\n\n* ``FunctionalDocTestSuite`` (based on ``doctest.DocTestSuite``)\n\n* ``FunctionalDocFileSuite`` (based on ``doctest.DocFileSuite``)\n\n* ``FunctionalTestCase`` (based on ``unittest.TestCase``)\n\nDebugging\n=========\n\nThe interpreter prompt\n----------------------\n\nUse the ``bin/python`` script if you'd like test some components from\nthe interpreter prompt and don't need the component registrations nor\naccess to the ZODB. If you do need those, go on to the next section.\n\nThe interactive debug prompt\n----------------------------\n\nOccasionally, it is useful to be able to interactively debug the state\nof the application, such as walking the object hierarchy in the ZODB\nor looking up components manually. This can be done with the\ninteractive debug prompt, which is available under\n``bin/helloworld-debug``::\n\n $ bin/helloworld-debug\n Welcome to the interactive debug prompt.\n The 'root' variable contains the ZODB root folder.\n The 'app' variable contains the Debugger, 'app.publish(path)' simulates a request.\n >>> \n\nYou can now get a folder listing of the root folder, for example::\n\n >>> list(root.keys())\n [u'folder', u'file']\n\nDebugging exceptions\n--------------------\n\nIn case your application fails with an exception, it can be useful to\ninspect the circumstances with a debugger. This is possible with the\n``z3c.evalexception`` WSGI middleware. When an exception occurs in\nyour application, stop the process and start it up again, now using\nthe ``debug.ini`` configuration file::\n\n $ bin/paster serve debug.ini\n\nWhen you then repeat the steps that led to the exception, you will see\nthe relevant traceback in your browser, along with the ability to view\nthe corresponding source code and to issue Python commands for\ninspection.\n\nIf you prefer the Python debugger pdb_, replace ``ajax`` with ``pdb``\nin the WSGI middleware definition in ``debug.ini``::\n\n [filter-app:main]\n use = egg:z3c.evalexception#pdb\n next = zope\n\nNote: Even exceptions such as Unauthorized (which normally leads to a\nlogin screen) or NotFound (which normally leads to an HTTP 404\nresponse) will trigger the debugger.\n\nDeploying\n=========\n\nDisabling debugging tools\n-------------------------\n\nBefore deploying a zopeproject-based application, you should make sure\nthat any debugging tools are disabled. In particular, this includes\n\n* making sure there's no debugging middleware in ``deploy.ini``\n (normally these should be configured in ``debug.ini`` anyway),\n\n* switching off ``developer-mode`` in ``zope.conf``,\n\n* disabling the APIDoc tool in ``site.zcml``,\n\n* disabling the bootstrap administrator principal in ``site.zcml``.\n\nLinux/Unix\n----------\n\nYou can use the ``helloworld-ctl`` script to start the server process\nin daemon mode. It works much like the ``apachectl`` tool as known\nfrom the Apache HTTPD server or INIT scripts known from Linux::\n\n $ bin/helloworld-ctl start\n\nTo stop the server, issue::\n\n $ bin/helloworld-ctl stop\n\nOther commands, such as ``status`` and ``restart`` are supported as\nwell.\n\nWindows\n-------\n\nThere's currently no particular support for deployment on Windows\nother than what ``paster`` provides. Integration with Windows\nservices, much like what could be found in older versions of Zope, is\nplanned.\n\nReporting bugs or asking questions about zopeproject\n====================================================\n\nzopeproject maintains a bugtracker and help desk on Launchpad:\nhttps://launchpad.net/zopeproject\n\nQuestions can also be directed to the zope3-users mailinglist:\nhttp://mail.zope.org/mailman/listinfo/zope3-users\n\nCredits\n=======\n\nzopeproject is written and maintained by Philipp von Weitershausen.\nIt was inspired by the similar grokproject_ tool from the same author.\n\nJames Gardner, Martijn Faassen, Jan-Wijbrand Kolman and others gave\nvaluable feedback on the early prototype presented at EuroPython 2007.\n\nMichael Bernstein gave valuable feedback and made many suggestions for\nimprovements.\n\nzopeproject is distributed under the `Zope Public License,\nv2.1`_. Copyright (c) by Zope Corporation and Contributors.\n\n\n.. _virtual-python: http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python\n.. _workingenv: http://cheeseshop.python.org/pypi/workingenv.py\n.. _zc.buildout: http://cheeseshop.python.org/pypi/zc.buildout\n.. _MingW: http://www.mingw.org\n.. _PasteDeploy: http://pythonpaste.org/deploy/\n.. _listed on the Python Cheeseshop: http://cheeseshop.python.org/pypi?:action=browse&c=515\n.. _pdb: http://docs.python.org/lib/module-pdb.html\n.. _grokproject: http://cheeseshop.python.org/pypi/grokproject\n.. _Zope Public License, v2.1: http://www.zope.org/Resources/ZPL\n\n\nChanges\n=======\n\n0.4.2 (2009-02-12)\n------------------\n\n* Use Zope 3.4.0 KGS in the default deployment buildout.cfg.\n\n* Added blobstorage proxy to default ZODB config in zope.conf.\n\n* Use ZopeSecurityPolicy from zope.securitypolicy instead\n of zope.app.securitypolicy, which is a deprecated place for\n that.\n\n* The zope.securitypolicy uses a special role name, \n the ``zope.Anonymous`` that every user has, define\n it in site.zcml and grant view permissions to it,\n instead of zope.Anybody unauthenticated group.\n \n\n0.4.1 (2007-09-29)\n------------------\n\n* Improvements to ``README.txt`` and ``var/README.txt`` (it was\n pointing to the wrong configuration file). Moved changelog from\n ``README.txt`` into separate ``CHANGES.txt`` file.\n\n* The ``--no-buildout`` option is no longer ignored now.\n\n* Added a ``bin/python`` script that mimicks an interpreter.\n\n* Enabled the APIDoc tool by default. You may access it under\n http://localhost:8080/++apidoc++.\n\n* Simplified ``*package*/testing.py``.\n\n0.4 (2007-09-15)\n----------------\n\nNew features\n~~~~~~~~~~~~\n\n* Added a zdaemon controller script much like zopectl called\n ``*package*-ctl`` (where ``*package*`` is the name of the package\n created with zopeproject).\n\n* Added a debug script called ``*package*-debug`` that configures the\n application and drops into an interpreter session. It is also\n available via ``*package*-ctl debug``.\n\n* Added ``debug.ini`` which configures a WSGI middleware for\n intercepting exceptions and live debugging (either using Paste's\n evalexception middleware or the Python debugger pdb_).\n\n* Added a functional test layer in ``*package*.testing`` which loads\n the new ``ftesting.zcml``. Convenience definitions of test suites\n pre-configured for that layer are available in ``*package*.testing``\n as well.\n\n* More improvements to the README.txt file.\n\nBugfixes and restructuring\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Make use of ``zope.app.wsgi.getApplication()`` to reduce the startup\n boiler-plate in ``startup.py`` (formerly ``application.py``).\n\n* The package that zopeproject creates is now located in a ``src``\n directory, where it's easier to single out among the other files and\n directories.\n\n* Fixed a bug when guessing the default eggs-directory: When\n ~/.buildout/default.cfg did not contain an eggs-directory option,\n zopeproject failed with a ConfigParser.NoOptionError.\n\n* Renamed ``application.py`` to ``startup.py`` to make the intent of\n the module much clearer, and to avoid clashes with e.g. Grok (where\n \"application\" means something else, and ``app.py`` is commonly used\n for the application object).\n\n* The eggs directory will no longer be written to ``buildout.cfg`` if\n it is the same as the buildout default in\n ``~/.buidout/default.cfg``.\n\n* Cleaned up and enhanced the dependencies of the generated\n application. It no longer depends on zope.app.securitypolicy, only\n the deployment (``site.zcml``) does. Obsolete dependencies (and\n their include statements in ZCML) have been removed.\n ``zope.app.catalog`` and friends have been added as a convenience.\n\n0.3.2 (2007-07-17)\n------------------\n\n* If the user already has a default eggs directory set in\n ``~/.buildout/default.cfg``, it is used as the default value for the\n eggs directory.\n\n* Greatly improved the README.txt file.\n\n0.3.1 (2007-07-15)\n------------------\n\n* The ``buildout.cfg`` template was missing settings for the shared\n eggs directory and thew ``newest`` flag.\n\n* Assemble the default path for the eggs directory in a\n Windows-friendly way.\n\n0.3 (2007-07-14)\n----------------\n\n* Renamed to ``zopeproject``.\n\n* Incorporated much of the grokproject_ 0.5.x infrastructure. This\n makes it much more robust, especially when launching zc.buildout.\n\n* Merged ``make-zope-app`` and ``deploy-zope-app`` back into one\n command: ``zopeproject``.\n\n0.2 (2007-07-12)\n-----------------\n\n* Renamed to ``make-zope-app``.\n\n* Split ``mkzopeapp`` into two commands: ``make-zope-app`` and\n ``deploy-zope-app``.\n\n* No longer use ``zope.paste`` for the application factory. Instead,\n each application that's created from the skeleton defines its own\n factory (which is reasonably small and gains flexibility).\n\n* Get rid of the ``start<>`` script. Simply use ``bin/paster\n serve deploy.ini`` for starting the server.\n\n* Use the ``Paste#http`` server by default.\n\n0.1 (2007-07-06)\n-----------------\n\nInitial release as ``mkzopeapp``", "description_content_type": null, "docs_url": null, "download_url": "svn://svn.zope.org/repos/main/Sandbox/philikon/zopeproject/trunk#egg=zopeproject-dev", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://cheeseshop.python.org/pypi/zopeproject", "keywords": null, "license": "ZPL", "maintainer": null, "maintainer_email": null, "name": "zopeproject", "package_url": "https://pypi.org/project/zopeproject/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/zopeproject/", "project_urls": { "Download": "svn://svn.zope.org/repos/main/Sandbox/philikon/zopeproject/trunk#egg=zopeproject-dev", "Homepage": "http://cheeseshop.python.org/pypi/zopeproject" }, "release_url": "https://pypi.org/project/zopeproject/0.4.2/", "requires_dist": null, "requires_python": null, "summary": "Tools and scripts for creating development sandboxes for web applications that primarily use Zope", "version": "0.4.2" }, "last_serial": 803473, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "3490b38fe777a4c1a225cd63c8caa231", "sha256": "396c14d4a75b782cb476e60c1352600141fe7c7c4f553baedd4b1451c6bbd70b" }, "downloads": -1, "filename": "zopeproject-0.3-py2.4.egg", "has_sig": false, "md5_digest": "3490b38fe777a4c1a225cd63c8caa231", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 13474, "upload_time": "2007-07-14T18:09:57", "url": "https://files.pythonhosted.org/packages/7c/0e/58b6809aede362979e011d63b17a99fa7bc07939924d25c7b26cf824ca9a/zopeproject-0.3-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "c1199dcf848add61c7eebf2a6281f31b", "sha256": "188c5fad1a4154a2812816c4449a7f3cd69c2e471e6b685c62624857b38fe2a6" }, "downloads": -1, "filename": "zopeproject-0.3.tar.gz", "has_sig": false, "md5_digest": "c1199dcf848add61c7eebf2a6281f31b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7532, "upload_time": "2007-07-14T18:09:56", "url": "https://files.pythonhosted.org/packages/70/ed/a32c69189fbd3676ef79637670e145cc480c135cbc2926500bcb6836e726/zopeproject-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "04316b73bb4c60c3ead403f8d2d33bb7", "sha256": "1109f5411aa9bb7d3a45ff28c923d387296dce0fb63e20154678c84aa1b2f5d6" }, "downloads": -1, "filename": "zopeproject-0.3.1-py2.4.egg", "has_sig": false, "md5_digest": "04316b73bb4c60c3ead403f8d2d33bb7", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 13662, "upload_time": "2007-07-15T13:47:21", "url": "https://files.pythonhosted.org/packages/2a/bb/c00d32a3aa0498c2769bb7752417e25b616787970636eec2c62c6af8f18d/zopeproject-0.3.1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "550086d93726ce7eb4f70f688bf90c2a", "sha256": "d89fd310ce86176fefd92986a62e057fdc31fec73a3e8ea93a9d53fea2b5e47e" }, "downloads": -1, "filename": "zopeproject-0.3.1.tar.gz", "has_sig": false, "md5_digest": "550086d93726ce7eb4f70f688bf90c2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7774, "upload_time": "2007-07-15T13:47:20", "url": "https://files.pythonhosted.org/packages/0d/e2/c512d6911a7c2eede84c6aca688d662ee4fc76581eac9078c9de7c8b9c01/zopeproject-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "bd61205abf9b116ba51a4a8258c60de3", "sha256": "7ece96e8f0285809c379253fe55cdbc787eb2e9ad8513d634e81e285fd0f25b5" }, "downloads": -1, "filename": "zopeproject-0.3.2-py2.4.egg", "has_sig": false, "md5_digest": "bd61205abf9b116ba51a4a8258c60de3", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 15797, "upload_time": "2007-07-17T17:26:06", "url": "https://files.pythonhosted.org/packages/bc/af/3f06fa43ecbb7b607c13a472bd2f46983f4fe143d4602c087e5051a12305/zopeproject-0.3.2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "1af4089f5da552a0a3277cade867dbd1", "sha256": "e5c40772aaad7221a19f3c92c1ac8613b79b29af339039b5c05a87a49ea143b0" }, "downloads": -1, "filename": "zopeproject-0.3.2.tar.gz", "has_sig": false, "md5_digest": "1af4089f5da552a0a3277cade867dbd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11727, "upload_time": "2007-07-17T17:26:07", "url": "https://files.pythonhosted.org/packages/ed/4e/c535edf8886f87c47ce6f5e1c8ccd9b6abd10152a55bfdea2e7cce127ad4/zopeproject-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "3d5aa6290e3664698086f1279229e733", "sha256": "912d0754a9d8da0d272ea673dace2c2e26d46d5f4588a118b0b9b832106702a8" }, "downloads": -1, "filename": "zopeproject-0.4-py2.4.egg", "has_sig": false, "md5_digest": "3d5aa6290e3664698086f1279229e733", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 22951, "upload_time": "2007-09-19T10:07:20", "url": "https://files.pythonhosted.org/packages/a2/b4/dcdee619d7ecc441d3ccb39326256fa6dc7f8a79bb4f75cc11cba8ad82d4/zopeproject-0.4-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "2feea44ed72cee90cc2cfdfb8b415d22", "sha256": "7a43b0e11375b2fdcc17148c0d228e054497d9cf47c24eb456d69b614bb2b2bc" }, "downloads": -1, "filename": "zopeproject-0.4.tar.gz", "has_sig": false, "md5_digest": "2feea44ed72cee90cc2cfdfb8b415d22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22493, "upload_time": "2007-09-15T22:28:31", "url": "https://files.pythonhosted.org/packages/27/51/06021a5228996d4a2590d78d4e5cda5759985097657b86c1e096e4dc382c/zopeproject-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3c0c590752c637ee047cc555b2e8f5c1", "sha256": "ba888f22f1a0842de18fa9db1a3bea32028013aeb89111a37adb29f4457595f8" }, "downloads": -1, "filename": "zopeproject-0.4.1-py2.4.egg", "has_sig": false, "md5_digest": "3c0c590752c637ee047cc555b2e8f5c1", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 25577, "upload_time": "2007-09-29T15:44:51", "url": "https://files.pythonhosted.org/packages/f8/cb/19bb01e66482d33ef9dac0948396eae37fac77982553e3704088f18b6c8b/zopeproject-0.4.1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "79cb7b95bbb4cf700195fd24667dd4ca", "sha256": "bdbfd1d3c9867c620e15277f421a3ddb053c9bf20e00e5f7c9a79877716669aa" }, "downloads": -1, "filename": "zopeproject-0.4.1.tar.gz", "has_sig": false, "md5_digest": "79cb7b95bbb4cf700195fd24667dd4ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25833, "upload_time": "2007-09-29T15:44:49", "url": "https://files.pythonhosted.org/packages/8c/38/a86f0cfd1e97754c18be5b65631360c204de2256421ed01e9c642c9f5592/zopeproject-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "eaaaf1b3772d938e7674f598fb53c1b0", "sha256": "8cb9cb9e5eb90ed1ae16b3afb4cbb5827635d05dbabe4de51042b8f933c6a957" }, "downloads": -1, "filename": "zopeproject-0.4.2.tar.gz", "has_sig": false, "md5_digest": "eaaaf1b3772d938e7674f598fb53c1b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33816, "upload_time": "2009-02-12T18:22:27", "url": "https://files.pythonhosted.org/packages/db/48/4f1ec7701cf81c54d0e018e58c6f1d4e557fef111eddd53b917b095e9116/zopeproject-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eaaaf1b3772d938e7674f598fb53c1b0", "sha256": "8cb9cb9e5eb90ed1ae16b3afb4cbb5827635d05dbabe4de51042b8f933c6a957" }, "downloads": -1, "filename": "zopeproject-0.4.2.tar.gz", "has_sig": false, "md5_digest": "eaaaf1b3772d938e7674f598fb53c1b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33816, "upload_time": "2009-02-12T18:22:27", "url": "https://files.pythonhosted.org/packages/db/48/4f1ec7701cf81c54d0e018e58c6f1d4e557fef111eddd53b917b095e9116/zopeproject-0.4.2.tar.gz" } ] }