{ "info": { "author": "Asko Soukka", "author_email": "asko.soukka@iki.fi", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Communications", "Topic :: System :: Distributed Computing" ], "description": ".. image:: https://travis-ci.org/collective/collective.zamqp.png\n :target: http://travis-ci.org/collective/collective.zamqp\n\nAMQP integration for Zope2 (and Plone)\n======================================\n\n**collective.zamqp** acts as a *Zope Server* by co-opting Zope's asyncore\nmainloop (using asyncore-supporting AMQP-library\n`pika `_),\nand injecting consumed messages as *requests* to be handled by ZPublisher\n(exactly like Zope ClockServer).\n\nTherefore AMQP-messages are handled (by default) in a similar environment to\nregular HTTP-requests: ZCA-hooks, events and everything else behaving normally.\n\nThis package is an almost complete rewrite of\n`affinitic.zamqp `_,\nbut preserves its ideas on how to setup AMQP-messaging\nby configuring only producers and consumers.\n\nTODO\n * rewrite documentation to reflect the new design\n * update affinitic.zamqp's tests for the new design\n\nWhile we are still documenting and testing **collective.zamqp**,\nyou may want to take a look at `collective.zamqpdemo\n`_ for an example of use.\n\n\nInstallation\n============\n\nA common setup includes a producer and a worker instance which are both\nconnected to the same rabbitmq server.\n\nBuildout\n--------\n\nBoth instances can be easily configured using buildout::\n\n [buildout]\n parts =\n instance\n worker\n\n ...\n\n [instance]\n recipe = plone.recipe.zope2instance\n http-address = 8080\n eggs =\n ...\n collective.zamqp\n\n ...\n zope-conf-additional =\n %import collective.zamqp\n \n connection_id superuser\n hostname my.rabbithostname.com\n port 5672\n username guest\n password guest\n heartbeat 120\n keepalive 60\n \n\n [worker]\n <= instance\n http-address = 8081\n zserver-threads = 1\n environment-vars =\n ZAMQP_LOGLEVEL INFO\n zope-conf-additional =\n ${instance:zope-conf-additional}\n \n connection_id superuser\n site_id Plone\n user_id admin\n \n\nExplanation of configuration parameters\n---------------------------------------\n\n- amqp-broker-connection\n\n ``connection_id``\n Connection id, which is the registered name of the created\n global BrokerConnection-utility.\n ``hostname`` (optional)\n Hostname or IP Address of RabbitMQ server to connect to, default to\n ``localhost``.\n ``port`` (optional)\n TCP port of RabbitMQ server to connect to, defaults to ``5672``.\n ``virtual_host`` (optional)\n RabbitMQ virtual host to use, defaults to ``/``.\n ``username`` (optional)\n Plain text username for RabbitMQ connection, defaults to ``guest``.\n ``password`` (optional)\n Plain text password for RabbitMQ connection, defaults to ``guest``.\n ``heartbeat`` (optional)\n AMQP heartbeat interval in seconds, defaults to ``0`` to disable\n heartbeat.\n ``keepalive`` (optional)\n Register producer, consumer, view and clock-server with the given\n integer timeout in seconds to keep the connection alive. Defaults\n ``0``.\n ``prefetch_count`` (optional)\n AMQP channel prefetch count limit, defaults to 0 for no limit.\n\n- amqp-consuming-server\n\n ``connection_id``\n The name of a global utility providing configured IBrokerConnection. A\n consuming server will serve consumers registered for its connection id\n only.\n ``scheme`` (optional)\n Configure URL schema for virtual rewriting using VirtualHostMonster,\n default is ``http``. Will be ignored if no ``hostname`` is given.\n ``hostname`` (optional)\n Hostname which will be passed into fake request. When calling\n ``object.absolute_url()`` in a consuming server you'll receive this\n hostname. URL will be rewritten using VirtualHostMonster using following\n scheme::\n\n /VirtualHostBase/{scheme}/{hostname}:{port}/{site_id}/VirtualHostRoot/...\n\n If a hostname is configured, VirtualHostMonster will be invoked,\n ``socket.gethostname()`` will be used else.\n ``port`` (optional)\n Configure port for virtual rewriting using VirtualHostMonster,\n default is ``80``. Will be ignored if no ``hostname`` is given.\n ``use_vhm`` (optional)\n Create VirtualHostMonster-wrapped method calls when hostname is set. VHM\n is used to tell portal the configured real public hostname and to hide\n portal's id from path. Defaults to *on*.\n ``vhm_method_prefix`` (optional)\n Explicitly set the VHM method prefix for AMQP-based requests. Most\n typical options may look like:\n\n * /VirtualHostBase/https/example.com:443/Plone\n * /VirtualHostBase/https/example.com:443/Plone/VirtualHostRoot\n * /VirtualHostBase/https/example.com:443/Plone/VirtualHostRoot/_vh_subsite\n\n Note: This overrides the default implicit VHM-support by setting scheme,\n hostname, port and use_vhm, but will still require use_vhm enabled to be\n active. Empty value fallbacks to the old default use_vhm-behavior.\n ``site_id``\n The id of a site, which should be the context when consuming the AMQP\n messages, which the consumers of a consuming server consume. If a\n ``hostname`` is given, this will be used for VirtualHostMonster\n rewrites.\n ``user_id`` (optional)\n Optional user id of the Plone user, whose privileges are used to consume\n the messages. By default, the messages are consumed as Anonymous User\n calling trusted filesystem code.\n\n\nConfiguring logging\n-------------------\n\nYou may want to in/decrease ``collective.zamqp`` loglevel which can easily be\ndone by passing an environment variable into worker instance as seen in\nbuildout example above::\n\n [worker]\n ...\n environment-vars =\n ZAMQP_LOGLEVEL INFO\n ...\n\nValid parameters are:\n\n- DEBUG\n- INFO\n\nChangelog\n=========\n\n0.16.2 (2018-02-27)\n-------------------\n\n- Fix issue where connection delay did not increment due to routing\n configuration error causing disconnection whiles still configuring\n exchanges, queues or bindings\n [datakurre]\n\n- Fix issue where a automatic reconnection caused extra connection to be\n made, sometimes resulting in wrong delivery tags on consumed messages,\n leading to precondition failed errors when acking those messages\n [datakurre]\n\n0.16.1 (2017-11-29)\n-------------------\n\n- Fix issue where blocking connection was unable close channel and connection\n properly due to bug in Pika 0.9.5\n [datakurre]\n\n0.16.0 (2016-06-08)\n-------------------\n\n- Fix msgpack serializer to encode and decode using 'utf-8' encoding by default\n [Asko Soukka]\n\n0.15.1 (2016-01-28)\n-------------------\n\n- Fix to require collective.monkeypatcher >= 1.1.1\n [datakurre]\n\n0.15.0 (2016-01-27)\n-------------------\n\n- **Note:** This release changes producers and messages to join the current\n transaction using transaction's ``join`` instead of deprecated ``register``.\n So far, this change has seem to been fully backwards compatible.\n\n- Add minimal savepoint support (NoRollbackSavepoint)\n [datakurre]\n\n- Fix to join transaction using join instead of register to support savepoints\n [datakurre]\n\n- Fix issue where pika blocking connection raised error because of\n a missing log import in its 0.9.5 release\n [datakurre]\n\n- Fix testing integration related issue where ZAMQP fixture left dangling\n registrations to slow down and cause side-effects for tests\n [datakurre]\n\n\n0.14.3 (2014-10-23)\n-------------------\n\n- Log connection and channel creation etc.\n [sunew]\n\n0.14.2 (2014-10-23)\n-------------------\n\n- The ZAMQP_LOGLEVEL environment variable was not yet accessible at import\n time. Moved Logger to utils module to delay the import.\n [sunew]\n\n0.14.1 (2014-10-10)\n-------------------\n\n- Fix issue where logging reject did not get enough arguments\n [datakurre]\n\n0.14.0 (2014-09-18)\n-------------------\n\n- Fix issue where language is not correctly set for AMQP requests\n [datakurre]\n- Remove hard dependency to z3c.unconfigure 1.0.1\n [saily]\n\n0.13.2 (2013-11-08)\n-------------------\n\n- Remove duplicate default producer from test fixture.\n [datakurre]\n\n0.13.1 (2013-11-08)\n-------------------\n\n- Fix packaging.\n\n0.13.0 (2013-11-08)\n-------------------\n\n- Add vhm_method_prefix-option to replace old vhm-options\n [datakurre]\n\n0.12.0 (2013-08-08)\n-------------------\n\n- Fix to store durable publishable messages during reconnection period\n in memory on the base of message's delivery_mode-proprety, not\n producer's durable-property\n [datakurre]\n\n- Combine loggers and reduce logging\n [saily, datakurre]\n\n0.11.0 (2013-06-05)\n-------------------\n\n- Set ``use_vhm=False`` for ZAMQP Test Layer\n [saily]\n\n- Add option ``use_vhm`` to make VHM-methods optional (to allow use of\n hostname=localhost:8080/Plone in development)\n [datakurre]\n\n- Added a configureable scheme, hostname and port keyword to be passed into\n fake request object in consumers. We well automatically rewrite those URLs\n using VirtualHostMonster.\n [datakurre, saily]\n\n- Reduce amount of logging, fixes #2. [saily]\n\n- Documentation updates\n [saily]\n\n- Add prefetch_count-option for connections\n [datakurre]\n\n- Add fixture with RabbitMQ trace firehose consumer to ease debugging\n [datakurre]\n\n- Fix to requeue messages also when subclass of ConflictError is raised during\n commit (e.g. ReadConflictError)\n [datakurre]\n\n0.10.2 (2013-03-14)\n-------------------\n\n- Fix to process Pika timeouts on every asyncore poll to fix heartbeat issues\n\n0.10.1 (2013-03-13)\n-------------------\n\n- Add configuration options for 'exchange_auto_declare' and\n 'queue_auto_declare'\n- Fix 'queue_exclusive = True' to imply also 'queue_durable = False' and\n 'queue_auto_delete = True'\n\n0.10.0 (2013-03-12)\n-------------------\n\n- Update keepalive-ping-queue to use 1 hour message ttl\n- Add option (defaulting to true) for monkey patching Zope2 lifetime_loop for\n shorter asyncore.poll-timeouts on consuming instances.\n\n0.9.8 (2013-03-09)\n------------------\n\n- Fix regression: allow to bind queue with empty routing key\n\n0.9.7 (2013-03-05)\n------------------\n\n- Fix to not try to requeue auto-acknowledged messages on conflict errors,\n because it's not possible\n- Fix consumer configuration to support list of routing keys (to ease the use\n of metronome like exchanges)\n\n0.9.6 (2013-02-21)\n------------------\n\n- Fix Rabbit-fixture to be silent when Rabbit has been killed before teardown\n\n0.9.5 (2013-02-20)\n------------------\n\n- Fix to include convenient default producers in the default test layer\n\n0.9.4 (2012-11-27)\n------------------\n\n- Fixed bugs in registering connections and consuming servers in ZAMQP layer.\n\n- Added 'text/csv' serializer (for serializing iterable container of\n dictionaries into RFC4180 CSV data and deserializing such messages into\n tuple of dictionaries)\n\n0.9.3 (2012-11-27)\n------------------\n\n- Enhanced 'runAsyncTest' to accept 'loop_timeout' and 'loop_count' parameters.\n- Fixed optional json-serializer to try to import 'json' at first and only then\n 'simplejson'.\n\n0.9.2 (2012-09-18)\n------------------\n\n- Pinned z3c.unconfigure==1.0.1.\n- Added test fixture to be used with ZSERVER-fixtures to support Selenium-testing.\n- Fixed consuming server to default to 'Anonymous User' instead of None.\n- Added runAsyncTest-helper for running tests depending on the asyncore loop.\n Added consuming server for ZAMQP-layer.\n\n0.9.1 (2012-09-18)\n------------------\n\n- Fixed to not set correlation_id-property for message if the given\n correlation_id is None.\n\n0.9.0 (2012-09-17)\n------------------\n\n- Added alias 'Producer.register' for VTM._register.\n- Renamed 'connected'-property to 'is_connect'.\n\n0.8.1 (2012-09-06)\n------------------\n\n- Fixed queue length helpers to use BlockingChannel-helper properly.\n\n0.8.0 (2012-09-06)\n------------------\n\n- Fixed consumers without marker interface not to start consuming.\n- Enhanced undolog for transactions by 'zamqp-consumer'-view.\n- Fixed consuming view to annotate transaction with the user configured for the\n current consuming service.\n- Added separate auto_delete-setting for exchanges and queues. Previously\n auto_delete was set as negation of durability, which remains the default.\n- Added connection configuration to default with implicit default producer\n registration (= producer with the same name/id as the connection, but no any\n special routing).\n- Added support for custom 'x-cookie-auth' header. Its value will be set to\n value of '__ac' cookie for AMQP request to allow PAS-authentication for\n logged in user (e.g. to support authenticated asyncronous tasks).\n- Added __len__ for consumer and producer for getting the queue length (if the\n related queue is defined) using blocking channel.\n- Added BlockingChannel wrapper to be used with 'with' statement to create\n separate blocking connections for quick raw AMQP-operations.\n- Fixed to never declare queue starting with 'amq.', which is reserved prefix\n in RabbitMQ. Allow empty queue names to support automatic (broker-generated)\n queue-names.\n- Fixed to never declare RabbitMQ default exchanges (declarig of any\n 'amq.'-starting exchange will be skipped).\n- Added json-serializer (when either json or simplejson can be imported).\n\n0.7.18 (2012-08-10)\n-------------------\n\n- Bug fixes.\n [malthe]\n- Added plone.testing layer for RabbitMQ + Zope. Added a dummy test for the\n layer. Enabled RabbitMQ-parts in test buildout.\n- Fixed consumers and producers to use the default exchange by default to allow\n the easiest possible configuration for the use of the default exchange only.\n\n0.7.17 (2012-05-21)\n-------------------\n\n- Added transaction aware reject to message.\n- Added site_id-substitution support for consumer name to make consuming\n service and site specific consumers available for lookup.\n- Fixed to not crash if connection if not defined. Just warn.\n- Fixed grok.name-magic to work more similarly in consumer (name is taken as\n queue) as in producer (name is taken as routing_key).\n- Refactored ping to use simple dynamic properties for routing_key and queue.\n- Refactored producer, consumer and connection init to allow configuration\n using simple dynamic properties.\n- Refactored producer, consumer and connection init to allow configuration\n using simple dynamic properties.\n- Dropped 'magical' buildout name from keepalive's ping queues.\n- Removed 'magical' proxying of message body's properties before we rely on it.\n\n0.7.16 (2012-05-04)\n-------------------\n\n- Forced correlation_id to be str.\n- Changed default serializer from 'text/plain' to 'pickle'.\n- Fixed added dependencies to work on Plone 4.0.x.\n\n0.7.14 (2012-05-02)\n-------------------\n\n- Fixed to requeue message when transaction of successful handling is aborted\n (e.g. due to ZODB conflict error).\n\n0.7.12 (2012-04-25)\n-------------------\n\n- Added support for sauna.reload.\n\n0.7.11 (2012-04-18)\n-------------------\n\n- Changed ping to be logged on debug-level instead of info-level.\n\n0.7.10 (2012-04-18)\n-------------------\n\n- Fixed Pika-adapter to process timeouts to support AMQP-heartbeat.\n\n0.7.9 (2012-04-16)\n------------------\n\n- Modified keepalive-setting to accept an integer instead of boolean to\n allow configuration of keepalive-ping-interval in detail.\n\n0.7.8 (2012-04-16)\n------------------\n\n- Fixed issue where a typo in message de-serialization hide de-serialized body.\n\n0.7.7 (2012-04-04)\n------------------\n\n- Fixed issue with attribute not found in threadlocals.\n\n0.7.5 (2012-02-26)\n------------------\n\n- Minor fixes for being more *sauna.reload*-friendly.\n\n0.7.4 (2012-03-12)\n------------------\n\n- Simplified Ping-consumer to ack messages and log ping directly withing\n asyncore loop without creating a fake HTTP-request.\n\n0.7.3 (2012-03-09)\n------------------\n\n- Added a helper function ``collective.zamqp.utils.getBuildoutName`` to be\n used in configuration re-usable packages using buildout-depending\n AMQP-queues (e.g. for replies).\n\n0.7.2 (2012-03-08)\n------------------\n\n- Added *keepalive* option for AMQP Broker Connection -configuration in\n zope.conf to auto-register all needed utilities, views and clock-servers for\n keeping the connection alive with regular ping message.\n\n0.7.1 (2012-03-06)\n------------------\n\n- Allowed new named AMQP Broker Connections to be defined in zope.conf\n (or in 'zope-conf-additional' in instance buildout recipe).\n\n0.7.0 (2012-02-05)\n------------------\n\n- Internal development release.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/collective/collective.zamqp", "keywords": "", "license": "ZPL", "maintainer": "", "maintainer_email": "", "name": "collective.zamqp", "package_url": "https://pypi.org/project/collective.zamqp/", "platform": "", "project_url": "https://pypi.org/project/collective.zamqp/", "project_urls": { "Homepage": "http://github.com/collective/collective.zamqp" }, "release_url": "https://pypi.org/project/collective.zamqp/0.16.2/", "requires_dist": [ "setuptools", "Zope2", "ZODB3", "transaction", "zope.interface", "zope.component", "zope.publisher", "zope.event", "zope.processlifetime", "grokcore.component", "pika (==0.9.5)", "collective.monkeypatcher (>=1.1.1)", "zope.deprecation", "sphinx; extra == 'docs'", "collective.sphinx.includedoc; extra == 'docs'", "repoze.sphinx.autointerface; extra == 'docs'", "sphinxcontrib-plantuml; extra == 'docs'", "sphinxtogithub; extra == 'docs'", "z3c.unconfigure (==1.0.1); extra == 'reload'", "testfixtures; extra == 'test'", "rabbitfixture; extra == 'test'", "plone.testing; extra == 'test'", "plone.app.testing; extra == 'test'", "zope.configuration; extra == 'test'", "msgpack-python; extra == 'test'" ], "requires_python": "", "summary": "Asynchronous AMQP-integration for Plone (and Zope2)", "version": "0.16.2" }, "last_serial": 3620974, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "b38e7eeea4063d20459b922428ffc55a", "sha256": "14b14f9316d5cd027fef4ddcb5256fc0d8b19f7c6376d3dd0cd940482ef3809d" }, "downloads": -1, "filename": "collective.zamqp-0.10.0.zip", "has_sig": false, "md5_digest": "b38e7eeea4063d20459b922428ffc55a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79837, "upload_time": "2013-03-12T14:36:02", "url": "https://files.pythonhosted.org/packages/ee/ce/61f4551ef120f52330bcea4c130f630dd190ac5783cb7edfcc48b9fa3c2a/collective.zamqp-0.10.0.zip" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "8dc0c6d11a0a0db11999328a1175437f", "sha256": "d72a2a8074479a31c99c8472c8da0d6271bcb8b368db102617f06be6d45f3ad2" }, "downloads": -1, "filename": "collective.zamqp-0.10.1.zip", "has_sig": false, "md5_digest": "8dc0c6d11a0a0db11999328a1175437f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80198, "upload_time": "2013-03-13T12:10:01", "url": "https://files.pythonhosted.org/packages/ed/49/2a8b5f9b4e4ac22cae06b9414ea6233d5451860d415e7f3e9c06b227ce43/collective.zamqp-0.10.1.zip" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "f10474e31e7c81bb40bf481bb43d64bb", "sha256": "68adabf10a436acd53102fca41de1d9e4dd47679392986d8082992673caeb18e" }, "downloads": -1, "filename": "collective.zamqp-0.10.2.zip", "has_sig": false, "md5_digest": "f10474e31e7c81bb40bf481bb43d64bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80319, "upload_time": "2013-03-14T12:20:52", "url": "https://files.pythonhosted.org/packages/d2/06/0fa73252e5c3a7475eec187c344ce1059d52455e2536269abbd0ab2c1e81/collective.zamqp-0.10.2.zip" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "3297647f6033e2c39bac824bc1f2e725", "sha256": "4aa7293132035db6953fe235e561dedff0a28f17a4dfad3ff0b00eeeb3d19dc8" }, "downloads": -1, "filename": "collective.zamqp-0.11.0.zip", "has_sig": false, "md5_digest": "3297647f6033e2c39bac824bc1f2e725", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87318, "upload_time": "2013-06-05T19:54:35", "url": "https://files.pythonhosted.org/packages/17/ad/08bb7c41abf2b315026d05cc7a31f44c8f338dc20e2bc4efc08f6558aee0/collective.zamqp-0.11.0.zip" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "783057638d38705e1b06e7687d6884f0", "sha256": "53b8a14d2def5a8c4b5b352837ad7b7c9def863ead804661dd8574ffcfdcb7ce" }, "downloads": -1, "filename": "collective.zamqp-0.12.0.zip", "has_sig": false, "md5_digest": "783057638d38705e1b06e7687d6884f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88372, "upload_time": "2013-08-08T06:29:42", "url": "https://files.pythonhosted.org/packages/35/c6/0027ee126c11a1cdc80c40ca906aca6ee32d8949d4b119bc86ed63d365db/collective.zamqp-0.12.0.zip" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "7bc38f8f366d992fdaf33c66b5e2bebf", "sha256": "183e508c608bd109da3fa7cc07c84f2d312b385deea2439d15c5a0f8261d8dfb" }, "downloads": -1, "filename": "collective.zamqp-0.13.0.zip", "has_sig": false, "md5_digest": "7bc38f8f366d992fdaf33c66b5e2bebf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73265, "upload_time": "2013-11-08T12:14:10", "url": "https://files.pythonhosted.org/packages/69/f2/053d311dd30be4dc1c416fe4e0b1793790e7a9f506ab5132d67dd313603c/collective.zamqp-0.13.0.zip" } ], "0.13.1": [ { "comment_text": "", "digests": { "md5": "658e3f279fe16aeb8d28f9f68ecd4131", "sha256": "0e879af3aa43662199eceedf762804f09800b3ff420bd47e7a250c4e815c3575" }, "downloads": -1, "filename": "collective.zamqp-0.13.1.zip", "has_sig": false, "md5_digest": "658e3f279fe16aeb8d28f9f68ecd4131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84814, "upload_time": "2013-11-08T12:37:10", "url": "https://files.pythonhosted.org/packages/83/0e/91213a1a7dfa6d51e0dbb8973c317f43e76bfb0d42324f7e0363603588cd/collective.zamqp-0.13.1.zip" } ], "0.13.2": [ { "comment_text": "", "digests": { "md5": "5b3824f9ed3136803958c2db9b8e1ff4", "sha256": "bd8a481cd7c8a51d6ca341ffaccb20a050a717f32ad44306c54c9e2aa08b2c83" }, "downloads": -1, "filename": "collective.zamqp-0.13.2.zip", "has_sig": false, "md5_digest": "5b3824f9ed3136803958c2db9b8e1ff4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84882, "upload_time": "2013-11-08T17:03:25", "url": "https://files.pythonhosted.org/packages/cd/e1/fc5b62e592b707204c75cc34210a16e15169d8f88d9f967fff7d83c84638/collective.zamqp-0.13.2.zip" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "696c09a29789a7785acbfa0726f70c00", "sha256": "227507649c5b5f876fefcc46fabc80926892a4bd1855e7d07e11eaf27cb1996e" }, "downloads": -1, "filename": "collective.zamqp-0.14.0.zip", "has_sig": false, "md5_digest": "696c09a29789a7785acbfa0726f70c00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89736, "upload_time": "2014-09-18T13:11:34", "url": "https://files.pythonhosted.org/packages/92/8b/1f255052a886545a9a41f39faee7cfe5d8efd25351528c22609588287140/collective.zamqp-0.14.0.zip" } ], "0.14.1": [ { "comment_text": "", "digests": { "md5": "394f3f09ac9959a31323a5367b6e641b", "sha256": "a1ea9675961ae7dba776a1be2983813fe87f4cdd9466108ce1b79e2ca36f6848" }, "downloads": -1, "filename": "collective.zamqp-0.14.1.zip", "has_sig": false, "md5_digest": "394f3f09ac9959a31323a5367b6e641b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84823, "upload_time": "2014-10-10T10:20:53", "url": "https://files.pythonhosted.org/packages/cb/ef/7179e7c669213c32ac6d03b44047bde0fbf9e31b39c64c7dad2303db5bed/collective.zamqp-0.14.1.zip" } ], "0.14.2": [ { "comment_text": "", "digests": { "md5": "a1a137088fe40d43e27bdb91d9c7eb4d", "sha256": "dae5500a28c9ea4ac74bccc81b7dd83cd1ae59ebb6cefee9ed42b9bee9d021d1" }, "downloads": -1, "filename": "collective.zamqp-0.14.2.zip", "has_sig": false, "md5_digest": "a1a137088fe40d43e27bdb91d9c7eb4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85109, "upload_time": "2014-10-22T21:30:55", "url": "https://files.pythonhosted.org/packages/66/ee/584c84d6944ec00106807a2f90e7c33d59e97a3b723e5fe1bac57345e637/collective.zamqp-0.14.2.zip" } ], "0.14.3": [ { "comment_text": "", "digests": { "md5": "c584988fbeb333fda86c2e089c0bd25f", "sha256": "01eac2af44ce84ec57ab223c24733937293d06bc45f1b6708fac84e4f1b76775" }, "downloads": -1, "filename": "collective.zamqp-0.14.3.zip", "has_sig": false, "md5_digest": "c584988fbeb333fda86c2e089c0bd25f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85320, "upload_time": "2014-10-22T22:17:44", "url": "https://files.pythonhosted.org/packages/40/08/e0cfcd7a1637924c4c2e098aa0ce0c862dd69fe2b370ddba98010ac0bcee/collective.zamqp-0.14.3.zip" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "15811976c65f8d7c0f70ce4f3145596c", "sha256": "7a6af68587c40c6f57b04ca0e757039a8c7ed63c66e40e5f222d3b1a067904b5" }, "downloads": -1, "filename": "collective.zamqp-0.15.0.tar.gz", "has_sig": false, "md5_digest": "15811976c65f8d7c0f70ce4f3145596c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60965, "upload_time": "2016-01-27T08:09:05", "url": "https://files.pythonhosted.org/packages/55/53/ffd24d31a17cb32437d8ace7d4f13d3a422b6d6de44f1d7b1a9ea9c1d325/collective.zamqp-0.15.0.tar.gz" } ], "0.15.1": [ { "comment_text": "", "digests": { "md5": "8ff4841ae711d9f9873f939414bdb0d9", "sha256": "718506f12595d985bd21347c6880d7cddc6d7e952f1498f30ffe84c9f491e6fe" }, "downloads": -1, "filename": "collective.zamqp-0.15.1.tar.gz", "has_sig": false, "md5_digest": "8ff4841ae711d9f9873f939414bdb0d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61762, "upload_time": "2016-01-28T16:39:10", "url": "https://files.pythonhosted.org/packages/aa/45/df62a06099439e1933acaab463b9c8d2e3382af38a87046b4c609e20cd5c/collective.zamqp-0.15.1.tar.gz" } ], "0.16.0": [ { "comment_text": "", "digests": { "md5": "25aa23966aa542e3917ea2f0d77831ac", "sha256": "dd59b6b6a00796e2cf237858c6cf9f2f8a9954b07903b071659c1b1e8fb03684" }, "downloads": -1, "filename": "collective.zamqp-0.16.0.tar.gz", "has_sig": false, "md5_digest": "25aa23966aa542e3917ea2f0d77831ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61896, "upload_time": "2016-06-08T10:45:49", "url": "https://files.pythonhosted.org/packages/6e/42/c1cdc3b318a8de37cfbfa9088bd84765ca715ff7b434c3c768126418f105/collective.zamqp-0.16.0.tar.gz" } ], "0.16.1": [ { "comment_text": "", "digests": { "md5": "66f3111410e8e3447517199b9ac81dc2", "sha256": "a0041bb9cf81f238c36c97fc72886c2d54bf00b726374031e1a17bcb1839268b" }, "downloads": -1, "filename": "collective.zamqp-0.16.1-py2-none-any.whl", "has_sig": false, "md5_digest": "66f3111410e8e3447517199b9ac81dc2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 72954, "upload_time": "2017-11-29T08:41:37", "url": "https://files.pythonhosted.org/packages/68/5e/285fc8ce143e3b469757b33c34860985474b81af0931a5e8296cb6d21385/collective.zamqp-0.16.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96b86cf106185fbdf994c9f7c9c21b1d", "sha256": "67831a2b5189f15c27cf4c979b83e3c27d87dcb3dab93e595455dcca2cb1e158" }, "downloads": -1, "filename": "collective.zamqp-0.16.1.tar.gz", "has_sig": false, "md5_digest": "96b86cf106185fbdf994c9f7c9c21b1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63694, "upload_time": "2017-11-29T08:41:39", "url": "https://files.pythonhosted.org/packages/bf/5b/bb5c0170860f0f192e8d478d86e56d3a1e37d94a83abdc621b145eab3782/collective.zamqp-0.16.1.tar.gz" } ], "0.16.2": [ { "comment_text": "", "digests": { "md5": "8e7e21963b857984de481cc994a0c37e", "sha256": "7a9465a32c88c8e970a499d3544acbc10f3ecf4936a79ed6aaded6cbc3082da6" }, "downloads": -1, "filename": "collective.zamqp-0.16.2-py2-none-any.whl", "has_sig": false, "md5_digest": "8e7e21963b857984de481cc994a0c37e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 73415, "upload_time": "2018-02-27T08:59:15", "url": "https://files.pythonhosted.org/packages/e6/4f/b3d7d9558e13235397730293560c0cb2029c77aa7fb387327c1a003f7cba/collective.zamqp-0.16.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f78e1e086f8a90f4d397bed2a48082c4", "sha256": "fb2f903ea5caabe88fa0eeb972d93d3945be5fbc95fbb39980ca2ce6f59bb6ab" }, "downloads": -1, "filename": "collective.zamqp-0.16.2.tar.gz", "has_sig": false, "md5_digest": "f78e1e086f8a90f4d397bed2a48082c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64208, "upload_time": "2018-02-27T08:59:17", "url": "https://files.pythonhosted.org/packages/b9/80/4b3da6ad0eecce8059f736f811de994931a4e2a72e2ff28f974b8440ce26/collective.zamqp-0.16.2.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "4cc51fe71848aafbbe79d75c84ff634a", "sha256": "1872824415d5b48b218244cf9f6c164965cddf28608f3af7c2a832a00437e9a2" }, "downloads": -1, "filename": "collective.zamqp-0.9.0.zip", "has_sig": false, "md5_digest": "4cc51fe71848aafbbe79d75c84ff634a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73589, "upload_time": "2012-09-17T08:44:31", "url": "https://files.pythonhosted.org/packages/9f/db/80e449724e2fa466daaa1569eeaa5f614bf1b96932cc0841a30d92e83008/collective.zamqp-0.9.0.zip" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "0dc8d6cf68efb166f433b6481d47981c", "sha256": "1eaffbb87d533524dcfd9c0133581961c47af4067e8797ba12264c9e93925d71" }, "downloads": -1, "filename": "collective.zamqp-0.9.1.zip", "has_sig": false, "md5_digest": "0dc8d6cf68efb166f433b6481d47981c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 104814, "upload_time": "2012-09-18T10:57:10", "url": "https://files.pythonhosted.org/packages/68/30/9e71837b8c791254e7d022bd6a2585947d0205c9b7ec9fcdf28f61007231/collective.zamqp-0.9.1.zip" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "947baeb8ad2b9fda39649846f59f881d", "sha256": "a881a3298c7c9584aae48dd64db6f36be76e68d860676e61a342b38f634f865a" }, "downloads": -1, "filename": "collective.zamqp-0.9.2.zip", "has_sig": false, "md5_digest": "947baeb8ad2b9fda39649846f59f881d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106494, "upload_time": "2012-11-02T13:38:47", "url": "https://files.pythonhosted.org/packages/5a/c3/cfa2c69e91c83c548b93bdbdcb47954bc658a697d1034a234bd73f3fa321/collective.zamqp-0.9.2.zip" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "3b8ef696a7bce34e2137406de5b4e389", "sha256": "dc522fbe7d403a679d2b2e31facd66d141fc4cb120533e36f28821582c616c19" }, "downloads": -1, "filename": "collective.zamqp-0.9.3.zip", "has_sig": false, "md5_digest": "3b8ef696a7bce34e2137406de5b4e389", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106741, "upload_time": "2012-11-27T09:58:46", "url": "https://files.pythonhosted.org/packages/50/17/0c7cc86b09007e6d01b102f2d6b11a537b7686aefdc2166dfd707d5db585/collective.zamqp-0.9.3.zip" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "80918168445ae03e0bf95a01460fe5a7", "sha256": "ab0e42a922e9bad65c8b6acbd92ed7922d26833909790ae873f3ac2d87d5eef8" }, "downloads": -1, "filename": "collective.zamqp-0.9.4.zip", "has_sig": false, "md5_digest": "80918168445ae03e0bf95a01460fe5a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76801, "upload_time": "2012-11-27T17:22:16", "url": "https://files.pythonhosted.org/packages/c0/f5/c4ab5e930f387478121ff3f4a819ddf2f7a78b80f1d6c70e731208d0a28b/collective.zamqp-0.9.4.zip" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "1d9c41817807f1e9ed3ad72f2db46251", "sha256": "7c5c56690394396f4c9e431a0cbe0322bf7f055ac6f99260ac463431b3bc46bf" }, "downloads": -1, "filename": "collective.zamqp-0.9.5.zip", "has_sig": false, "md5_digest": "1d9c41817807f1e9ed3ad72f2db46251", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78321, "upload_time": "2013-02-20T15:35:39", "url": "https://files.pythonhosted.org/packages/40/b0/8a4b7c932bfe415dbaf9786e53286b5fe8dc12e7e0f848f15f24c4e49acd/collective.zamqp-0.9.5.zip" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "9f4b4802fade6f6100af0d75db8c1eb0", "sha256": "01cac873083e044baf715a0e83c5555cff176c0a0b4efc8bf2f66da76b75399a" }, "downloads": -1, "filename": "collective.zamqp-0.9.6.zip", "has_sig": false, "md5_digest": "9f4b4802fade6f6100af0d75db8c1eb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78532, "upload_time": "2013-02-21T05:02:24", "url": "https://files.pythonhosted.org/packages/ea/b6/268ae50e11e049d646757d342feb35770c720b4cc594d2da02f549195cc6/collective.zamqp-0.9.6.zip" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "8fe30732997bb5448b316ddcc8487415", "sha256": "feda72142c55e852271c012caa5314797d834389ad2838914e7cce0561e52801" }, "downloads": -1, "filename": "collective.zamqp-0.9.7.zip", "has_sig": false, "md5_digest": "8fe30732997bb5448b316ddcc8487415", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79022, "upload_time": "2013-03-05T11:12:54", "url": "https://files.pythonhosted.org/packages/c8/59/644dad74d974eab098c692e33ddc97074fa1fdbc6b3fd92e32d7ee510338/collective.zamqp-0.9.7.zip" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "a0f374bfc5b4491d37bd46ef900298c3", "sha256": "d1e358191a836bd98b813ff7de15a5a4c9d5572e5ffb6a143f63270c5cba1086" }, "downloads": -1, "filename": "collective.zamqp-0.9.8.zip", "has_sig": false, "md5_digest": "a0f374bfc5b4491d37bd46ef900298c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79105, "upload_time": "2013-03-09T15:28:26", "url": "https://files.pythonhosted.org/packages/ba/04/cdf21ad1a728821a01c9b37691292c82c0f26c55e87777b10b72b149cbc4/collective.zamqp-0.9.8.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8e7e21963b857984de481cc994a0c37e", "sha256": "7a9465a32c88c8e970a499d3544acbc10f3ecf4936a79ed6aaded6cbc3082da6" }, "downloads": -1, "filename": "collective.zamqp-0.16.2-py2-none-any.whl", "has_sig": false, "md5_digest": "8e7e21963b857984de481cc994a0c37e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 73415, "upload_time": "2018-02-27T08:59:15", "url": "https://files.pythonhosted.org/packages/e6/4f/b3d7d9558e13235397730293560c0cb2029c77aa7fb387327c1a003f7cba/collective.zamqp-0.16.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f78e1e086f8a90f4d397bed2a48082c4", "sha256": "fb2f903ea5caabe88fa0eeb972d93d3945be5fbc95fbb39980ca2ce6f59bb6ab" }, "downloads": -1, "filename": "collective.zamqp-0.16.2.tar.gz", "has_sig": false, "md5_digest": "f78e1e086f8a90f4d397bed2a48082c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64208, "upload_time": "2018-02-27T08:59:17", "url": "https://files.pythonhosted.org/packages/b9/80/4b3da6ad0eecce8059f736f811de994931a4e2a72e2ff28f974b8440ce26/collective.zamqp-0.16.2.tar.gz" } ] }