{ "info": { "author": "Blaze development team", "author_email": "blaze-dev@continuum.io", "bugtrack_url": null, "classifiers": [], "description": "Odo\n===\n\n|Build Status| |Doc Status|\n\n.. image:: https://binstar.org/blaze/odo/badges/build.svg\n :target: https://binstar.org/blaze/odo/builds\n\n.. image:: https://binstar.org/blaze/odo/badges/version.svg\n :target: https://binstar.org/blaze/odo\n\nData migration in Python\n\nDocumentation_\n\nExample\n-------\n\nOdo migrates data between different containers\n\n.. code-block:: python\n\n >>> from odo import odo\n >>> odo((1, 2, 3), list)\n [1, 2, 3]\n\nIt operates on small, in-memory containers (as above) and large, out-of-core\ncontainers (as below)\n\n.. code-block:: python\n\n >>> odo('myfile.hdf5::/data', 'postgresql://user:pass@host::my-table')\n Table('my-table', MetaData(bind=Engine(postgresql://user:****@host)), ...)\n\nOdo leverages the existing Python ecosystem. The example above uses\n``sqlalchemy`` for SQL interation and ``h5py`` for HDF5 interaction.\n\n\nMethod\n------\n\nOdo migrates data using network of small data conversion functions between\ntype pairs. That network is below:\n\n.. image:: https://raw.githubusercontent.com/blaze/odo/master/docs/source/images/conversions.png\n :alt: odo conversions\n\nEach node is a container type (like ``pandas.DataFrame`` or\n``sqlalchemy.Table``) and each directed edge is a function that transforms or\nappends one container into or onto another. We annotate these functions/edges\nwith relative costs.\n\nThis network approach allows ``odo`` to select the shortest path between any\ntwo types (thank you networkx_). For performance reasons these functions often\nleverage non-Pythonic systems like NumPy arrays or native ``CSV->SQL`` loading\nfunctions. Odo is not dependent on only Python iterators.\n\nThis network approach is also robust. When libraries go missing or runtime\nerrors occur ``odo`` can work around these holes and find new paths.\n\nThis network approach is extensible. It is easy to write small functions and\nregister them to the overall graph. In the following example showing how we\nconvert from ``pandas.DataFrame`` to a ``numpy.ndarray``.\n\n.. code-block:: python\n\n from odo import convert\n\n @convert.register(np.ndarray, pd.DataFrame, cost=1.0)\n def dataframe_to_numpy(df, **kwargs):\n return df.to_records(index=False)\n\nWe decorate ``convert`` functions with the target and source types as well as a\nrelative cost. This decoration establishes a contract that the underlying\nfunction must fulfill, in this case with the fast ``DataFrame.to_records``\nmethod. Similar functions exist for ``append``, to add to existing data, and\n``resource`` for URI resolution.\n\n* ``convert``: Transform dataset into new container\n* ``append``: Add dataset onto existing container\n* ``resource``: Given a URI find the appropriate data resource\n* ``odo``: Call one of the above based on inputs.\n E.g. ``odo((1, 2, 3), list) -> convert(list, (1, 2, 3))``\n while ``L = []; odo((1, 2, 3), L) -> append(L, (1, 2, 3))``\n\nFinally, ``odo`` is also aware of which containers must reside in memory and\nwhich do not. In the graph above the *red-colored* nodes are robust to\nlarger-than-memory datasets. Transformations between two out-of-core datasets\noperate only on the subgraph of the red nodes.\n\n\nLICENSE\n-------\n\nNew BSD. See `License File `__.\n\nHistory\n-------\n\nOdo was factored out from the Blaze_ project.\n\n\n.. _Blaze: http://blaze.pydata.org/\n.. _networkx: https://networkx.github.io/\n.. _Documentation: https://odo.readthedocs.org/en/latest/\n.. |Build Status| image:: https://travis-ci.org/blaze/odo.png\n :target: https://travis-ci.org/blaze/odo\n.. |Doc Status| image:: https://readthedocs.org/projects/odo/badge/?version=latest\n :target: https://readthedocs.org/projects/odo/?badge=latest\n :alt: Documentation Status", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/blaze/odo", "keywords": "odo data conversion hdf5 sql blaze", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "odo", "package_url": "https://pypi.org/project/odo/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/odo/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/blaze/odo" }, "release_url": "https://pypi.org/project/odo/0.5.0/", "requires_dist": null, "requires_python": null, "summary": "Data migration utilities", "version": "0.5.0" }, "last_serial": 2083122, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "ffd15f86be4da73bf561a49ed9ea7298", "sha256": "eacbd08811be36dcff135ddec495f724a7e77f537fb3f07d9c30d85ce721c6d8" }, "downloads": -1, "filename": "odo-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ffd15f86be4da73bf561a49ed9ea7298", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84327, "upload_time": "2015-03-06T16:59:54", "url": "https://files.pythonhosted.org/packages/5b/e3/405cf0122800a174a74c5d0ebeb2595638e55751abe69c993d06aa38132f/odo-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "703a5a5ed3db23537318816449a1c47c", "sha256": "4c7dfa6cfbcf56fccfbe1c91c2688ccad1a1276703ce18b27c13825d9f2ec2ba" }, "downloads": -1, "filename": "odo-0.3.1.tar.gz", "has_sig": false, "md5_digest": "703a5a5ed3db23537318816449a1c47c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91034, "upload_time": "2015-03-13T02:45:17", "url": "https://files.pythonhosted.org/packages/1b/49/275bc0dd232ad81ee46cc0c8a77133cba5130f098affa8128db11b64ddc3/odo-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "22aba71b627da261216ebf74828223be", "sha256": "515365ec8b67c7c73303391b8f12107be6a8f4ab983352f548dcb32f8eb175e5" }, "downloads": -1, "filename": "odo-0.3.2.zip", "has_sig": false, "md5_digest": "22aba71b627da261216ebf74828223be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142291, "upload_time": "2015-04-29T18:04:38", "url": "https://files.pythonhosted.org/packages/f1/b1/6230c1819d7c951ac55d9cce906cf4d5a47abbbdd92addd54bb1d752eab0/odo-0.3.2.zip" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "1e43d81e7bf55692efdbd9d30d307970", "sha256": "2499ee86c26c74daa28f21ed235ca331911065950deea5169ebdb7d5dae6ebef" }, "downloads": -1, "filename": "odo-0.3.3.tar.gz", "has_sig": false, "md5_digest": "1e43d81e7bf55692efdbd9d30d307970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 109748, "upload_time": "2015-07-08T18:42:17", "url": "https://files.pythonhosted.org/packages/59/04/f1346b6df8923e5d1be5bcc99079c07c7a8ae6445aa4d6011e0d8395a5cb/odo-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b65bda8f4bc8a6b3666f80fac7809beb", "sha256": "77bdb372999ac0d9ef272927d7867a668108a4193e11eb8646bf770370a30725" }, "downloads": -1, "filename": "odo-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b65bda8f4bc8a6b3666f80fac7809beb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 123152, "upload_time": "2015-09-16T00:00:28", "url": "https://files.pythonhosted.org/packages/48/47/3681eef9b5bdb8f98c1c6a774d75922738c3070c34e68081afefed1d3d97/odo-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ca88f369f542460eabcee00f11ca29f7", "sha256": "e9d84a76f9a60bb278810204892348d6883cc1f4c6ce34e362421d75d6271577" }, "downloads": -1, "filename": "odo-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ca88f369f542460eabcee00f11ca29f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129308, "upload_time": "2015-12-15T22:17:29", "url": "https://files.pythonhosted.org/packages/4e/28/268457be78a44e6adb8dea830b981b28e588d04abc33738214d2759fb9c9/odo-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "23a81cbe2546d4398fd7cc406c99c528", "sha256": "f793df8b212994ea23ce34e90e2048d0237d3b95ecd066ef2cfbb1c2384b79e9" }, "downloads": -1, "filename": "odo-0.4.2.tar.gz", "has_sig": false, "md5_digest": "23a81cbe2546d4398fd7cc406c99c528", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129757, "upload_time": "2016-02-05T02:47:28", "url": "https://files.pythonhosted.org/packages/f2/2c/8d2dc6226687b6692a876be8a9783885915377fe3a11f2868fa4d7d52ace/odo-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "677a3ccb4704c52dd551c49b953147b9", "sha256": "e892ffe58e87d6b1c12838c4ab252bd0ae8c0ec43e5179409309ded4929905d6" }, "downloads": -1, "filename": "odo-0.5.0.tar.gz", "has_sig": false, "md5_digest": "677a3ccb4704c52dd551c49b953147b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129977, "upload_time": "2016-04-25T16:27:09", "url": "https://files.pythonhosted.org/packages/a0/b6/8cacdb1906fc293816c89879b17902729454d102799e5171c54439006f80/odo-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "677a3ccb4704c52dd551c49b953147b9", "sha256": "e892ffe58e87d6b1c12838c4ab252bd0ae8c0ec43e5179409309ded4929905d6" }, "downloads": -1, "filename": "odo-0.5.0.tar.gz", "has_sig": false, "md5_digest": "677a3ccb4704c52dd551c49b953147b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129977, "upload_time": "2016-04-25T16:27:09", "url": "https://files.pythonhosted.org/packages/a0/b6/8cacdb1906fc293816c89879b17902729454d102799e5171c54439006f80/odo-0.5.0.tar.gz" } ] }