{ "info": { "author": "gocept ", "author_email": "mail@gocept.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Zope :: 3", "Framework :: Zope :: 4", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Software Development :: Testing" ], "description": "======================\ngocept.httpserverlayer\n======================\n\nThis package provides an HTTP server for testing your application with normal\nHTTP clients (e.g. a real browser). This is done using `test layers`_, which\nare a feature of `zope.testrunner`_.\n\ngocept.httpserverlayer uses `plone.testing`_ for the test layer implementation,\nand exposes the following resources (accessible in your test case as\n``self.layer[RESOURCE_NAME]``):\n\n:http_host: The hostname of the HTTP server (Default: localhost)\n:http_port: The port of the HTTP server (Default: 0, which means chosen\n automatically by the operating system)\n:http_address: ``hostname:port``, convenient to use in URLs\n (e.g. ``'http://user:password@%s/path' % self.layer['http_address']``)\n\nThis package is compatible with Python version 2.7, 3.6 and 3.7.\n\n.. _`test layers`: https://pypi.org/project/plone.testing/#layers\n.. _`zope.testrunner`: https://pypi.org/project/zope.testrunner/\n.. _`plone.testing`: https://pypi.org/project/plone.testing/\n\n.. contents::\n\n\nWSGI\n====\n\nThis test layer takes a WSGI callable and runs it in a temporary HTTP server::\n\n import gocept.httpserverlayer.wsgi\n from mypackage import App\n import unittest\n\n HTTP_LAYER = gocept.httpserverlayer.wsgi.Layer()\n HTTP_LAYER.wsgi_app = App()\n\n class WSGIExample(unittest.TestCase):\n\n layer = HTTP_LAYER\n\n def test_something(self):\n r = urllib.urlopen('http://{0.layer[http_address]}/'.format(self))\n self.assertIn('Hello world', r.read())\n\nYou can also have a base layer provide the WSGI callable (in the\n``wsgi_app`` resource)::\n\n\n import gocept.httpserverlayer.wsgi\n from mypackage import App\n import plone.testing\n\n class WSGILayer(plone.testing.Layer):\n\n def setUp(self):\n self['wsgi_app'] = App()\n\n WSGI_LAYER = WSGILayer()\n\n HTTP_LAYER = gocept.httpserverlayer.wsgi.Layer(\n name='HTTPLayer', bases=(WSGI_LAYER,))\n\n\nStatic files\n============\n\nThis test layer serves up the contents of a directory::\n\n import gocept.httpserverlayer.static\n import pkg_resources\n import unittest\n\n HTTP_LAYER = gocept.httpserverlayer.static.Layer(\n pkg_resources.resource_filename('my.package.tests', 'fixtures'))\n\n class DirecoryExample(unittest.TestCase):\n\n layer = HTTP_LAYER\n\n def test_something(self):\n r = urllib.urlopen('http://{0.layer[http_address]}/'.format(self))\n self.assertIn('Hello world', r.read())\n\nIf you don't pass in a directory, a temporary directory will be created/removed\nautomatically. The directory is provided in the ``documentroot`` resource.\nFor convenience, a layer instance is already provided as ``STATIC_FILES``::\n\n import gocept.httpserverlayer.static\n import os.path\n import unittest\n\n HTTP_LAYER = gocept.httpserverlayer.static.STATIC_FILES\n\n class TemporaryExample(unittest.TestCase):\n\n layer = HTTP_LAYER\n\n def test_something(self):\n path = os.path.join(self.testlayer['documentroot'], 'index')\n with open(path, 'w') as f:\n f.write('Hello World!')\n r = urllib.urlopen(\n 'http://{0.layer[http_address]}/index'.format(self))\n self.assertIn('Hello world', r.read())\n\n\nCustom request handler\n======================\n\nThis test layer allows you to provide your own HTTP request handler for very\nfine-grained control::\n\n import gocept.httpserverlayer.custom\n import unittest\n\n class RequestHandler(gocept.httpserverlayer.custom.RequestHandler):\n\n response_code = 200\n response_body = ''\n posts_received = []\n\n def do_POST(self):\n length = int(self.headers['content-length'])\n self.posts_received.append(dict(\n path=self.path,\n data=self.rfile.read(length),\n headers=self.headers,\n ))\n self.send_response(self.response_code)\n self.end_headers()\n self.wfile.write(self.response_body)\n\n HTTP_LAYER = gocept.httpserverlayer.custom.Layer(RequestHandler)\n\n class POSTExample(unittest.TestCase):\n\n layer = HTTP_LAYER\n\n def test_something(self):\n urllib.urlopen('http://{0.layer[http_address]}/'.format(self),\n urllib.urlencode({'foo': 'bar'}))\n self.assertEqual(\n 'foo=bar',\n self.layer['request_handler'].posts_received[0]['data'])\n\n\nFramework integration\n=====================\n\ngocept.httpserverlayer also provides integration with some web frameworks.\nDifferent frameworks require different dependencies; this is handled via\nsetuptools extras of gocept.httpserverlayer (e.g. for Grok integration you need\nto require ``gocept.httpserverlayer[zopeappwsgi]``).\n\n\nZope 3 / ZTK / Grok (zope.app.wsgi)\n===================================\n\nRequires ``gocept.httpserverlayer[zopeappwsgi]``\n\nIf your ZTK application uses ``zope.app.wsgi.testlayer`` (which is the\nrecommended test setup for Grok, for example), you can use\n``gocept.httpserverlayer.zopeappwsgi.Layer`` to create a WSGI app that\nintegrates ZODB isolation, and ``gocept.httpserverlayer.wsgi.Layer`` to provide\nthe actual HTTP server. No special TestCase is required, ``unittest.TestCase``\nis enough.\n\nThe ``zopeappwsgi.Layer`` expects to find the current ZODB in the plone.testing\nresource ``zodbDB`` (which is used by ``plone.testing.zodb.EMPTY_ZODB``), or\nyou can inherit and override ``get_current_zodb``. Here's an example setup for\nGrok (which uses ``zope.app.appsetup.testlayer.ZODBLayer``)::\n\n import gocept.httpserverlayer.wsgi\n import gocept.httpserverlayer.zopeappwsgi\n import unittest\n import zope.app.appsetup.testlayer\n\n ZODB_LAYER = zope.app.appsetup.testlayer.ZODBLayer(\n gocept.httpserverlayer.zopeappwsgi, 'testing.zcml')\n\n class WSGILayer(gocept.httpserverlayer.zopeappwsgi.Layer):\n\n defaultBases = (ZODB_LAYER,)\n\n def get_current_zodb(self):\n return ZODB_LAYER.db\n\n WSGI_LAYER = WSGILayer()\n\n HTTP_LAYER = gocept.httpserverlayer.wsgi.Layer(\n name='HTTPLayer', bases=(WSGI_LAYER,))\n\n class GrokExample(unittest.TestCase):\n\n layer = HTTP_LAYER\n\n def test(self):\n r = urllib.urlopen('http://%s/' % self.layer['http_address'])\n self.assertIn('Hello world', r.read())\n\n\nZope via WSGI\n=============\n\nIf your Zope setup supports WSGI, you can use the WSGI integration instead of a\nspecialised Zope integration to run your tests.\n\nYou might see an exception complaining about the ``Connection`` header.\nTo fix this issue you can use an additional middleware around your WSGI\napplication: ``gocept.httpserverlayer.wsgi.FixupMiddleware``.\n\n\nZope / Plone via `plone.testing.zope`\n=====================================\n\nRequires ``gocept.httpserverlayer[plonetestingzope]``.\n\ngocept.httpserverlayer provides a ``plone.testing.Layer`` at\n``gocept.httpserverlayer.plonetestingzope.HTTP_SERVER`` that you can mix and match\nwith your base layers. No special TestCase is required, ``unittest.TestCase``\nis enough.\n\n.. caution:: This setup also uses the WSGI flavour instead of ZServer which\n was supported in `gocept.httpserverlayer < 3`.\n\nFor a plain Zope application this might look like this (uses\n``plone.testing[zope]``)::\n\n import gocept.httpserverlayer.plonetestingzope\n import plone.testing\n import plone.testing.zope\n\n class Layer(plone.testing.Layer):\n\n defaultBases = (plone.testing.zope.STARTUP,)\n\n def setUp(self):\n zope.configuration.xmlconfig.file(\n 'testing.zcml', package=mypackage,\n context=self['configurationContext'])\n\n ZOPE_LAYER = Layer()\n\n HTTP_LAYER = plone.testing.Layer(\n name='HTTPLayer',\n bases=(ZOPE_LAYER,\n gocept.httpserverlayer.plonetestingzope.HTTP_SERVER))\n\n\n=================================\nDeveloping gocept.httpserverlayer\n=================================\n\n:Author:\n `gocept `_ \n\n:PyPI page:\n https://pypi.org/project/gocept.httpserverlayer/\n\n:Issue tracker:\n https://bitbucket.org/gocept/gocept.httpserverlayer/issues\n\n:Source code:\n https://bitbucket.org/gocept/gocept.httpserverlayer/\n\n:Current change log:\n https://bitbucket.org/gocept/gocept.httpserverlayer/raw/tip/CHANGES.txt\n\n:Run tests:\n Use tox, for info see: https://pypi.org/project/tox/\n\n\n=====================================\nChange log for gocept.httpserverlayer\n=====================================\n\n\n3.2 (2019-04-03)\n================\n\n- Fix usage of pending deprecated ``Thread.isAlive()``.\n\n\n3.1 (2019-01-15)\n================\n\n- Create a wheel of the package.\n\n- Add support for Python 3.7.\n\n\n3.0 (2018-06-29)\n================\n\n- Add support for Python 3.6.\n\n- Drop support for Zope 2.x\n\n- Rename the setup.py extra `plonetestingz2` into `plonetestingzope`.\n\n- Rename the module `.plonetestingz2` into `.plonetestingzope`.\n\n\n2.2 (2016-12-02)\n================\n\n- Ensure compatibility with `setuptools >= 30.0`.\n\n\n2.1 (2016-12-01)\n================\n\n- Support the upcoming Zope 4 through extras_require [plonetestingz4].\n\n- Pin `transaction < 2.0` and `ZODB < 5.0` until `Zope2` is compatible with\n these releases. (See https://github.com/zopefoundation/Zope/issues/79)\n\n\n2.0 (2016-04-12)\n================\n\n- Drop support for:\n\n - ``zope.app.testing`` (extras_require: [zopeapptesting])\n\n - ``Testing.ZopeTestCase`` (extras_require: [zope2testcase])\n\n - ``plone.app.testing`` (extras_require: [test_plonetestingz2])\n\n - ``Products.PloneTestCase`` (extras_require: [plonetestcase])\n\n- Drop support for Python 2.6.\n\n- Use ``tox`` as testrunner.\n\n- Remove ``zc.buildout`` infrastructure.\n\n\n1.5.3 (2015-01-09)\n==================\n\n- Don't overwrite ``self.port`` when it was 0.\n\n\n1.5.2 (2014-05-22)\n==================\n\n- Silence \"error 32: Broken pipe\" errors in ``custom.Layer``, too.\n\n\n1.5.1 (2014-02-10)\n==================\n\n- Silence \"error 32: Broken pipe\" errors in ``wsgi.Layer``, they just\n mean the client closed the connection prematurely, which is as\n harmless as it is normal.\n\n\n1.5.0 (2013-11-07)\n==================\n\n- Make it possible to dictate the hostname for the httpserver via environment\n variable ``GOCEPT_HTTP_APP_HOST``. You will need this if you run your tests\n in a selenium grid on different machines.\n\n\n1.4.1 (2013-10-01)\n==================\n\n- 1.4.0 was a brown-bag, let's try again.\n\n\n1.4.0 (2013-10-01)\n==================\n\n- Make HTTP server and thread objects used by layers available as a resource.\n\n\n1.3.0 (2013-07-18)\n==================\n\n- Replace dependency on ``distribute`` with ``setuptools``, since the projects have merged.\n\n\n1.2.1 (2013-02-07)\n==================\n\n- Fix custom layer test tear down.\n\n\n1.2 (2013-02-06)\n================\n\n- Fixed tests run on MacOS.\n\n- Use the `server_address` instead of `server_name` of `HTTPServer` to be\n compatible with MacOS.\n\n- Dropped compatability with Zope < 2.12.\n\n- Removed customized `HTTPServer`, the `BaseHTTPServer.HTTPServer` does\n everything we need.\n\n\n1.1 (2013-02-03)\n================\n\n- Add ``custom.Layer`` that uses a BaseHTTPServer with a custom RequestHandler,\n and ``static.Layer`` that server the contents of a directory.\n\n- Dropped compatability with Python < 2.6.\n\n\n1.0.1 (2012-12-21)\n==================\n\n- Avoid the property.setter spelling in the wsgi layer's code for Python 2.5\n compatibility.\n\n- Conditionally require wsgiref to make the wsgi layer work with Python 2.4.\n\n- Fixed an import in the plonetestcase layer's tests.\n\n\n1.0 (2012-12-19)\n================\n\ninitial release (extracted from gocept.selenium-1.0)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/gocept/gocept.httpserverlayer/", "keywords": "HTTP server Plone testing zope.testrunner layer Zope", "license": "ZPL 2.1", "maintainer": "", "maintainer_email": "", "name": "gocept.httpserverlayer", "package_url": "https://pypi.org/project/gocept.httpserverlayer/", "platform": "", "project_url": "https://pypi.org/project/gocept.httpserverlayer/", "project_urls": { "Homepage": "https://bitbucket.org/gocept/gocept.httpserverlayer/" }, "release_url": "https://pypi.org/project/gocept.httpserverlayer/3.2/", "requires_dist": [ "plone.testing", "setuptools", "Zope (>=4.0b1); extra == 'plonetestingzope'", "plone.testing[zope] (>=7.0dev0); extra == 'plonetestingzope'", "shoobx.junitxml; extra == 'test'", "zope.app.wsgi (>=4); extra == 'zopeappwsgi'" ], "requires_python": "", "summary": "HTTP server integration for testing", "version": "3.2" }, "last_serial": 5086887, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "8c334d7d629fd83f4b8870b6d88745e1", "sha256": "dd295f24934725143ba25685159ca209de9b400a042722d2c634a295c3f73b0b" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.0.zip", "has_sig": false, "md5_digest": "8c334d7d629fd83f4b8870b6d88745e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49619, "upload_time": "2012-12-19T16:41:46", "url": "https://files.pythonhosted.org/packages/bf/83/510a42b0f87e50e48ec48dc13ac5315577bcec8487920ba71efbba4fa59b/gocept.httpserverlayer-1.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2e7b4e56ca752a2c4e1314a0f95c7c2e", "sha256": "8dcfa8f5150cb6b2dc5889f65a341c42850eb65e94f1541165107b02b9012808" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.0.1.tar.gz", "has_sig": true, "md5_digest": "2e7b4e56ca752a2c4e1314a0f95c7c2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24027, "upload_time": "2012-12-21T09:50:55", "url": "https://files.pythonhosted.org/packages/4d/58/377766916e7b9133c0f959f8bea14f5db6897cc5b15e5799093f75ef2089/gocept.httpserverlayer-1.0.1.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "bfd1703b0d2cdaf8d17cabfc23ba501d", "sha256": "0530ad4ed23795ff76bbfabf0c271aeaf22783b7039fa51d0013c33ff097f871" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.1.zip", "has_sig": false, "md5_digest": "bfd1703b0d2cdaf8d17cabfc23ba501d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55509, "upload_time": "2013-02-03T17:47:13", "url": "https://files.pythonhosted.org/packages/7c/f5/e7024c3b3dd080a69f035b24f6ce10a86c63a143b2c7753dc08e28e1f120/gocept.httpserverlayer-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "eda8b5cd7d0f6e5601c450e764c21445", "sha256": "1f195ac2531ec117fad8ffaa2ce633121ca726a56ed1646c8111a89155c6bab4" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.2.zip", "has_sig": false, "md5_digest": "eda8b5cd7d0f6e5601c450e764c21445", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55075, "upload_time": "2013-02-06T12:14:21", "url": "https://files.pythonhosted.org/packages/1e/ba/19cd4ff83508564563005ec9b6e38080963a399159b83f311faaf4f949cd/gocept.httpserverlayer-1.2.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "5180a4f9e9d985a3ac8449aa8e7ebb4f", "sha256": "271711b52e0b1e85714d28a2b89bc830c1e40ceb2c4d9cecb895c7bae3f36264" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.2.1.zip", "has_sig": false, "md5_digest": "5180a4f9e9d985a3ac8449aa8e7ebb4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55550, "upload_time": "2013-02-07T17:52:39", "url": "https://files.pythonhosted.org/packages/2b/a6/23197c9577c22f56b0b38fc9544d1994a4aac32f45b291022d1e2892d1e6/gocept.httpserverlayer-1.2.1.zip" } ], "1.2.dev0": [ { "comment_text": "", "digests": { "md5": "119d3bd2170b394323b42c7a17752089", "sha256": "8f3066f8e32e8ae3def1f23a73d6f0ea9b372a93bcd6c369ad905c5deb728b35" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.2.dev0.tar.gz", "has_sig": false, "md5_digest": "119d3bd2170b394323b42c7a17752089", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27806, "upload_time": "2013-02-06T12:13:46", "url": "https://files.pythonhosted.org/packages/89/c0/de867b6890aea5db74491bae69ec99772d4a3b57ab6f86f19635cde3754b/gocept.httpserverlayer-1.2.dev0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "8ade6afe6f329f573e4259995a21e984", "sha256": "b571309a1b42d9631d39d8448c352568dbd3060e8e4deb2bfb4455453b2400ba" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.3.0.zip", "has_sig": false, "md5_digest": "8ade6afe6f329f573e4259995a21e984", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58063, "upload_time": "2013-07-18T12:33:14", "url": "https://files.pythonhosted.org/packages/aa/5f/93b10c12c70d02094fff696bb64bccd1f9b0df25051d9aa83c8f1a202f72/gocept.httpserverlayer-1.3.0.zip" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "b785bfb73560ade303fe225cab221ec5", "sha256": "be0cea335c38fad388e9a63d16549e788f175727061f2f7a1dc1c79fc2cfb418" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.4.0.zip", "has_sig": false, "md5_digest": "b785bfb73560ade303fe225cab221ec5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58350, "upload_time": "2013-10-01T08:14:20", "url": "https://files.pythonhosted.org/packages/a7/d6/bff4d957b4fb914edcd51ee0605247c5f5ad7bcc8863f7268dfa1eb779e8/gocept.httpserverlayer-1.4.0.zip" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "c1c482e16bc7e7821f3eb2b48d8e814a", "sha256": "0d4ceea05ed68ffcfe8348dde9b485184de110a585f0f01461ddfeb860fcd918" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.4.1.zip", "has_sig": false, "md5_digest": "c1c482e16bc7e7821f3eb2b48d8e814a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58461, "upload_time": "2013-10-01T08:30:16", "url": "https://files.pythonhosted.org/packages/48/24/ca46917c7ebd49e8eae1f6e4e1dfa7bd168e37eeb0f965769cc858e2837e/gocept.httpserverlayer-1.4.1.zip" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "67e1a45e3eb0ffcb9d3a32a368aec9d3", "sha256": "3238de848be9357abab43665adaa92b29d413de8b5f22f3a9195f0f32da8cb2a" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.5.0.zip", "has_sig": false, "md5_digest": "67e1a45e3eb0ffcb9d3a32a368aec9d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58862, "upload_time": "2013-11-07T08:04:56", "url": "https://files.pythonhosted.org/packages/f7/f5/ec879ad5b9b612fe6ec2a8a32294ed17b1bdb0cdde8b164279e7c5c9c993/gocept.httpserverlayer-1.5.0.zip" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "9ab4f5b1e2bb261dcf4400efd77830e8", "sha256": "0fde3a335e4f2f0699b51c3f75db176948bea0f9477725f6386e10778209e9e8" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.5.1.tar.gz", "has_sig": false, "md5_digest": "9ab4f5b1e2bb261dcf4400efd77830e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31796, "upload_time": "2014-02-10T13:02:35", "url": "https://files.pythonhosted.org/packages/28/6f/ff576a611a3638aa916b83db620c756e6f7efad216743f08fd592e294eb5/gocept.httpserverlayer-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "979fd718f08faa751fc414b8b4379a9b", "sha256": "c8bdf610c1461712cfef641a0682f7b2b7f1e963b3765932e98bfc30415d0ce2" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.5.2.zip", "has_sig": false, "md5_digest": "979fd718f08faa751fc414b8b4379a9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59520, "upload_time": "2014-05-22T11:56:26", "url": "https://files.pythonhosted.org/packages/1e/a6/4d805ebaf530c702a917d5135647eae4f0b1b86cecfb117b934eab42bf13/gocept.httpserverlayer-1.5.2.zip" } ], "1.5.3": [ { "comment_text": "", "digests": { "md5": "fb5054f8a03941fc68098ec0ba1259e6", "sha256": "11a83452304b77451bfc225f0bae52a51453ea4a005158869f14839240b6f729" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.5.3.zip", "has_sig": false, "md5_digest": "fb5054f8a03941fc68098ec0ba1259e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59667, "upload_time": "2015-01-09T14:07:48", "url": "https://files.pythonhosted.org/packages/26/ce/c26387cb7009d2d940fc9b923b4363cfe98784dce869565bf343f5d8fbbd/gocept.httpserverlayer-1.5.3.zip" } ], "1.5.4": [ { "comment_text": "", "digests": { "md5": "1f18ea5dc05e4d7f67599bf7de598e7e", "sha256": "428047f2b93a6dd2aba478dd9d2d8a435188dc3d20993684e77dec159890e6ca" }, "downloads": -1, "filename": "gocept.httpserverlayer-1.5.4.tar.gz", "has_sig": false, "md5_digest": "1f18ea5dc05e4d7f67599bf7de598e7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32046, "upload_time": "2016-04-11T12:48:05", "url": "https://files.pythonhosted.org/packages/3e/c2/66f6600ff465f614ee28da214f6d7355238553c7bf3437938e778668b36e/gocept.httpserverlayer-1.5.4.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "1ae5f1d178a19435008eda26dd89da7b", "sha256": "89f5454d703730e873c25a325ecf480000913ff8b6ea51f549530f3aade3ba10" }, "downloads": -1, "filename": "gocept.httpserverlayer-2.0.tar.gz", "has_sig": false, "md5_digest": "1ae5f1d178a19435008eda26dd89da7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17529, "upload_time": "2016-04-12T12:48:50", "url": "https://files.pythonhosted.org/packages/5a/3c/183eb400ba203442209a09439cfd15f0d686213c3557d864d6164730459e/gocept.httpserverlayer-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "827cdca24814061b808d65e0b0a84154", "sha256": "1090c834db8afc319229e2706170b0831178d5d5f0500571d6cd6ebce600040c" }, "downloads": -1, "filename": "gocept.httpserverlayer-2.1.tar.gz", "has_sig": false, "md5_digest": "827cdca24814061b808d65e0b0a84154", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17237, "upload_time": "2016-12-01T10:51:02", "url": "https://files.pythonhosted.org/packages/5b/97/934d6c94c622e6a6e439dc5f015b88550505bec6fa79198a6036e63d8204/gocept.httpserverlayer-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "f6633696675a315d9df6a2ccdaa9a95b", "sha256": "cb77aa75339c2a6fc2eeaa214c8b447361079d373117f8ff1f4bd66bf3a58666" }, "downloads": -1, "filename": "gocept.httpserverlayer-2.2.tar.gz", "has_sig": false, "md5_digest": "f6633696675a315d9df6a2ccdaa9a95b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14948, "upload_time": "2016-12-02T13:33:04", "url": "https://files.pythonhosted.org/packages/67/42/37644c1dc1f1ac4c10333cc943b59eee8856229487bbf455c3cc31934b87/gocept.httpserverlayer-2.2.tar.gz" } ], "3.0": [ { "comment_text": "", "digests": { "md5": "bbbf1f1983449fe01e6db6def7b18954", "sha256": "8d4a52e8fe41df554b9bca259e86ccabc9d284b3248af13fc395338ab3b79a12" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.0.tar.gz", "has_sig": false, "md5_digest": "bbbf1f1983449fe01e6db6def7b18954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16148, "upload_time": "2018-06-29T05:53:27", "url": "https://files.pythonhosted.org/packages/57/5e/c99974e7f9ab669455232c653337a22095c5face35cd925eede16a514e67/gocept.httpserverlayer-3.0.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "808c0a7eba5df568d63ca7a4b01b163f", "sha256": "ffaeb9408f92481fb2b18fa759932b6c627fd20e6ef11813d05e452e1624e576" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "808c0a7eba5df568d63ca7a4b01b163f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23544, "upload_time": "2019-01-15T10:04:16", "url": "https://files.pythonhosted.org/packages/02/9e/477127b460732769a8b132ca1bf6b1ae3b527969a0a0cdb23f76d424f010/gocept.httpserverlayer-3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed590bb4f082a734bac37d91ccee6698", "sha256": "11c0adfed120510409a0ec68dd957eb0a7be40f259f2d8b71a33c3adea328321" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.1.tar.gz", "has_sig": false, "md5_digest": "ed590bb4f082a734bac37d91ccee6698", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17339, "upload_time": "2019-01-15T10:04:18", "url": "https://files.pythonhosted.org/packages/bd/e4/aa997616b954de3f87505ccdda9cabdc36664a6216aa55ac89a63dd52114/gocept.httpserverlayer-3.1.tar.gz" } ], "3.2": [ { "comment_text": "", "digests": { "md5": "53856ed1cc4e5e4a7b7dcb47ee2c4de3", "sha256": "2956005a815765a2e9a77040a32846460a322ccf4cc80a95942162a6cf76e0d7" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "53856ed1cc4e5e4a7b7dcb47ee2c4de3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23610, "upload_time": "2019-04-03T08:36:23", "url": "https://files.pythonhosted.org/packages/a6/1f/658ec2c0ef9ac48dbf6d9ce96279eceeb370ecd798cf83e1b1c342730f49/gocept.httpserverlayer-3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcb1f9da2aa30efb61dd6e8f49799381", "sha256": "f6af2d553828c5d1665c2cc17a54bd897e44f01543f1c30adfcdeeed2481873f" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.2.tar.gz", "has_sig": false, "md5_digest": "dcb1f9da2aa30efb61dd6e8f49799381", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15938, "upload_time": "2019-04-03T08:36:25", "url": "https://files.pythonhosted.org/packages/14/5a/c237f55740b92c0bf7d0eb7b2efd1e6711daab1ae6098181b6697987c481/gocept.httpserverlayer-3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "53856ed1cc4e5e4a7b7dcb47ee2c4de3", "sha256": "2956005a815765a2e9a77040a32846460a322ccf4cc80a95942162a6cf76e0d7" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "53856ed1cc4e5e4a7b7dcb47ee2c4de3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23610, "upload_time": "2019-04-03T08:36:23", "url": "https://files.pythonhosted.org/packages/a6/1f/658ec2c0ef9ac48dbf6d9ce96279eceeb370ecd798cf83e1b1c342730f49/gocept.httpserverlayer-3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcb1f9da2aa30efb61dd6e8f49799381", "sha256": "f6af2d553828c5d1665c2cc17a54bd897e44f01543f1c30adfcdeeed2481873f" }, "downloads": -1, "filename": "gocept.httpserverlayer-3.2.tar.gz", "has_sig": false, "md5_digest": "dcb1f9da2aa30efb61dd6e8f49799381", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15938, "upload_time": "2019-04-03T08:36:25", "url": "https://files.pythonhosted.org/packages/14/5a/c237f55740b92c0bf7d0eb7b2efd1e6711daab1ae6098181b6697987c481/gocept.httpserverlayer-3.2.tar.gz" } ] }