{ "info": { "author": "Zope Foundation and Contributors", "author_email": "zope-dev@zope.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Zope :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP" ], "description": "This package provides ZMI browser views for Zope security components.\n\nIt used to provide a large part of security functionality for Zope 3, but it was\nfactored out from this package to several little packages to reduce dependencies\nand improve reusability.\n\nThe functionality was splitted into these new packages:\n\n * zope.authentication - the IAuthentication interface and related utilities.\n * zope.principalregistry - the global principal registry and its zcml directives.\n * zope.app.localpermission - the LocalPermission class that implements\n persistent permissions.\n\nThe rest of functionality that were provided by this package is merged into\n``zope.security`` and ``zope.publisher``.\n\nBackward-compatibility imports are provided to ensure that older applications\nwork. See CHANGES.txt for more info.\n\n\nDetailed Documentation\n======================\n\n\n===========================================\nThe Query View for Authentication Utilities\n===========================================\n\nA regular authentication service will not provide the `ISourceQueriables`\ninterface, but it is a queriable itself, since it provides the simple\n`getPrincipals(name)` method:\n\n >>> class Principal:\n ... def __init__(self, id):\n ... self.id = id\n\n >>> class MyAuthUtility:\n ... data = {'jim': Principal(42), 'don': Principal(0),\n ... 'stephan': Principal(1)}\n ...\n ... def getPrincipals(self, name):\n ... return [principal\n ... for id, principal in self.data.items()\n ... if name in id]\n\nNow that we have our queriable, we create the view for it:\n\n >>> from zope.app.security.browser.auth import AuthUtilitySearchView\n >>> from zope.publisher.browser import TestRequest\n >>> request = TestRequest()\n >>> view = AuthUtilitySearchView(MyAuthUtility(), request)\n\nThis allows us to render a search form.\n\n >>> print(view.render('test')) # doctest: +NORMALIZE_WHITESPACE\n

principals.zcml

\n
\n
\n Search String\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\nIf we ask for results:\n\n >>> view.results('test')\n\nWe don't get any, since we did not provide any. But if we give input:\n\n >>> request.form['test.searchstring'] = 'n'\n\nwe still don't get any:\n\n >>> view.results('test')\n\nbecause we did not press the button. So let's press the button:\n\n >>> request.form['test.search'] = 'Search'\n\nso that we now get results (!):\n\n >>> ids = list(view.results('test'))\n >>> ids.sort()\n >>> ids\n [0, 1]\n\n\n====================\nLogin/Logout Snippet\n====================\n\nThe class LoginLogout:\n\n >>> from zope.app.security.browser.auth import LoginLogout\n\nis used as a view to generate an HTML snippet suitable for logging in or\nlogging out based on whether or not the current principal is authenticated.\n\nWhen the current principal is unauthenticated, it provides\nIUnauthenticatedPrincipal:\n\n >>> from zope.authentication.interfaces import IUnauthenticatedPrincipal\n >>> from zope.principalregistry.principalregistry import UnauthenticatedPrincipal\n >>> anonymous = UnauthenticatedPrincipal('anon', '', '')\n >>> IUnauthenticatedPrincipal.providedBy(anonymous)\n True\n\nWhen LoginLogout is used for a request that has an unauthenticated principal,\nit provides the user with a link to 'Login':\n\n >>> from zope.publisher.browser import TestRequest\n >>> request = TestRequest()\n >>> request.setPrincipal(anonymous)\n >>> print(LoginLogout(None, request)())\n [Login]\n\nAttempting to login at this point will fail because nothing has\nauthorized the principal yet:\n\n >>> from zope.app.security.browser.auth import HTTPAuthenticationLogin\n >>> login = HTTPAuthenticationLogin()\n >>> login.request = request\n >>> login.context = None\n >>> login.failed = lambda: 'Login Failed'\n >>> login.login()\n 'Login Failed'\n\nThere is a failsafe that will attempt to ask for HTTP Basic authentication:\n\n >>> from zope.app.security.browser.auth import HTTPBasicAuthenticationLogin\n >>> basic_login = HTTPBasicAuthenticationLogin()\n >>> basic_login.request = request\n >>> basic_login.failed = lambda: 'Basic Login Failed'\n >>> basic_login.login()\n 'Basic Login Failed'\n >>> request._response.getHeader('WWW-Authenticate', literal=True)\n 'basic realm=\"Zope\"'\n >>> request._response.getStatus()\n 401\n\nOf course, an unauthorized principal is confirmed to be logged out:\n\n >>> from zope.app.security.browser.auth import HTTPAuthenticationLogout\n >>> logout = HTTPAuthenticationLogout(None, request)\n >>> logout.logout(nextURL=\"bye.html\")\n 'bye.html'\n >>> logout.confirmation = lambda: 'Good Bye'\n >>> logout.logout()\n 'Good Bye'\n\nLogout, however, behaves differently. Not all authentication protocols (i.e.\ncredentials extractors/challengers) support 'logout'. Furthermore, we don't\nknow how an admin may have configured Zope's authentication. Our solution is\nto rely on the admin to tell us explicitly that the site supports logout.\n\nBy default, the LoginLogout snippet will not provide a logout link for an\nunauthenticated principal. To illustrate, we'll first setup a request with an\nunauthenticated principal:\n\n >>> from zope.security.interfaces import IPrincipal\n >>> from zope.interface import implementer\n >>> @implementer(IPrincipal)\n ... class Bob:\n ... id = 'bob'\n ... title = description = ''\n >>> bob = Bob()\n >>> IUnauthenticatedPrincipal.providedBy(bob)\n False\n >>> request.setPrincipal(bob)\n\nIn this case, the default behavior is to return None for the snippet:\n\n >>> print(LoginLogout(None, request)())\n None\n\nAnd at this time, login will correctly direct us to the next URL, or\nto the confirmation page:\n\n >>> login = HTTPAuthenticationLogin()\n >>> login.request = request\n >>> login.context = None\n >>> login.login(nextURL='good.html')\n >>> login.confirmation = lambda: \"You Passed\"\n >>> login.login()\n 'You Passed'\n\nLikewise for HTTP Basic authentication:\n\n >>> login = HTTPBasicAuthenticationLogin()\n >>> login.request = request\n >>> login.context = None\n >>> login.confirmation = lambda: \"You Passed\"\n >>> login.login()\n 'You Passed'\n\n\nTo show a logout prompt, an admin must register a marker adapter that provides\nthe interface:\n\n >>> from zope.authentication.interfaces import ILogoutSupported\n\nThis flags to LoginLogout that the site supports logout. There is a 'no-op'\nadapter that can be registered for this:\n\n >>> from zope.authentication.logout import LogoutSupported\n >>> from zope.component import provideAdapter\n >>> provideAdapter(LogoutSupported, (None,), ILogoutSupported)\n\nNow when we use LoginLogout with an unauthenticated principal, we get a logout\nprompt:\n\n >>> print(LoginLogout(None, request)())\n [Logout]\n\nAnd we can log this principal out, passing a URL to redirect to:\n\n >>> logout = HTTPAuthenticationLogout(None, request)\n >>> logout.redirect = lambda: 'You have been redirected.'\n >>> logout.logout(nextURL=\"loggedout.html\")\n 'You have been redirected.'\n\n\n=======\nCHANGES\n=======\n\n5.0.0 (2019-07-12)\n------------------\n\n- Add support for Python 3.7.\n\n- Drop support for Python 3.4.\n\n- Drop security declarations for the deprecated ``formatter`` standard library\n module from globalmodules.zcml.\n\n Note that globalmodules.zcml should be avoided. It's better to make\n declarations for only what you actually need to use.\n\n\n4.0.0 (2017-04-27)\n------------------\n\n- Removed use of 'zope.testing.doctestunit' in favor of stdlib's doctest.\n\n- Removed use of ``zope.app.testing`` in favor of ``zope.app.wsgi``.\n\n- Add support for PyPy, Python 3.4, 3.5 and 3.6.\n\n\n3.7.5 (2010-01-08)\n------------------\n\n- Move 'zope.ManageApplication' permission to zope.app.applicationcontrol\n\n- Fix tests using a newer zope.publisher that requires zope.login.\n\n3.7.3 (2009-11-29)\n------------------\n\n- provide a clean zope setup and move zope.app.testing to a test dependency\n\n- removed unused dependencies like ZODB3 etc. from install_requires\n\n3.7.2 (2009-09-10)\n------------------\n\n- Added data attribute to '_protections.zcml' for PersistentList\n and PersistentDict to accomodate UserList and UserDict behavior\n when they are proxied.\n\n3.7.1 (2009-08-15)\n------------------\n\n- Changed globalmodules.zcml to avoid making declarations for\n deprecated standard modules, to avoid deprecation warnings.\n\n Note that globalmodules.zcml should be avoided. It's better to make\n declarations for only what you actually need to use.\n\n3.7.0 (2009-03-14)\n------------------\n\n- All interfaces, as well as some authentication-related helper classes and\n functions (checkPrincipal, PrincipalSource, PrincipalTerms, etc.) were moved\n into the new ``zope.authentication`` package. Backward-compatibility imports\n are provided.\n\n- The \"global principal registry\" along with its zcml directives was moved into\n new \"zope.principalregistry\" package. Backward-compatibility imports are\n provided.\n\n- The IPrincipal -> zope.publisher.interfaces.logginginfo.ILoggingInfo\n adapter was moved to ``zope.publisher``. Backward-compatibility import\n is provided.\n\n- The PermissionsVocabulary and PermissionIdsVocabulary has been moved\n to the ``zope.security`` package. Backward-compatibility imports are\n provided.\n\n- The registration of the \"zope.Public\" permission as well as some other\n common permissions, like \"zope.View\" have been moved to ``zope.security``.\n Its configure.zcml is now included by this package.\n\n- The \"protect\" function is now a no-op and is not needed anymore, because\n zope.security now knows about i18n messages and __name__ and __parent__\n attributes and won't protect them by default.\n\n- The addCheckerPublic was moved from zope.app.security.tests to\n zope.security.testing. Backward-compatibility import is provided.\n\n- The ``LocalPermission`` class is now moved to new ``zope.app.localpermission``\n package. This package now only has backward-compatibility imports and\n zcml includes.\n\n- Cleanup dependencies after refactorings. Also, don't depend on\n zope.app.testing for tests anymore.\n\n- Update package's description to point about refactorings done.\n\n3.6.2 (2009-03-10)\n------------------\n\n- The `Allow`, `Deny` and `Unset` permission settings was preferred to\n be imported from ``zope.securitypolicy.interfaces`` for a long time\n and now they are completely moved there from ``zope.app.security.settings``\n as well as the ``PermissionSetting`` class. The only thing left for\n backward compatibility is the import of Allow/Unset/Deny constants if\n ``zope.securitypolicy`` is installed to allow unpickling of security\n settings.\n\n3.6.1 (2009-03-09)\n------------------\n\n- Depend on new ``zope.password`` package instead of ``zope.app.authentication``\n to get password managers for the authentication utility, thus remove\n dependency on ``zope.app.authentication``.\n\n- Use template for AuthUtilitySearchView instead of ugly HTML\n constructing in the python code.\n\n- Bug: The `sha` and `md5` modules has been deprecated in Python 2.6.\n Whenever the ZCML of this package was included when using Python 2.6,\n a deprecation warning had been raised stating that `md5` and `sha` have\n been deprecated. Provided a simple condition to check whether Python 2.6\n or later is installed by checking for the presense of `json` module\n thas was added only in Python 2.6 and thus optionally load the security\n declaration for `md5` and `sha`.\n\n- Remove deprecated code, thus removing explicit dependency on\n zope.deprecation and zope.deferredimport.\n\n- Cleanup code a bit, replace old __used_for__ statements by ``adapts``\n calls.\n\n3.6.0 (2009-01-31)\n------------------\n\n- Changed mailing list address to zope-dev at zope.org, because\n zope3-dev is retired now. Changed \"cheeseshop\" to \"pypi\" in\n the package homepage.\n\n- Moved the `protectclass` module to `zope.security` leaving only a\n compatibility module here that imports from the new location.\n\n- Moved the directive implementation to `zope.security`.\n\n- Use `zope.container` instead of `zope.app.container`;.\n\n3.5.3 (2008-12-11)\n------------------\n\n- use zope.browser.interfaces.ITerms instead of\n `zope.app.form.browser.interfaces`.\n\n3.5.2 (2008-07-31)\n------------------\n\n- Bug: It turned out that checking for regex was not much better of an\n idea, since it causes deprecation warnings in Python 2.4. Thus let's\n look for a library that was added in Python 2.5.\n\n3.5.1 (2008-06-24)\n------------------\n\n- Bug: The `gopherlib` module has been deprecated in Python 2.5. Whenever the\n ZCML of this package was included when using Python 2.5, a deprecation\n warning had been raised stating that `gopherlib` has been\n deprecated. Provided a simple condition to check whether Python 2.5 or later\n is installed by checking for the deleted `regex` module and thus optionally\n load the security declaration for `gopherlib`.\n\n3.5.0 (2008-02-05)\n------------------\n\n- Feature:\n `zope.app.security.principalregistry.PrincipalRegistry.getPrincipal` returns\n `zope.security.management.system_user` when its id is used for the search\n key.\n\n3.4.0 (2007-10-27)\n------------------\n\n- Initial release independent of the main Zope tree.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/zopefoundation/zope.app.security", "keywords": "zope security authentication principal ftp http", "license": "ZPL 2.1", "maintainer": "", "maintainer_email": "", "name": "zope.app.security", "package_url": "https://pypi.org/project/zope.app.security/", "platform": "", "project_url": "https://pypi.org/project/zope.app.security/", "project_urls": { "Homepage": "http://github.com/zopefoundation/zope.app.security" }, "release_url": "https://pypi.org/project/zope.app.security/5.0.0/", "requires_dist": null, "requires_python": "", "summary": "ZMI Views For Zope3 Security Components", "version": "5.0.0" }, "last_serial": 5523586, "releases": { "3.4.0": [ { "comment_text": "", "digests": { "md5": "528b99ab154a3d5ad05d0e477354cee7", "sha256": "bb158d69882f1874cbb7bf81fa818e1e39fa7a44b7191cd0838cbe8a9a598927" }, "downloads": -1, "filename": "zope.app.security-3.4.0.tar.gz", "has_sig": false, "md5_digest": "528b99ab154a3d5ad05d0e477354cee7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40220, "upload_time": "2007-10-27T20:42:41", "url": "https://files.pythonhosted.org/packages/3c/4b/701ee64d975b0e8e23d6f54f5c3a0984cbe440fa9efe972b70c31e942ef2/zope.app.security-3.4.0.tar.gz" } ], "3.4.0a1": [ { "comment_text": "", "digests": { "md5": "41b2c1636c2efaea265cad3983553919", "sha256": "32f983f727ca91438510bda927b820215287075523344d1a05947fe096594dac" }, "downloads": -1, "filename": "zope.app.security-3.4.0a1.tar.gz", "has_sig": false, "md5_digest": "41b2c1636c2efaea265cad3983553919", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31469, "upload_time": "2007-04-23T13:32:28", "url": "https://files.pythonhosted.org/packages/01/c4/92ba04c57395c66b27bd222858dcb4ce76579891850b421b99704d125c6f/zope.app.security-3.4.0a1.tar.gz" } ], "3.4.0a2": [ { "comment_text": "", "digests": { "md5": "08c99325b76ddf0f5dfa47f291a3f0c0", "sha256": "2757a30d4d034df6c184c0b6afc702410221bfdc387e1b90d75861644ad0bdf1" }, "downloads": -1, "filename": "zope.app.security-3.4.0a2.tar.gz", "has_sig": false, "md5_digest": "08c99325b76ddf0f5dfa47f291a3f0c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31824, "upload_time": "2007-10-23T22:38:39", "url": "https://files.pythonhosted.org/packages/9c/83/2d403d129a4e1b54f5bd67a0ca8457d58c9fa403fbe4502c8c7ff83984f9/zope.app.security-3.4.0a2.tar.gz" } ], "3.5.0": [ { "comment_text": "", "digests": { "md5": "fea1ddfede4c9ce8424e380281f62c6b", "sha256": "1f233756640b7b2ddcc458d8024b1a7dfdbd915031eb83962f726833f54216ee" }, "downloads": -1, "filename": "zope.app.security-3.5.0.tar.gz", "has_sig": false, "md5_digest": "fea1ddfede4c9ce8424e380281f62c6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40915, "upload_time": "2008-02-05T22:00:27", "url": "https://files.pythonhosted.org/packages/4d/eb/ec997d821ea45b4ae5b724f7f3180cda1e9f42cc33f10707ab142fdfb15e/zope.app.security-3.5.0.tar.gz" } ], "3.5.1": [ { "comment_text": "", "digests": { "md5": "cbc7ae7c7fc7a338a071cc670616a967", "sha256": "22657fa0afed881d0701e8266d732ecd196cea67897476c015fea7c43a5fd705" }, "downloads": -1, "filename": "zope.app.security-3.5.1.tar.gz", "has_sig": false, "md5_digest": "cbc7ae7c7fc7a338a071cc670616a967", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41213, "upload_time": "2008-06-24T10:43:05", "url": "https://files.pythonhosted.org/packages/68/fb/f9a995ad69ab80fca25ee363ad126917fde7dcc584790cc904ffc889ea21/zope.app.security-3.5.1.tar.gz" } ], "3.5.2": [ { "comment_text": "", "digests": { "md5": "524b5669084ea07cf3b06ea0ea31a0d6", "sha256": "d5ffecdbf2c883964321d8f48260004316cabad14e260255ea5db2894feaee7b" }, "downloads": -1, "filename": "zope.app.security-3.5.2.tar.gz", "has_sig": false, "md5_digest": "524b5669084ea07cf3b06ea0ea31a0d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41340, "upload_time": "2008-07-31T16:10:56", "url": "https://files.pythonhosted.org/packages/8c/6f/137dc3fd6597bda0faefe95e7db437ae6aa861d5931bc675834b603950f8/zope.app.security-3.5.2.tar.gz" } ], "3.5.3": [ { "comment_text": "", "digests": { "md5": "ff912603ea1c6e9b5679963647a79cf8", "sha256": "a2010ec288f19176f055d454a0f35a42fb8b324137714f80d0260512d2ad7e00" }, "downloads": -1, "filename": "zope.app.security-3.5.3.zip", "has_sig": false, "md5_digest": "ff912603ea1c6e9b5679963647a79cf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78213, "upload_time": "2008-12-11T03:46:32", "url": "https://files.pythonhosted.org/packages/c7/ab/375b5e6348a141238b542206cf1eea7e6f72d838d16bf3127f3244e5aa51/zope.app.security-3.5.3.zip" } ], "3.6.0": [ { "comment_text": "", "digests": { "md5": "386df7b50b421c6337f879b4addcaa99", "sha256": "a127e82004dc07899cfd95cb741317ddf7ffd332fce3c6060e2ad22e24c6e6d4" }, "downloads": -1, "filename": "zope.app.security-3.6.0.tar.gz", "has_sig": false, "md5_digest": "386df7b50b421c6337f879b4addcaa99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37826, "upload_time": "2009-01-31T16:12:47", "url": "https://files.pythonhosted.org/packages/ad/1f/9168dada07c8d9cf39d04fb7dc2e90753c9a833aa68d30cb7c422b187d15/zope.app.security-3.6.0.tar.gz" } ], "3.6.1": [ { "comment_text": "", "digests": { "md5": "3373df363955f8b2d4977a0e2b08d0b4", "sha256": "4200c999048a478ed0a1fe27dc12517d0a9f701cab7e91529a5af202402710b8" }, "downloads": -1, "filename": "zope.app.security-3.6.1.tar.gz", "has_sig": false, "md5_digest": "3373df363955f8b2d4977a0e2b08d0b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37420, "upload_time": "2009-03-09T20:05:43", "url": "https://files.pythonhosted.org/packages/57/80/2eb8fb84c45199625fd6462a5435fe445f0b0da8c7ce28d4ea37be1ebebe/zope.app.security-3.6.1.tar.gz" } ], "3.6.2": [ { "comment_text": "", "digests": { "md5": "ed2b35f511d44a442cf306cd1a4e58d2", "sha256": "cdb3040bfee061c4e8c70587cad2bf504a63608046eece9bc0b329cd79022dc6" }, "downloads": -1, "filename": "zope.app.security-3.6.2.tar.gz", "has_sig": false, "md5_digest": "ed2b35f511d44a442cf306cd1a4e58d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37519, "upload_time": "2009-03-10T03:11:56", "url": "https://files.pythonhosted.org/packages/fc/61/9cdec1051b68fc3e749d2d421556456fb2218a9058a1a8e6a114bd50bac5/zope.app.security-3.6.2.tar.gz" } ], "3.7.0": [ { "comment_text": "", "digests": { "md5": "961db65c4421edc647bb5b39f4a2f2c5", "sha256": "d9356d2ddcc1ac0870fe0240819120d34fa3c6910c33065dbaf38a9f234661c9" }, "downloads": -1, "filename": "zope.app.security-3.7.0.tar.gz", "has_sig": false, "md5_digest": "961db65c4421edc647bb5b39f4a2f2c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18773, "upload_time": "2009-03-14T01:19:05", "url": "https://files.pythonhosted.org/packages/d9/66/dc80d1af6ffe81094e5e014c52ba12915b13a4298ce4635ddadc5f1d8211/zope.app.security-3.7.0.tar.gz" } ], "3.7.1": [ { "comment_text": "", "digests": { "md5": "f1004557beb07b99f25b4ca706c63fe8", "sha256": "0c4841250bec76a9c739410ba13d2eb9d1cb0162163246051891e7d90a2703da" }, "downloads": -1, "filename": "zope.app.security-3.7.1.tar.gz", "has_sig": false, "md5_digest": "f1004557beb07b99f25b4ca706c63fe8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23429, "upload_time": "2009-08-15T22:02:16", "url": "https://files.pythonhosted.org/packages/be/36/bd53567d478db89e0a134b3ca379f9f9a1d80cecd5a0ef4271cc5d14bad8/zope.app.security-3.7.1.tar.gz" } ], "3.7.2": [ { "comment_text": "", "digests": { "md5": "5b0720c30713c8a9808f0cb0e89d24e1", "sha256": "80f8774d2a398caa2737807d03569d42d51b0cb3091005c26d8aa1c2da7898de" }, "downloads": -1, "filename": "zope.app.security-3.7.2.tar.gz", "has_sig": false, "md5_digest": "5b0720c30713c8a9808f0cb0e89d24e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22107, "upload_time": "2009-09-10T22:46:06", "url": "https://files.pythonhosted.org/packages/07/d5/7ca5477081db004fe4a9f8a7f18ab4daf28137b5e6d945ad3441e84a7b97/zope.app.security-3.7.2.tar.gz" } ], "3.7.3": [ { "comment_text": "", "digests": { "md5": "0552175867ce0c96c365a8f56ba156c9", "sha256": "4de0e69cf41292892af8c8c43b573eaf44a793f83945a5675721f4530ae62ed7" }, "downloads": -1, "filename": "zope.app.security-3.7.3.zip", "has_sig": false, "md5_digest": "0552175867ce0c96c365a8f56ba156c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55636, "upload_time": "2009-11-29T03:03:42", "url": "https://files.pythonhosted.org/packages/b3/3a/509c22225ac9b25a3761347d5a9fcb577a4620fd1e190b37145b4814b415/zope.app.security-3.7.3.zip" } ], "3.7.4": [ { "comment_text": "", "digests": { "md5": "8f15b40eec1acc7b7e4719b5c036f39e", "sha256": "0c30a6854784410764637ed3db435b101883b3a85f8bb0e730212505f11f9443" }, "downloads": -1, "filename": "zope.app.security-3.7.4.tar.gz", "has_sig": false, "md5_digest": "8f15b40eec1acc7b7e4719b5c036f39e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24531, "upload_time": "2009-12-20T05:53:29", "url": "https://files.pythonhosted.org/packages/da/9c/101b9f9968dd48cb779dd4003fd36ee88668cedfaafd231acb5df6755f93/zope.app.security-3.7.4.tar.gz" } ], "3.7.5": [ { "comment_text": "", "digests": { "md5": "c7cec00f6d8379b93180faf6ffaa89ea", "sha256": "21cf80d0c42cabb024efd0a3704d39cba499186766491dffce8a10e79824d96c" }, "downloads": -1, "filename": "zope.app.security-3.7.5.tar.gz", "has_sig": false, "md5_digest": "c7cec00f6d8379b93180faf6ffaa89ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20763, "upload_time": "2010-01-08T23:06:30", "url": "https://files.pythonhosted.org/packages/73/11/3644af787e0eb5839a51ff6b884033041ad6d2474eda921795ddadf19ec1/zope.app.security-3.7.5.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "25c1ae130523ad92b84cfa64077a5b14", "sha256": "fff6587e20ce6a4e7b231deb27d929cd813b734cbda59e459b6798d68a2028ce" }, "downloads": -1, "filename": "zope.app.security-4.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "25c1ae130523ad92b84cfa64077a5b14", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 49563, "upload_time": "2017-04-27T14:00:04", "url": "https://files.pythonhosted.org/packages/da/65/97b7f916c56f0ab7db66f1c6d8737d742fa3ccfeb3f445c27ba2fa0b0300/zope.app.security-4.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8c622830742d0628d2abc6a468ab9fe", "sha256": "06b1e817ab6b50a9f6d1b51df1841e4d11cb235c602b2642b9591788a6753ceb" }, "downloads": -1, "filename": "zope.app.security-4.0.0.tar.gz", "has_sig": false, "md5_digest": "c8c622830742d0628d2abc6a468ab9fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29996, "upload_time": "2017-04-27T14:00:07", "url": "https://files.pythonhosted.org/packages/20/40/8fbac330badd24715cd1798ff3d0043c8e97279451b1c150b78bef1e1a15/zope.app.security-4.0.0.tar.gz" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "88dd02dab7dc6d12d5c13eba86987d12", "sha256": "6a10dca5dbad56e99604ca811385b6f54fe8eec0aaad4e3792f40e235f89a50c" }, "downloads": -1, "filename": "zope.app.security-5.0.0.tar.gz", "has_sig": false, "md5_digest": "88dd02dab7dc6d12d5c13eba86987d12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29966, "upload_time": "2019-07-12T14:50:11", "url": "https://files.pythonhosted.org/packages/bf/44/c8f8113174fc315fc8b3333a2e9753dc2c8e3d5bb8e1c39fa0631fa24d8d/zope.app.security-5.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "88dd02dab7dc6d12d5c13eba86987d12", "sha256": "6a10dca5dbad56e99604ca811385b6f54fe8eec0aaad4e3792f40e235f89a50c" }, "downloads": -1, "filename": "zope.app.security-5.0.0.tar.gz", "has_sig": false, "md5_digest": "88dd02dab7dc6d12d5c13eba86987d12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29966, "upload_time": "2019-07-12T14:50:11", "url": "https://files.pythonhosted.org/packages/bf/44/c8f8113174fc315fc8b3333a2e9753dc2c8e3d5bb8e1c39fa0631fa24d8d/zope.app.security-5.0.0.tar.gz" } ] }