{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7" ], "description": "============\nunicode_mayo\n============\n\n**unicode_mayo** is the mayo in your unicode sandwich. In your development\nenvironment, use it as a wrapper around unicode and byte strings to see if\nthey're accidentally coming in to contact with byte strings. This can help\ncatch unicode encode/decode errors before they happen in production!\n\n**unicode_mayo** includes two classes: ``UnicodeSafetyWrapper`` and\n``BytestringSafetyWrapper``. The former is meant to envelope unicode strings,\nand warns when they come into contact with byte strings; the latter is meant\nfor byte strings, and warns when it comes into contact with unicode. Place\nthese in strategic places (likely in development environments only), like\n``gettext()`` or all strings from your database.\n\nInstallation\n============\n\nInstallation via ``pip``::\n\n pip install unicode_mayo\n\nUsage\n=====\n\nSomething like::\n\n >>> import unicode_mayo\n >>> wrapped = unicode_mayo.UnicodeSafetyWrapper(u'safety at last!')\n >>> wrapped.encode('utf-8')\n 'safety at last!'\n >>> wrapped + u' woohoo!'\n u'safety at last! woohoo!'\n >>> wrapped + 'evil bytestring'\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/eyalr/personal_work/unicode_mayo/src/unicode_mayo/__init__.py\", line 55, in __add__\n _fail_on_bytes(other)\n File \"/Users/eyalr/personal_work/unicode_mayo/src/unicode_mayo/__init__.py\", line 90, in _fail_on_bytes\n _fail_on_bytes_helper(other)\n File \"/Users/eyalr/personal_work/unicode_mayo/src/unicode_mayo/__init__.py\", line 81, in _fail_on_bytes_helper\n 'Attempted string formatting without decoding utf-8'\n TypeError: Attempted string formatting without decoding utf-8\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/eyalr/unicode_mayo", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "unicode-mayo", "package_url": "https://pypi.org/project/unicode-mayo/", "platform": "", "project_url": "https://pypi.org/project/unicode-mayo/", "project_urls": { "Homepage": "https://github.com/eyalr/unicode_mayo" }, "release_url": "https://pypi.org/project/unicode-mayo/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "The mayo on your unicode sandwich", "version": "1.1.0" }, "last_serial": 5761856, "releases": { "0.6.0": [ { "comment_text": "", "digests": { "md5": "dfbf865074035be5ac28141d72cf8e27", "sha256": "5097a91c85a19782cf43b4d015e472ae17afb13dfd41020d92173b8a4c7f17b5" }, "downloads": -1, "filename": "unicode_mayo-0.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dfbf865074035be5ac28141d72cf8e27", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5066, "upload_time": "2015-02-25T03:47:29", "url": "https://files.pythonhosted.org/packages/27/22/3f11b3cd7d088a770efe37c8dae86c151f54d7699c158ca746c767e2b5c0/unicode_mayo-0.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae2ff6c314f8ef296188b89ed39d2486", "sha256": "4206d63b323d0e251b9d9436a74fb2c122b21ff4c47b6f8d5d12e28ec6b3fdc5" }, "downloads": -1, "filename": "unicode_mayo-0.6.0.tar.gz", "has_sig": false, "md5_digest": "ae2ff6c314f8ef296188b89ed39d2486", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3179, "upload_time": "2015-02-25T03:47:25", "url": "https://files.pythonhosted.org/packages/be/62/fdb72337df89a1257125f5d8de3e35a1f0484f2e837bec52af998659d8d3/unicode_mayo-0.6.0.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "7e547dbc99531742e150ba0f0305f929", "sha256": "291ce3127c019ff95d794efc273e121c5f407653ed6178a38a3bcdba2249527d" }, "downloads": -1, "filename": "unicode_mayo-0.6.5-py2-none-any.whl", "has_sig": false, "md5_digest": "7e547dbc99531742e150ba0f0305f929", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5110, "upload_time": "2015-02-25T06:00:06", "url": "https://files.pythonhosted.org/packages/75/e4/48a748a8c65ea8523e1c70955b4b3288a3017ef513d6ad1134e74c745ecc/unicode_mayo-0.6.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "708d0514b4ee0c57a4a3c5a6cb108120", "sha256": "9adc2d3ae9feebc9b1685bb3bf05e16fdff84b6a69cd701bbad5f69c5d97bc4c" }, "downloads": -1, "filename": "unicode_mayo-0.6.5.tar.gz", "has_sig": false, "md5_digest": "708d0514b4ee0c57a4a3c5a6cb108120", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3224, "upload_time": "2015-02-25T06:00:02", "url": "https://files.pythonhosted.org/packages/13/ba/425c2e9e8cc070560fff9476d123611bed7b0bdd2d34baa2d93b6a002ac1/unicode_mayo-0.6.5.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "6ede357881a1667e65aeb796984d707a", "sha256": "eaa97d8a534382cf911ff5a2547caaf54e72d46baa4406fe5ac3a0f0543c3a00" }, "downloads": -1, "filename": "unicode_mayo-0.7.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6ede357881a1667e65aeb796984d707a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5103, "upload_time": "2015-02-25T18:22:59", "url": "https://files.pythonhosted.org/packages/ac/b1/a9fa99ff3df77a9023b144c8ba7db3776bcbf2b897e797f95fe2805b3599/unicode_mayo-0.7.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df8e586267a470d2ae2a73db830f51f5", "sha256": "a3f24bf7558ec7fbfec7a43584161203be0df62c86b287542ab243543e138e43" }, "downloads": -1, "filename": "unicode_mayo-0.7.0.tar.gz", "has_sig": false, "md5_digest": "df8e586267a470d2ae2a73db830f51f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3214, "upload_time": "2015-02-25T18:22:56", "url": "https://files.pythonhosted.org/packages/86/0f/031681643bc47a1066dcf8c793132aecf91e113f1ebe8c985e9afcfb9636/unicode_mayo-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "71fe930408c7bd73812d414c8d37ee12", "sha256": "5ccccc757ef959ebc5bf17808a4ba6fe28ab932dcf80b05d36215b442e67491b" }, "downloads": -1, "filename": "unicode_mayo-0.8.0-py2-none-any.whl", "has_sig": false, "md5_digest": "71fe930408c7bd73812d414c8d37ee12", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5138, "upload_time": "2015-03-04T22:05:26", "url": "https://files.pythonhosted.org/packages/8a/d0/9bc70510d7761b313b64b3605e70674b6769c2b82ab6772f589b3f171214/unicode_mayo-0.8.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ded2528bd9a110130580acaa4dd5409b", "sha256": "34672daec2de14e94f217feaebe92e705e8409121d3f39ff95e450978102e565" }, "downloads": -1, "filename": "unicode_mayo-0.8.0.tar.gz", "has_sig": false, "md5_digest": "ded2528bd9a110130580acaa4dd5409b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3250, "upload_time": "2015-03-04T22:05:23", "url": "https://files.pythonhosted.org/packages/f9/5b/99ce8ec51b1b30d167529d33c6cd1bb85bbff99ace5bd24caf66a8ebdeb0/unicode_mayo-0.8.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "4dbe86a670c8c613811e73f6c0f03a25", "sha256": "52386787ba64e33f00f00a59c23d63c39b5c4ef7c1d0c649306b92c9354ac241" }, "downloads": -1, "filename": "unicode_mayo-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4dbe86a670c8c613811e73f6c0f03a25", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5772, "upload_time": "2015-03-06T05:06:34", "url": "https://files.pythonhosted.org/packages/f1/f7/99bd2574ea91e207118f71321dfe4e9797103bd8646e0d1526fee7fcc641/unicode_mayo-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28ebe455b407fefd5c42cf82bd2a9771", "sha256": "74d458fefe8f63f402e1dddfcbb70adf0a0008ed98c65dba3484c71ebd7391ac" }, "downloads": -1, "filename": "unicode_mayo-1.0.0.tar.gz", "has_sig": false, "md5_digest": "28ebe455b407fefd5c42cf82bd2a9771", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3727, "upload_time": "2015-03-06T05:06:31", "url": "https://files.pythonhosted.org/packages/d9/af/6b56831896014a4322afa67e872aeb3665e112b7bf77b965dcdc3469ab3c/unicode_mayo-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ac5c7f4cf92423eed24f40b897f7354a", "sha256": "487bad795f7b2cc93c2409fa485740208c01c197ab43e7195d98cd7404ed0efc" }, "downloads": -1, "filename": "unicode_mayo-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ac5c7f4cf92423eed24f40b897f7354a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5825, "upload_time": "2015-03-06T05:19:52", "url": "https://files.pythonhosted.org/packages/33/4c/81f9b3d3b422329220266e723b7c4147e136aaa90cb2c524add3c1255dcc/unicode_mayo-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba814ab2fafedb4fc6d2e49faac6a6c7", "sha256": "6d4109e37aca6a36cdf4cb6cfeebdcb28905cbe38220d981f367217553d19944" }, "downloads": -1, "filename": "unicode_mayo-1.0.1.tar.gz", "has_sig": false, "md5_digest": "ba814ab2fafedb4fc6d2e49faac6a6c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3794, "upload_time": "2015-03-06T05:19:50", "url": "https://files.pythonhosted.org/packages/09/23/09fbf8260652ca37e17509b853dfdd705ec9fc52eed32b2ac87163ecd5e5/unicode_mayo-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "dca5175c06fb4134fdd7390f2413ee29", "sha256": "46f009fbfc50d6b358eb32f249b0ec3f77bf2f5eff70f396cbb60f06f1934ec9" }, "downloads": -1, "filename": "unicode_mayo-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dca5175c06fb4134fdd7390f2413ee29", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5126, "upload_time": "2019-08-30T18:58:12", "url": "https://files.pythonhosted.org/packages/18/3f/687ee07dc3f980a2b300250ee831d12842c3a715f378234ecf27788cd7a9/unicode_mayo-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b04384fb4b8ae83e5b55dc2459a36bbf", "sha256": "deb67db1a4d12d634cb21a939f39383b17160fd37ff4cf86075abb24a2578e27" }, "downloads": -1, "filename": "unicode_mayo-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b04384fb4b8ae83e5b55dc2459a36bbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3795, "upload_time": "2019-08-30T18:58:13", "url": "https://files.pythonhosted.org/packages/58/3f/7f00da918abf8003bc52c3bc0301a4c80cd7d216f10ae4468466131ae3c1/unicode_mayo-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dca5175c06fb4134fdd7390f2413ee29", "sha256": "46f009fbfc50d6b358eb32f249b0ec3f77bf2f5eff70f396cbb60f06f1934ec9" }, "downloads": -1, "filename": "unicode_mayo-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dca5175c06fb4134fdd7390f2413ee29", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5126, "upload_time": "2019-08-30T18:58:12", "url": "https://files.pythonhosted.org/packages/18/3f/687ee07dc3f980a2b300250ee831d12842c3a715f378234ecf27788cd7a9/unicode_mayo-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b04384fb4b8ae83e5b55dc2459a36bbf", "sha256": "deb67db1a4d12d634cb21a939f39383b17160fd37ff4cf86075abb24a2578e27" }, "downloads": -1, "filename": "unicode_mayo-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b04384fb4b8ae83e5b55dc2459a36bbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3795, "upload_time": "2019-08-30T18:58:13", "url": "https://files.pythonhosted.org/packages/58/3f/7f00da918abf8003bc52c3bc0301a4c80cd7d216f10ae4468466131ae3c1/unicode_mayo-1.1.0.tar.gz" } ] }