{ "info": { "author": "Jim Fulton", "author_email": "jim@zope.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "Network Gateway Interface\n-------------------------\n\nThe Network Gateway Interface provides:\n\n- the ability to test application networking code without use of\n sockets, threads or subprocesses\n\n- clean separation of application code and low-level networking code\n\n- a fairly simple inheritence free set of networking APIs\n\n- an event-based framework that makes it easy to handle many\n simultaneous connections while still supporting an imperative\n programming style.\n\nTo learn more, see http://packages.python.org/zc.ngi/\n\nChangelog\n=========\n\n\n2.1.0 (2017-08-31)\n------------------\n\nNew features:\n\n- support IPv6\n\n\n2.0.1 (2012-04-06)\n------------------\n\nBugs Fixed\n\n- Sending data faster than a socket could transmit it wasn't handled\n correctly.\n\n2.0.0 (2011-12-10)\n------------------\n\nBugs Fixed\n\n- zc.ngi.async listeners didn't provide the real address when binding\n to port 0.\n\n2.0.0a6 (2011-05-26)\n--------------------\n\nBugs Fixed\n\n- If application code made many small writes, each write was sent\n individually, which could trigger Nagle's algorithm.\n\n2.0.0a5 (2010-08-19)\n--------------------\n\nNew Features:\n\n- Connection objects have a new peer_address attribute, which is\n equivilent to calling ``getpeername()`` on sockets.\n\nBugs Fixed:\n\n- Servers using unix-domain sockets didn't clean up socket files.\n\n- When testing listeners were closed, handle_close, rather than close,\n was called on server connections.\n\n- The zc.ngi.async connections' ``write`` and ``writelines`` methods\n didn't raise errors when called on closed connections.\n\n- The built-in connection adapters and handy adapter base class\n didn't implement __nonzero__.\n\n2.0.0a4 (2010-07-27)\n--------------------\n\nBugs Fixed:\n\n- When using zc.ngi.testing and a server sent input and closed a\n connection before set_handler was called on the client, the input\n sent by the server was lost.\n\n- By default, calling close on a connection could caause already\n written data not to be sent. Now, don't close connections until\n data passed to write or writelines as, at least, been passed to the\n underlying IO system (e.g. socket.send).\n\n (This means the undocumented practive of sending zc.ngi.END_OF_DATA\n to write is now deprecated.)\n\n2.0.0a3 (2010-07-22)\n--------------------\n\nBugs Fixed:\n\n- Fixed a packaging bug.\n\n2.0.0a2 (2010-07-22)\n--------------------\n\nNew Features:\n\n- There's a new experimental zc.ngi.async.Implementation.listener\n option to run each client (server connection) in it's own thread.\n\n (It's not documented. It's experimental, but there is a doctest.)\n\nBugs Fixed:\n\n- There was a bug in handling connecting to testing servers that\n caused printing handlers to be used when they shouldn't have been.\n\n\n2.0.0a1 (2010-07-08)\n--------------------\n\nNew Features:\n\n- New improved documentation\n\n- Support for writing request handlers in an imperative style using\n generators.\n\n- Cleaner testing interfaces\n\n- Refactored ``zc.ngi.async`` thread management to make the blocking\n APIs unnecessary. ``zc.ngi.async.blocking`` is now deprecated.\n\n- Added support for running multiple ``async`` implementations in\n separate threads. This is useful in applications with fewer network\n connections and with handlers that tend to perform long-lating\n computations that would be unacceptable with a single select loop.\n\n- Renamed IConnection.setHandler to set_handler.\n\n- Dropped support for Python 2.4.\n\nBugs Fixed:\n\n- The ``Sized`` request adapter's ``writelines`` method was broken.\n\n- There we a number of problems with error handling in the ``async``\n implementation.\n\n1.1.6 (2010-03-01)\n------------------\n\nBug fixed:\n\n- Fixed bad logging of ``listening on ...``. The message was emitted\n before the actual operation was successful. Emits now a warning\n ``unable to listen on...`` if binding to the given address fails.\n\n1.1.5 (2010-01-19)\n------------------\n\nBug fixed:\n\n- Fixed a fatal win32 problem (socket.AF_UNIX usage).\n\n- Removed impropper use of the SO_REUSEADDR socket option on windows.\n\n- The sized adapter performed poorly (because it triggered Nagle's\n algorithm).\n\n\n1.1.4 (2009-10-28)\n------------------\n\nBug fixed:\n\n- Spurious warnings sometimes occurred due to a race condition in\n setting up servers.\n- Added missing \"writelines\" method to zc.ngi.adapters.Lines.\n\n1.1.3 (2009-07-30)\n------------------\n\nBug fixed:\n\n- zc.ngi.async bind failures weren't handled properly, causing lots of\n annoying log messages to get spewed, which tesnded to fill up log\n files.\n\n1.1.2 (2009-07-02)\n------------------\n\nBugs fixed:\n\n- The zc.ngi.async thread wasn't named. All threads should be named.\n\n1.1.1 (2009-06-29)\n------------------\n\nBugs fixed:\n\n- zc.ngi.blocking didn't properly handle connection failures.\n\n1.1.0 (2009-05-26)\n------------------\n\nBugs fixed:\n\n- Blocking input and output files didn't properly synchronize closing.\n\n- The testing implementation made muiltiple simultaneous calls to\n handler methods in violation of the promise made in interfaces.py.\n\n- Async TCP servers used too low a listen depth, causing performance\n issues and spurious test failures.\n\nNew features:\n\n- Added UDP support.\n\n- Implementation responsibilities were clarified through an\n IImplementation interface. The \"connector\" attribute of the testing\n and async implementations was renamed to \"connect\". The old name\n still works.\n\n- Implementations are now required to log handler errors and to close\n connections in response to connection-handler errors. (Otherwise,\n handlers, and especially handler adapters, would have to do this.)\n\n1.0.1 (2007-05-30)\n------------------\n\nBugs fixed:\n\n- Server startups sometimes failed with an error like::\n\n warning: unhandled read event\n warning: unhandled write event\n warning: unhandled read event\n warning: unhandled write event\n ------\n 2007-05-30T22:22:43 ERROR zc.ngi.async.server listener error\n Traceback (most recent call last):\n File \"asyncore.py\", line 69, in read\n obj.handle_read_event()\n File \"asyncore.py\", line 385, in handle_read_event\n self.handle_accept()\n File \"/zc/ngi/async.py\", line 325, in handle_accept\n sock, addr = self.accept()\n TypeError: unpack non-sequence", "description_content_type": null, "docs_url": "https://pythonhosted.org/zc.ngi/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://packages.python.org/zc.ngi", "keywords": "networking,testing", "license": "ZPL 2.1", "maintainer": "", "maintainer_email": "", "name": "zc.ngi", "package_url": "https://pypi.org/project/zc.ngi/", "platform": "", "project_url": "https://pypi.org/project/zc.ngi/", "project_urls": { "Homepage": "http://packages.python.org/zc.ngi" }, "release_url": "https://pypi.org/project/zc.ngi/2.1.0/", "requires_dist": null, "requires_python": "", "summary": "Network Gateway Interface", "version": "2.1.0" }, "last_serial": 3137183, "releases": { "0": [ { "comment_text": "", "digests": { "md5": "08be3c655277ef27166a69086e23c894", "sha256": "91a1bc5b852398b6ee43a55c8e1af8ab4b41d450fa7d08a3880cab06712f8151" }, "downloads": -1, "filename": "zc.ngi-0.tar.gz", "has_sig": false, "md5_digest": "08be3c655277ef27166a69086e23c894", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49777, "upload_time": "2010-08-19T19:43:59", "url": "https://files.pythonhosted.org/packages/5d/ec/0feec5887751d83074f4861709cd0f3719c7ba245244bc9b443b71815989/zc.ngi-0.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "9c624fe72edafc867f44dc72f4a4d825", "sha256": "4c99b10382996de5ad5080695808ab37208861c3123adaa86e6b0c82df7c7463" }, "downloads": -1, "filename": "zc.ngi-1.0.tar.gz", "has_sig": false, "md5_digest": "9c624fe72edafc867f44dc72f4a4d825", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34467, "upload_time": "2007-02-21T21:33:24", "url": "https://files.pythonhosted.org/packages/04/18/3ddb0ee83802e429986b02933a548eb9de81e65d349d2fc07f15c3e78572/zc.ngi-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f599e40bf6d0c89f3b15dc1f2e9d218b", "sha256": "6f2e02a19b2e40071e281a15d7d7f483358c93580689104fdecbc22f80fc7815" }, "downloads": -1, "filename": "zc.ngi-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f599e40bf6d0c89f3b15dc1f2e9d218b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34987, "upload_time": "2007-05-30T21:08:40", "url": "https://files.pythonhosted.org/packages/a8/3e/e007978d6c39a5a91055432033aeba78c86e169c9b7c252b22027ad009a9/zc.ngi-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "2012110a469ebf315102f6b82c31babc", "sha256": "a197df6acaca2579596db3d8bcab1573af0241a281bed8d2a6f591323279365d" }, "downloads": -1, "filename": "zc.ngi-1.1.0.tar.gz", "has_sig": false, "md5_digest": "2012110a469ebf315102f6b82c31babc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40096, "upload_time": "2009-05-26T17:27:46", "url": "https://files.pythonhosted.org/packages/cf/ce/df3933cc6a5339b5e700b2d1008e316c69b2c0c3caa33bef9dd88a479f27/zc.ngi-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "0cc3d7eea85b47d973edb189451a6ef5", "sha256": "c601cac89b3d8a157e12ccef480cf0a3bc35e9d65d162eb793edb776e6cdc3fb" }, "downloads": -1, "filename": "zc.ngi-1.1.1.tar.gz", "has_sig": false, "md5_digest": "0cc3d7eea85b47d973edb189451a6ef5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40415, "upload_time": "2009-06-29T19:18:15", "url": "https://files.pythonhosted.org/packages/b2/e5/eeb9f1b15f7d80022e866585fa4d03a0c68b7a239f083282a7168bfcda9b/zc.ngi-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "bf415d91b64c508d4133f7393b5bcf15", "sha256": "d19e20c8a4753e88295937cc35650279e596983d895ade2962dc9cd9712a870a" }, "downloads": -1, "filename": "zc.ngi-1.1.2.tar.gz", "has_sig": false, "md5_digest": "bf415d91b64c508d4133f7393b5bcf15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40492, "upload_time": "2009-07-02T22:24:56", "url": "https://files.pythonhosted.org/packages/2c/81/cbabd1def99f96f24f708823da7beae004c5a863de1d858f05ed0359be7d/zc.ngi-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "75d20dc5b8b8c96608e834b0d060fd2a", "sha256": "def0d8c64a3e01a6f99a30ec2aac05344c1707f997fc9814617d861495c64696" }, "downloads": -1, "filename": "zc.ngi-1.1.3.tar.gz", "has_sig": false, "md5_digest": "75d20dc5b8b8c96608e834b0d060fd2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40877, "upload_time": "2009-07-30T22:18:18", "url": "https://files.pythonhosted.org/packages/a2/17/9cff143ae76b09d61a1a45a17888d2afd62cd202539ea128afe599c395f4/zc.ngi-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "951cfb43a1bcf2aa5d3b6f011048ed37", "sha256": "4521830e9b0700106d51bd5c816c8d3205f5deab3fa6b3f95cdeb928b7685c88" }, "downloads": -1, "filename": "zc.ngi-1.1.4.tar.gz", "has_sig": false, "md5_digest": "951cfb43a1bcf2aa5d3b6f011048ed37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41735, "upload_time": "2009-10-28T15:37:36", "url": "https://files.pythonhosted.org/packages/5f/c9/b414293fa0795a6cc6fb39ed55a87fd7b259b6ac4843f13a8334a350ab03/zc.ngi-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "572bf5bb655690ba784d1efabaef67ee", "sha256": "31511521faeec958e53a774eaa6d99063ce556afb3593f6f0ff0ab6fccabcd7f" }, "downloads": -1, "filename": "zc.ngi-1.1.5.tar.gz", "has_sig": false, "md5_digest": "572bf5bb655690ba784d1efabaef67ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41113, "upload_time": "2010-01-20T00:42:49", "url": "https://files.pythonhosted.org/packages/34/0b/74fa687bc4c0c480b251a52b8f89767a21e057f00ec86eb889f6906aaf96/zc.ngi-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "7e894a6ad39aa673906ed4c96e743602", "sha256": "cb55a99d66510b6e74274dd0ed2fa19190c1b0982a0d18de79c54bf326610529" }, "downloads": -1, "filename": "zc.ngi-1.1.6.tar.gz", "has_sig": false, "md5_digest": "7e894a6ad39aa673906ed4c96e743602", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42982, "upload_time": "2010-03-01T12:43:56", "url": "https://files.pythonhosted.org/packages/48/c5/dff56fcdf1bf899ce84c098832861ef81b8ee2d0e95c70854b30c8613cd0/zc.ngi-1.1.6.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "cb4402282c4bc7e3ec0b48ddc0672c97", "sha256": "df5277643e9f6becf2d3dcdf5684478c02d5279220d4bbd1f5ba075e9d30a7c5" }, "downloads": -1, "filename": "zc.ngi-2.0.0.tar.gz", "has_sig": false, "md5_digest": "cb4402282c4bc7e3ec0b48ddc0672c97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49865, "upload_time": "2011-12-10T18:21:30", "url": "https://files.pythonhosted.org/packages/49/81/6f5c104aee8551bad6657f49073c6a58f41e0670c89691b1e9be9c01073e/zc.ngi-2.0.0.tar.gz" } ], "2.0.0a1": [ { "comment_text": "", "digests": { "md5": "76d37d199114874af9c819b2e26a75f0", "sha256": "3d7161504b62a0983f6cad2eb3b32044fc19f520a337d44c824027b88c74e33e" }, "downloads": -1, "filename": "zc.ngi-2.0.0a1.tar.gz", "has_sig": false, "md5_digest": "76d37d199114874af9c819b2e26a75f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46569, "upload_time": "2010-07-08T16:01:03", "url": "https://files.pythonhosted.org/packages/07/69/46c2d0c4154e7b9d7f6252bd0b4b2293b80b2091801ea02cf8e28f5460b9/zc.ngi-2.0.0a1.tar.gz" } ], "2.0.0a2": [ { "comment_text": "", "digests": { "md5": "54c72cdb74af67bea28c57178d3ad7c6", "sha256": "452f0eae43d6e162509d6a669e2afdf62d4c05543201b46d88346a1eeb14ca20" }, "downloads": -1, "filename": "zc.ngi-2.0.0a2.tar.gz", "has_sig": false, "md5_digest": "54c72cdb74af67bea28c57178d3ad7c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48355, "upload_time": "2010-07-22T18:59:19", "url": "https://files.pythonhosted.org/packages/b3/18/d4c3934070427c3715bd9bd5e601c26c5c79fee6ab0986077e6dd2efc79e/zc.ngi-2.0.0a2.tar.gz" } ], "2.0.0a3": [ { "comment_text": "", "digests": { "md5": "ee02402af0fd4242e9ed53389420b6f9", "sha256": "f43f1962aad018bdf7ed97130c9a50737a81aa00c89c62d1ac508298ec5c446d" }, "downloads": -1, "filename": "zc.ngi-2.0.0a3.tar.gz", "has_sig": false, "md5_digest": "ee02402af0fd4242e9ed53389420b6f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48136, "upload_time": "2010-07-22T20:00:10", "url": "https://files.pythonhosted.org/packages/49/a3/0941746fde08c12409f3d2a51bdb2498b666c79871b976b902b17899e5c5/zc.ngi-2.0.0a3.tar.gz" } ], "2.0.0a4": [ { "comment_text": "", "digests": { "md5": "88465873a63b092eaa2bf183be5ca4b6", "sha256": "f6ec05870a6730061958ccb8ea44ace67b415474ab45187c8c3d3362a1237eaa" }, "downloads": -1, "filename": "zc.ngi-2.0.0a4.tar.gz", "has_sig": false, "md5_digest": "88465873a63b092eaa2bf183be5ca4b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48567, "upload_time": "2010-07-27T22:49:49", "url": "https://files.pythonhosted.org/packages/03/40/53bd36f97502dad1c47764b64fb8314ce4384334f477eb5d73845919c287/zc.ngi-2.0.0a4.tar.gz" } ], "2.0.0a5": [ { "comment_text": "", "digests": { "md5": "d9fc4f2bf0bf15b04d700638675eadf3", "sha256": "85408bb0b7222c29bf5ace8dd0e1924847b75790df11929a7b1e00715649b68c" }, "downloads": -1, "filename": "zc.ngi-2.0.0a5.tar.gz", "has_sig": false, "md5_digest": "d9fc4f2bf0bf15b04d700638675eadf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49797, "upload_time": "2010-08-19T19:45:06", "url": "https://files.pythonhosted.org/packages/aa/9c/c0c88aa384778c976dff2c579c4912bbdd630196e203712cc26a48ec35a1/zc.ngi-2.0.0a5.tar.gz" } ], "2.0.0a6": [ { "comment_text": "", "digests": { "md5": "e178947bbaaa34642be1fcda9d0b293d", "sha256": "c77681d2829ec669424e618d8e057c5250d6c926c0d56de9570503c43205f34b" }, "downloads": -1, "filename": "zc.ngi-2.0.0a6.tar.gz", "has_sig": false, "md5_digest": "e178947bbaaa34642be1fcda9d0b293d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49670, "upload_time": "2011-05-26T22:29:25", "url": "https://files.pythonhosted.org/packages/67/b1/f7495b79f1391053361baea5d28a9205ee2de1f2f3f6995c6d852047ac52/zc.ngi-2.0.0a6.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "0e180237ac944bc6982d05b95b61665f", "sha256": "646e5298de6a27263b9a758bf091b4becbd10c6f912ea55e849c46cc5040f68d" }, "downloads": -1, "filename": "zc.ngi-2.0.1.tar.gz", "has_sig": false, "md5_digest": "0e180237ac944bc6982d05b95b61665f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49962, "upload_time": "2012-04-06T19:10:50", "url": "https://files.pythonhosted.org/packages/75/c4/c396518ffc27f1a18fd140454ea0e190771983b045007d3968eced77ae54/zc.ngi-2.0.1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "45c7d5553f7a251829e235672d171653", "sha256": "e732f5016c20a7abd56f8d93aa2c268f01b2d0876b3c3fec754007dddaa661ca" }, "downloads": -1, "filename": "zc.ngi-2.1.0.tar.gz", "has_sig": false, "md5_digest": "45c7d5553f7a251829e235672d171653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55563, "upload_time": "2017-08-31T10:40:03", "url": "https://files.pythonhosted.org/packages/ab/b0/53f20df40afedf5b4470908c4be1abafda5a471f2f383c42c63d7fc8a057/zc.ngi-2.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "45c7d5553f7a251829e235672d171653", "sha256": "e732f5016c20a7abd56f8d93aa2c268f01b2d0876b3c3fec754007dddaa661ca" }, "downloads": -1, "filename": "zc.ngi-2.1.0.tar.gz", "has_sig": false, "md5_digest": "45c7d5553f7a251829e235672d171653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55563, "upload_time": "2017-08-31T10:40:03", "url": "https://files.pythonhosted.org/packages/ab/b0/53f20df40afedf5b4470908c4be1abafda5a471f2f383c42c63d7fc8a057/zc.ngi-2.1.0.tar.gz" } ] }