{ "info": { "author": "Dan Poirier", "author_email": "dpoirier@caktusgroup.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries" ], "description": "Cordwainer\n==========\n\nA better CSV library\n\nFeatures\n--------\n\n* Lets you program in both Python 2 and Python 3 as if you had the\n Python 3 CSV module.\n\n * Under Python 2, provides a Python 3 compatible `csv` module.\n * Under Python 3, passes through transparently.\n\n* Lets your CSV files be encoded any way you want.\n\nPython 3 compatibility\n----------------------\n\n``import cordwainer.csv as csv`` ought to be equivalent to importing the\nPython 3 `csv` module, whether running with Python 2 or 3. See the\n`Python 3 csv module documentation\n`_\n\nCSV file encoding\n-----------------\n\nThe Python 2 csv module expects file handles passed to it to\nreturn data encoded in ASCII or UTF-8, and writes it to files\nthe same way.\n\nThe Python 3 csv module expects handles passed to it to return text\ndata, already decoded, and writes un-encoded text data to them. It's\nyour responsiblity to arrange for conversion when you open the file,\nor pipe your stream through some kind of conversion.\n\nUsing Cordwainer, you can just pass an extra ``encoding`` parameter\nto say that your stream is providing or expecting binary data\nwith the specified encoding, and Cordwainer will take care of\nall necessary conversions.\n\nIf ``encoding`` is omitted or ``None``, Cordwainer assumes the\nprovided stream will provide or expect un-encoded text data, just\nlike Python 3's csv module.\n\nMisc. Usage Notes\n-----------------\n\nThe ``encoding`` parameter is *only* applied for reading from and\nwriting to streams.\n\nString arguments should always be passed to the API\nas characters, and results are always characters.\n\nE.g.:\n\n* Pass fieldnames to DictWriter as characters\n* Pass data in rows to writerow() as characters\n* next() returns rows in characters\n\nIntended (eventually) features\n------------------------------\n\n* Optional header row\n* Validate expected fields, types (probably specify a Django form\n to do the validation)\n* Verbose error handling - say what the problem was on what line,\n for every line that has an error\n* Optionally stop processing after N errors\n* Optionally import the lines that are valid while skipping invalid\n ones\n* Optionally do the whole thing in one transaction\n* Optionally ignore any extra columns\n* Optionally save uploaded file and then process it in a background\n task (to not delay the HTTP request)\n* For Excel, be flexible in deciding what sheet to import - or even\n import from multiple sheets from one upload", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/caktus/cordwainer", "keywords": null, "license": "APL2", "maintainer": null, "maintainer_email": null, "name": "cordwainer", "package_url": "https://pypi.org/project/cordwainer/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cordwainer/", "project_urls": { "Homepage": "https://github.com/caktus/cordwainer" }, "release_url": "https://pypi.org/project/cordwainer/0.0.2/", "requires_dist": [ "six (>=1.7)" ], "requires_python": null, "summary": "A better CSV module", "version": "0.0.2" }, "last_serial": 1155100, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "3e6a45ed93de8d949b36f0a88728fc46", "sha256": "3a5c66aa0b8f5e0a95b20b6486626b03a952c79796dad320af6125d0863661d2" }, "downloads": -1, "filename": "cordwainer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3e6a45ed93de8d949b36f0a88728fc46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9487, "upload_time": "2014-07-11T19:02:07", "url": "https://files.pythonhosted.org/packages/75/ae/b02891770c526f2df03994b3a9df7bf5de732a4dbbf1e1df09862a57019f/cordwainer-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e84887fb4a64ce1066050a01d8671181", "sha256": "565d08d7ab436bc178c53c646c0e708f5e60914a15193e429fca8a9ccd39978f" }, "downloads": -1, "filename": "cordwainer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e84887fb4a64ce1066050a01d8671181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10297, "upload_time": "2014-07-11T19:02:09", "url": "https://files.pythonhosted.org/packages/5b/aa/9791b0a0f85d29ea758000d5f4ba4bee1c9e64dd542841da665ca280dc36/cordwainer-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e6a45ed93de8d949b36f0a88728fc46", "sha256": "3a5c66aa0b8f5e0a95b20b6486626b03a952c79796dad320af6125d0863661d2" }, "downloads": -1, "filename": "cordwainer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3e6a45ed93de8d949b36f0a88728fc46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9487, "upload_time": "2014-07-11T19:02:07", "url": "https://files.pythonhosted.org/packages/75/ae/b02891770c526f2df03994b3a9df7bf5de732a4dbbf1e1df09862a57019f/cordwainer-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e84887fb4a64ce1066050a01d8671181", "sha256": "565d08d7ab436bc178c53c646c0e708f5e60914a15193e429fca8a9ccd39978f" }, "downloads": -1, "filename": "cordwainer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e84887fb4a64ce1066050a01d8671181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10297, "upload_time": "2014-07-11T19:02:09", "url": "https://files.pythonhosted.org/packages/5b/aa/9791b0a0f85d29ea758000d5f4ba4bee1c9e64dd542841da665ca280dc36/cordwainer-0.0.2.tar.gz" } ] }