{ "info": { "author": "Felix Schwarz", "author_email": "felix.schwarz@oss.schwarz.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "pycerberus is a framework to check user data thoroughly so that you can protect\nyour application from malicious (or just garbled) input data.\n\n* Remove stupid code which converts input values: After values are validated, you \n can work with real Python types instead of strings - e.g. 42 instead of '42', \n convert database IDs to model objects transparently.\n* Implement custom validation rules: Writing custom validators is \n straightforward, everything is well documented and pycerberus only uses very \n little Python magic.\n* Focus on your value-adding application code: Save time by implementing every \n input validation rule only once, but 100% right instead of implementing a \n dozen different half-baked solutions.\n* Ready for global business: i18n support (based on GNU gettext) is built in, \n adding custom translations is easy.\n* Tune it for your needs: You can implement custom behavior in your validators,\n e.g. fetch translations from a database instead of using gettext or define\n custom translations for built-in validators.\n* Use it wherever you like: pycerberus is used in a SMTP server, trac macros as \n well as web applications - there are no dependencies on a specific context \n like web development.\n\nChangelog\n******************************\n\n0.6 (24.11.2014)\n====================\n- stop using 2to3 for Python 3 compatibility and use exactly the same source\n for all Python versions.\n- drop support for Python 2.4 and 2.5\n- bug fix: detect validator message keys correctly also when messages are\n specified during validator initialization\n\n\n0.5 (05.08.2013)\n====================\n- 'allow_additional_parameters' can now be specified in the schema constructor\n directly as well as a parameter for a declarative schema\n- new ForEach validator to validate a list of items with the same validator\n- InvalidDataErrors can return a list of errors using '.errors()'. \n- added 'min_length', 'max_length' parameters when instantiating a \n StringValidator\n- All validator messages can be overridden during instantiation by specifying\n ``messages`` attribute,\n- new OneOf validator to validate that a value is in a given list of allowed\n values\n- added constructor parameter 'filter_unvalidated_parameters' (default True) \n for SchemaValidators to pass unvalidated parameters instead of removing them\n- InvalidDataErrors can \"unpack\" their errors so that an ordinary dict is used\n as container for sub-errors (instead of another InvalidDataError with an \n error_dict)\n- new BooleanCheckbox validator to validate typical HTML checkboxes\n- new API method for all validators: '.copy()' returns a clone of the validator\n- new MatchingFields form validator (typically used to verify a password \n confirmation field)\n- new AgreeToConditionsCheckbox validator which works like a BooleanCheckbox \n but enforces a trueish value\n- EmailAddressValidator accepts also '-' and '+' characters in local part\n\nAPI changes:\n------------\n - BaseValidator.error() is deprecated now as the name does not really reflect\n that the method also raised the exception. I added a new method named \n '.raise_error()' which behaves exactly like the old .error() method. In \n addition there is a new method '.exception()' which only creates an exception\n instance.\n - IntegerValidator now treats '' and None as empty\n - BaseValidator.to_string() changed to BaseValidator.revert_conversion()\n which reflects the actual purpose better. Validators are not required to \n return a string anymore.\n\n0.4.2 (05.05.2011)\n====================\n- More fixes for source distribution because of missing files in tar.gz\n\n0.4.1 (16.04.2011)\n====================\n- Fix source distribution (distribution_helpers.py were not included)\n\n0.4 (13.04.2011)\n====================\n- pycerberus now supports Python 3!\n- Fix installation/egg generation without babel\n- Added a schema which can parse positional parameters from a string into a \n dict before processing the data like a normal schema would do\n\n0.3.3 (04.07.2010)\n==================\n- Fix installation issue: pycerberus is actually not zip-safe\n\n0.3.2 (05.06.2010)\n==================\n- Fix egg file generation: Include all necessary packages in eggs\n- added babel support to setup.py\n- updated pot file and completed German translation\n- fix exception if translations for preferred locale are not available (fall \n back to english messages)\n\n0.3.1 (07.04.2010)\n==================\n- Fixed bug due to duplicated message in DomainNameValidator/EmailAddressValidator\n- Validator can now strip inputs (False by default)\n- StringValidator now also treats '' as empty value (as well as None)\n\n0.3 (27.03.2010)\n==================\n- Python 2.3 compatibility\n- Schema can raise error if unknown items are processed\n- Basic domain name validator\n- Basic email address validator\n\n0.2 (16.03.2010)\n==================\n- You now can declare custom messages as a class-level dict\n- Added interface to retrieve error details from InvalidDataErrors\n- Added validation schemas to validate a set of values (typically a web form).\n Schemas can also inherit from other schemas to avoid code duplication.\n- Validators try to make thread-safety violations obvious\n- Nicer API to retrieve error details from an InvalidDataError\n\n0.1 (30.01.2010)\n==================\n - initial release", "description_content_type": null, "docs_url": null, "download_url": "http://www.schwarz.eu/opensource/projects/pycerberus/download/0.6/pycerberus-0.6.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.schwarz.eu/opensource/projects/pycerberus", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pycerberus", "package_url": "https://pypi.org/project/pycerberus/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pycerberus/", "project_urls": { "Download": "http://www.schwarz.eu/opensource/projects/pycerberus/download/0.6/pycerberus-0.6.tar.gz", "Homepage": "http://www.schwarz.eu/opensource/projects/pycerberus" }, "release_url": "https://pypi.org/project/pycerberus/0.6/", "requires_dist": null, "requires_python": null, "summary": "Highly flexible, no magic input validation library", "version": "0.6" }, "last_serial": 1319466, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "0a0ba4c9f0f64fe2d217fd7d482ebe15", "sha256": "4709e60a4dc400c18d37187cce23df71d7f6170653e715eb818e09f79e618a91" }, "downloads": -1, "filename": "pycerberus-0.1.tar.gz", "has_sig": false, "md5_digest": "0a0ba4c9f0f64fe2d217fd7d482ebe15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66259, "upload_time": "2010-01-30T13:52:16", "url": "https://files.pythonhosted.org/packages/03/a2/b1c986f268fccc5be43ac2f31606eae216359d6ebae6fef04d61af81fe63/pycerberus-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "84baa1346bc40b04956aa71a96132d7f", "sha256": "25ed7511879ba7acbb91951aceefb1dbbf917010618ba649ea60f3d318369ce0" }, "downloads": -1, "filename": "pycerberus-0.2-py2.6.egg", "has_sig": false, "md5_digest": "84baa1346bc40b04956aa71a96132d7f", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 27841, "upload_time": "2010-03-16T22:28:13", "url": "https://files.pythonhosted.org/packages/de/c7/150c2bfd085ed36055aab14ddb4057084dbac3566c1ba83385c385630636/pycerberus-0.2-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "708fb4756dc309d646bf3de2bfd100ab", "sha256": "b0d7ba1862db84f5b5ed0bce101155574a0b34c6edcec613d23ba54c7e43f752" }, "downloads": -1, "filename": "pycerberus-0.2.tar.gz", "has_sig": false, "md5_digest": "708fb4756dc309d646bf3de2bfd100ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 81828, "upload_time": "2010-03-16T22:29:03", "url": "https://files.pythonhosted.org/packages/87/34/530de08abdebaaa5fbde9f0dfdd924b12efbcc8fc4bc5e79e4c61d63302b/pycerberus-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "27b4eecb17fba6cf797ebf59262ecc21", "sha256": "bf16b18f07241746b8ced9f18c5f85b12ba083c80f09a0caa9ce0fa1dc465e1b" }, "downloads": -1, "filename": "pycerberus-0.3-py2.6.egg", "has_sig": false, "md5_digest": "27b4eecb17fba6cf797ebf59262ecc21", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 30702, "upload_time": "2010-03-27T19:54:41", "url": "https://files.pythonhosted.org/packages/4a/31/f48aebbe7b2cfd099928af25576ebe489d3c250437a0afe9cf37aff2a877/pycerberus-0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "94604d3f56ca17210502690c0b7d7882", "sha256": "48320b79f0e40a39c1eb95898fa48ef101e425df93a7224757b91eb36c110100" }, "downloads": -1, "filename": "pycerberus-0.3.tar.gz", "has_sig": false, "md5_digest": "94604d3f56ca17210502690c0b7d7882", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84512, "upload_time": "2010-03-27T19:56:04", "url": "https://files.pythonhosted.org/packages/49/2d/abf5d626083908a562992cf05f24ea549c9274c8702f0d00b4ad35b23ea7/pycerberus-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8d9c031a5f9ad02736f8600955de8cb6", "sha256": "aa917f6c683e5c545ba89071bcf23d02bf6581f75711d807daac4bc579420908" }, "downloads": -1, "filename": "pycerberus-0.3.1-py2.6.egg", "has_sig": false, "md5_digest": "8d9c031a5f9ad02736f8600955de8cb6", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 31275, "upload_time": "2010-04-07T22:32:26", "url": "https://files.pythonhosted.org/packages/3a/7a/2231fba1395dbb7114399f8b9ad9986de8f9fc195aa28b8eb27f280c1cb6/pycerberus-0.3.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "d0b4c822b27e5adb86024425c3183335", "sha256": "e111703d71dd7a91354bf850e1c6631c8013f8295d2961e939d617a629743df8" }, "downloads": -1, "filename": "pycerberus-0.3.1.tar.gz", "has_sig": false, "md5_digest": "d0b4c822b27e5adb86024425c3183335", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85235, "upload_time": "2010-04-07T22:35:07", "url": "https://files.pythonhosted.org/packages/e4/7a/d66897748a784f8737d4f9cd15b3940a18daf0350877048f56b179c8546c/pycerberus-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "f6db72850948dd685b991918aee285f3", "sha256": "3ab392175683cde2174a173baae2679f4b26a8979178494ce850bac73f1a42df" }, "downloads": -1, "filename": "pycerberus-0.3.2.tar.gz", "has_sig": false, "md5_digest": "f6db72850948dd685b991918aee285f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86595, "upload_time": "2010-06-05T20:28:11", "url": "https://files.pythonhosted.org/packages/70/27/b2f7f8e47aa95541d0fbf0894353b0e60f5d51668cde8894d7f39b703f2b/pycerberus-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "d4e0feef09598a98d1aecd67dbb841fd", "sha256": "fbbb9fd175115a2a5ec933dbdff202e20c8114de02ad4284f4b71b38ebf3eb16" }, "downloads": -1, "filename": "pycerberus-0.3.3-py2.6.egg", "has_sig": false, "md5_digest": "d4e0feef09598a98d1aecd67dbb841fd", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 54974, "upload_time": "2010-07-04T21:25:09", "url": "https://files.pythonhosted.org/packages/2d/e5/36ed1ea10bb0fc087b511424451c0507c2629857dfa27db950323f8912de/pycerberus-0.3.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "aa51d406f9afe2c5b896f00e7cf79c42", "sha256": "7578aff85c2d250f1db1a6afb59905b0d44f0271377350f5470aacd69c842b90" }, "downloads": -1, "filename": "pycerberus-0.3.3.tar.gz", "has_sig": false, "md5_digest": "aa51d406f9afe2c5b896f00e7cf79c42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91661, "upload_time": "2010-07-04T21:27:06", "url": "https://files.pythonhosted.org/packages/60/24/c565218ae20e0a3ad78dea9dba71d7ce60796112e01054cd89cbabf2344b/pycerberus-0.3.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "4a83372575757dd471fd41d2c8675d7e", "sha256": "0c400e771fee88f9772aa3624804407795eaab8e94cd64d5721c16dde838c7e8" }, "downloads": -1, "filename": "pycerberus-0.4-py2.7.egg", "has_sig": false, "md5_digest": "4a83372575757dd471fd41d2c8675d7e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 63799, "upload_time": "2011-04-14T17:02:10", "url": "https://files.pythonhosted.org/packages/e0/da/ea1524d84a051de516c1e6b632e1fc7db1878234fa27e35836cc1ad8e599/pycerberus-0.4-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "55cd701357b4266a1c61afa9830b11d0", "sha256": "9be9c3881a24c8cecc48f247afad97e527034d02016d16a6dffcde17dffbe200" }, "downloads": -1, "filename": "pycerberus-0.4-py3.1.egg", "has_sig": false, "md5_digest": "55cd701357b4266a1c61afa9830b11d0", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 64382, "upload_time": "2011-04-14T17:03:46", "url": "https://files.pythonhosted.org/packages/ec/d2/65bcd1adb1dc0336599aaa2de5d7e157f5eb272ef3ced267950f9683eacf/pycerberus-0.4-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "fbdb7144d1fcc32de95469cad8dedd62", "sha256": "69464ae3978a9f8a39d0105ca931009b82b13134dcc5e7b5613c7a6ddc74f859" }, "downloads": -1, "filename": "pycerberus-0.4.tar.gz", "has_sig": false, "md5_digest": "fbdb7144d1fcc32de95469cad8dedd62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112276, "upload_time": "2011-04-14T17:02:48", "url": "https://files.pythonhosted.org/packages/fc/68/5678ea489df448c255a6e61aafeda9b211ac3e8c8333002a61f4450b6688/pycerberus-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "dc7dc6f8c204d846a0e32e8e13220b0a", "sha256": "27f2117120a9d6e48acbc454b041db5ed7fc08b4c92d544b786a961ffe3c9a47" }, "downloads": -1, "filename": "pycerberus-0.4.1-py2.7.egg", "has_sig": false, "md5_digest": "dc7dc6f8c204d846a0e32e8e13220b0a", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 63909, "upload_time": "2011-04-16T09:04:41", "url": "https://files.pythonhosted.org/packages/22/a9/ff402137c613577a7058b1b9a1cb6ea7f4f0cb4266b0b97fe091fb50a5a6/pycerberus-0.4.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "5fd50a5bfa26c0f827e71bb43802d40a", "sha256": "1d310131df3ca08e50164fec93a45fb4163fb5fb3739e775d0c01fd820d1c094" }, "downloads": -1, "filename": "pycerberus-0.4.1-py3.1.egg", "has_sig": false, "md5_digest": "5fd50a5bfa26c0f827e71bb43802d40a", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 64511, "upload_time": "2011-04-16T09:06:04", "url": "https://files.pythonhosted.org/packages/aa/4a/791f9fbba94c92e28ed6cdad69df03152f9f7c8643bd6cd1a10d46c0fbc9/pycerberus-0.4.1-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "62bde5c31bc9e55f72f00e3b49355b77", "sha256": "1fb729bd323f072d6eecc6f7210d3821abb2f5a22a7edc143f2d30ee916d4dd7" }, "downloads": -1, "filename": "pycerberus-0.4.1.tar.gz", "has_sig": false, "md5_digest": "62bde5c31bc9e55f72f00e3b49355b77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112825, "upload_time": "2011-04-16T09:06:17", "url": "https://files.pythonhosted.org/packages/4f/66/67f8957c04fe7d12f7e16f35bde62ac0ce221312706b5407ec895db1ef4a/pycerberus-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "f2281e6a754e11ef68b44d313a456763", "sha256": "f727afcf89c3d56e43d3de2a39b333a463e2575e54cd07c10c15ebe892641636" }, "downloads": -1, "filename": "pycerberus-0.4.2-py2.4.egg", "has_sig": false, "md5_digest": "f2281e6a754e11ef68b44d313a456763", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 61863, "upload_time": "2011-07-12T00:25:57", "url": "https://files.pythonhosted.org/packages/3e/e3/4e3e49c07e54b94316730197c51d8bf928e6305be65ad2fea07b493da113/pycerberus-0.4.2-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "afacc74fcef0c4732cf8a84e3d13be1d", "sha256": "1d4534e4f75ee904a7e5dd636304545809accc5a727cb8062e679bfdf76117c7" }, "downloads": -1, "filename": "pycerberus-0.4.2-py2.7.egg", "has_sig": false, "md5_digest": "afacc74fcef0c4732cf8a84e3d13be1d", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 61217, "upload_time": "2011-05-05T14:27:20", "url": "https://files.pythonhosted.org/packages/43/15/aa5b692af6ce1d49f9f0e1b5044640e3a3a2281b9c8e68b0e769965198d5/pycerberus-0.4.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3664c854803d11152d65c1bcf9de93c5", "sha256": "6f15e97139c9219abd4a14f6f7ec42ba0fb9f28b9041a562750fe77a380b48eb" }, "downloads": -1, "filename": "pycerberus-0.4.2-py3.1.egg", "has_sig": false, "md5_digest": "3664c854803d11152d65c1bcf9de93c5", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 61814, "upload_time": "2011-05-05T14:28:29", "url": "https://files.pythonhosted.org/packages/bb/bb/2f9ab9e7b9ba20bc9e244d5c165895c4c4db77ab3a8d50a6f5f92e6b25c7/pycerberus-0.4.2-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "8cd0dfe96541c9af46c084e79249c820", "sha256": "5de70249a64e79f681a670a496f50e38c6a3f4e6fbcba5ecc38bce39824c5001" }, "downloads": -1, "filename": "pycerberus-0.4.2.tar.gz", "has_sig": false, "md5_digest": "8cd0dfe96541c9af46c084e79249c820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 113869, "upload_time": "2011-05-05T14:28:36", "url": "https://files.pythonhosted.org/packages/f4/39/a733c37f86150b645029b047214e086b9009cf2f8ba01ab7005fc110e2fb/pycerberus-0.4.2.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "834fd0e6676aa9f7ea90ec1ceacf8027", "sha256": "c0117fbeb9b745c899cb1b917359e682618e63f12e4ad88522d3b8aa143fded2" }, "downloads": -1, "filename": "pycerberus-0.5-py2.7.egg", "has_sig": false, "md5_digest": "834fd0e6676aa9f7ea90ec1ceacf8027", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 82306, "upload_time": "2013-08-05T14:48:03", "url": "https://files.pythonhosted.org/packages/e5/e9/03bcf2a9b265363d024bb0f85ccfcd1984d031ac5fdfc5a50f731a8ff415/pycerberus-0.5-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f4f92a342e9fec040fddae52889bc8d3", "sha256": "e273e00c2447920cacafbe50e61c5dcc3b9c062be94a731c349b42cc4d03e8e5" }, "downloads": -1, "filename": "pycerberus-0.5.tar.gz", "has_sig": true, "md5_digest": "f4f92a342e9fec040fddae52889bc8d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150217, "upload_time": "2013-08-05T15:05:06", "url": "https://files.pythonhosted.org/packages/68/bb/252dd5a2381c70f819b91ef49ef4d712c3eac8ff10ce6e67658a38c6c6ea/pycerberus-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "f536775668f30fa2f1628e7cc511cb7f", "sha256": "1e0fc73b6c9619b3b780831299e2bb0a62094a0f6cc3f80a6a46c2072d5b79d1" }, "downloads": -1, "filename": "pycerberus-0.6.tar.gz", "has_sig": false, "md5_digest": "f536775668f30fa2f1628e7cc511cb7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152848, "upload_time": "2014-11-24T21:44:17", "url": "https://files.pythonhosted.org/packages/30/05/41bf837bf6126b14191a1ad41a35373c3e46f6bb930d7b054f8faf77698e/pycerberus-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f536775668f30fa2f1628e7cc511cb7f", "sha256": "1e0fc73b6c9619b3b780831299e2bb0a62094a0f6cc3f80a6a46c2072d5b79d1" }, "downloads": -1, "filename": "pycerberus-0.6.tar.gz", "has_sig": false, "md5_digest": "f536775668f30fa2f1628e7cc511cb7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152848, "upload_time": "2014-11-24T21:44:17", "url": "https://files.pythonhosted.org/packages/30/05/41bf837bf6126b14191a1ad41a35373c3e46f6bb930d7b054f8faf77698e/pycerberus-0.6.tar.gz" } ] }