{ "info": { "author": "Michael Delgado", "author_email": "delgado.michaelt@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "=======\nMetaCSV\n=======\n\n\n.. image:: https://img.shields.io/travis/ClimateImpactLab/metacsv/master.svg?style=flat-square\n :target: https://travis-ci.org/ClimateImpactLab/metacsv\n\n.. image:: https://img.shields.io/pypi/v/metacsv.svg?style=flat-square\n :target: https://pypi.python.org/pypi/MetaCSV\n\n.. image:: https://img.shields.io/coveralls/delgadom/metacsv/master.svg?style=flat-square\n :target: https://coveralls.io/github/delgadom/metacsv?branch=master\n\n.. image:: https://img.shields.io/pypi/pyversions/metacsv.svg?style=flat-square\n :target: https://pypi.python.org/pypi/MetaCSV\n\n.. image:: https://anaconda.org/delgadom/metacsv/badges/version.svg\n :target: https://anaconda.org/delgadom/metacsv\n\n.. image:: https://anaconda.org/delgadom/metacsv/badges/downloads.svg\n :target: https://anaconda.org/delgadom/metacsv\n.. image:: https://badges.gitter.im/metacsv/Lobby.svg\n :alt: Join the chat at https://gitter.im/metacsv/Lobby\n :target: https://gitter.im/metacsv/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n``metacsv`` - Tools for documentation-aware data reading, writing, and analysis\n\nSee the full documentation at ReadTheDocs_ \n\n.. _ReadTheDocs: http://metacsv.rtfd.org\n\nOverview\n=========\n\n**MetaCSV** provides tools to read in CSV data with a yaml-compliant header \ndirectly into a ``pandas`` ``Series``, ``DataFrame``, or ``Panel`` or an \n``xarray`` ``DataArray`` or ``Dataset``.\n\nData specification\n----------------------------\n\nData can be specified using a yaml-formatted header, with the YAML *start-mark*\nstring (``---``) above and the YAML *end-mark* string (``...``) below the yaml \nblock. Only one yaml block is allowed. If the doc-separation string is not the \nfirst (non-whitespace) line in the file, all of the file's contents will be \ninterpreted by the csv reader. The yaml data can have arbitrary complexity.\n\n.. code-block:: python\n\n >>> import metacsv, numpy as np\n >>> import StringIO as io # import io for python 3\n >>> doc = io.StringIO('''\n ... ---\n ... author: A Person\n ... date: 2000-12-31\n ... variables:\n ... pop:\n ... name: Population\n ... unit: millions\n ... gdp:\n ... name: Product\n ... unit: 2005 $Bn\n ... ...\n ... region,year,pop,gdp\n ... USA,2010,309.3,13599.3\n ... USA,2011,311.7,13817.0\n ... CAN,2010,34.0,1240.0\n ... CAN,2011,34.3,1276.7\n ... ''')\n\n\n\nUsing MetaCSV-formatted files in python\n--------------------------------------------\n\n\nRead MetaCSV-formatted data into python using pandas-like syntax: \n\n.. code-block:: python\n\n >>> df = metacsv.read_csv(doc, index_col=[0,1])\n >>> df # doctest: +NORMALIZE_WHITESPACE\n \n pop gdp\n region year\n USA 2010 309.3 13599.3\n 2011 311.7 13817.0\n CAN 2010 34.0 1240.0\n 2011 34.3 1276.7\n \n Variables\n gdp:\n name Product\n unit 2005 $Bn\n pop:\n name Population\n unit millions\n Attributes\n author: A Person\n date: 2000-12-31\n\nThese properties can be transferred from one data container to another:\n\n.. code-block:: python\n\n >>> np.random.seed(1)\n >>> s = metacsv.Series(np.random.random(6))\n >>> s\n \n 0 0.417022\n 1 0.720324\n 2 0.000114\n 3 0.302333\n 4 0.146756\n 5 0.092339\n dtype: float64\n >>> s.attrs = df.attrs\n >>> s\n \n 0 0.417022\n 1 0.720324\n 2 0.000114\n 3 0.302333\n 4 0.146756\n 5 0.092339\n dtype: float64\n \n Attributes\n author: A Person\n date: 2000-12-31\n\n\nAll MetaCSV attributes, including the ``attrs`` Attribute object, can be copied, \nassigned to new objects, and deleted. Since these attributes are largely \nunstable across normal pandas data processing, it is recommended that attributes \nbe copied before data work is attempted and then reassigned before IO \nconversions.\n\n\nExporting MetaCSV data to other formats\n-----------------------------------------------\n\nCSV\n~~~~~~~~~\n\nA MetaCSV ``Series`` or ``DataFrame`` can be written as a yaml-prefixed CSV \nusing the same ``to_csv`` syntax as it's ``pandas`` counterpart:\n\n.. code-block:: python\n\n >>> df.attrs['new attribute'] = 'changed in python!'\n >>> df.to_csv('my_new_data.csv')\n\nThe resulting csv will include a yaml-formatted header with the original \nmetadata updated to include attr['new attribute'].,\n\n\npandas\n~~~~~~~~~~~~~~~\n\nThe coordinates and MetaCSV attributes can be easily stripped from a MetaCSV \nContainer:\n\n.. code-block:: python\n\n >>> df.to_pandas() # doctest: +NORMALIZE_WHITESPACE\n pop gdp\n region year\n USA 2010 309.3 13599.3\n 2011 311.7 13817.0\n CAN 2010 34.0 1240.0\n 2011 34.3 1276.7\n\n\n\nxarray/netCDF\n~~~~~~~~~~~~~~~\n\n`xArray `_ provides a pandas-like interface to \noperating on indexed ``ndarray`` data. It is modeled on the ``netCDF`` data \nstorage format used frequently in climate science, but is useful for many \napplications with higher-order data.\n\n\n\n.. code-block:: python\n\n >>> ds = df.to_xarray()\n >>> ds\n \n Dimensions: (region: 2, year: 2)\n Coordinates:\n * region (region) object 'USA' 'CAN'\n * year (year) int64 2010 2011\n Data variables:\n pop (region, year) float64 309.3 311.7 34.0 34.3\n gdp (region, year) float64 1.36e+04 1.382e+04 1.24e+03 1.277e+03\n Attributes:\n author: A Person\n date: 2000-12-31\n new attribute: changed in python!\n >>> ds.to_netcdf('my_netcdf_data.nc')\n\nPickling\n~~~~~~~~~\n\nPickling works just like pandas.\n\n.. code-block:: python\n\n >>> df.to_pickle('my_metacsv_pickle.pkl')\n >>> metacsv.read_pickle('my_metacsv_pickle.pkl')\n \n pop gdp\n region year\n USA 2010 309.3 13599.3\n 2011 311.7 13817.0\n CAN 2010 34.0 1240.0\n 2011 34.3 1276.7\n\n Variables\n gdp: OrderedDict([('name', 'Product'), ('unit', '2005 $Bn')])\n pop: OrderedDict([('name', 'Population'), ('unit', 'millions')])\n Attributes\n author: A Person\n date: 2000-12-31\n new attribute: changed in python!\n\n\n\nOthers\n~~~~~~~~~\n\nCurrently, MetaCSV only supports conversion to CSV and to netCDF through the \n``xarray`` module. However, feel free to suggest additional features and to \ncontribute your own!\n\n\n\nConversion to other types on the fly\n-----------------------------------------------\n\nSpecial conversion utilities allow you to convert any metacsv, pandas, or xarray \ncontainer or a CSV filepath into any other type in this group.\n\nAll of these conversion utilities are also methods on metacsv containers.\n\n* to_csv\n\n``to_csv`` allows you to write any container or csv file to a metacsv-formatted \ncsv file. Keyword arguments ``attrs``, ``coords``, and ``variables`` will be \nattached to the data before it is written. Any conflicts in these attributes \nwill be updated with the arguments to this function\n\n.. code-block:: python\n\n >>> import pandas as pd, numpy as np, xarray as xr, metacsv\n >>> df = pd.DataFrame(np.random.random((3,4)), columns=list('abcd'))\n >>> df\n a b c d\n 0 0.558083 0.665184 0.226173 0.339905\n 1 0.541712 0.835804 0.326078 0.179103\n 2 0.332869 0.435573 0.904612 0.823884\n\n >>> metacsv.to_csv(df, 'mycsv.csv', attrs={'author': 'my name', 'date': '2015-12-31'})\n >>> \n >>> df2 = metacsv.read_csv('mycsv.csv', index_col=[0])\n >>> df2\n \n a b c d\n 0 0.558083 0.665184 0.226173 0.339905\n 1 0.541712 0.835804 0.326078 0.179103\n 2 0.332869 0.435573 0.904612 0.823884\n\n Attributes\n author: my name\n date: 2015-12-31\n new attribute: changed in python!\n\n >>> metacsv.to_csv(df2, 'mycsv.csv', attrs={'author': 'new name'})\n >>> \n >>> metacsv.read_csv('mycsv.csv', index_col=[0])\n \n a b c d\n 0 0.558083 0.665184 0.226173 0.339905\n 1 0.541712 0.835804 0.326078 0.179103\n 2 0.332869 0.435573 0.904612 0.823884\n\n Attributes\n author: new name\n date: 2015-12-31\n new attribute: changed in python!\n\n* to_header\n\n``to_header`` allows you to write the special attributes directly to a \nmetacsv-formatted header file. The special attributes may be individually \nspecified or taken from a metacsv container. The ``header_file`` argument to \nboth ``read_csv`` and ``to_csv`` allow the creation of special header files \nwhich allow you to separate the metacsv-formatted header from the data if \ndesired.\n\nFor example, say you have a table to read into pandas\n\n.. code-block:: python\n\n >>> import metacsv, pandas as pd\n >>> pd.DataFrame(\n [['x',1,2,3],['y',4,5,6],['z',7,8,9]], columns=['index','a','b','c']).to_csv('mycsv.csv', index=None)\n >>> metacsv.read_csv('mycsv.csv')\n \n index a b c\n 0 x 1 2 3\n 1 y 4 5 6\n 2 z 7 8 9\n\nA separate header file can be created and used which can then be read in with the data:\n\n.. code-block:: python\n\n >>> metacsv.to_header('mycsv.header', attrs={'author': 'me'}, coords='index')\n >>> metacsv.read_csv('mycsv.csv', header_file='mycsv.header')\n \n a b c\n index\n x 1 2 3\n y 4 5 6\n z 7 8 9\n\n Coordinates\n * index (index) object x, y, z\n Attributes\n author: me\n\n\n* to_xarray\n\n``to_xarray`` returns any container or csv file as an xarray container. Table \ndata (CSV files and DataFrames) will create ``xarray.Dataset`` objects, while \nSeries objects will create ``xarray.DataArray`` objects. Keyword arguments \n``attrs``, ``coords``, and ``variables`` will be attached to the data before it \nis written. Any conflicts in these attributes will be updated with the arguments \nto this function.\n\n* to_dataarray\n\n``to_dataarray`` returns any container or csv file as an ``xarray.DataArray``. \nTable data (CSV files and DataFrames) will be stacked, with columns re-arranged \nas new ``xarray.Coordinates``. Keyword arguments ``attrs``, ``coords``, and \n``variables`` will be attached to the data before it is written. Any conflicts \nin these attributes will be updated with the arguments to this function.\n\n* to_dataset\n\n``to_dataarray`` returns any container or csv file as an ``xarray.DataArray``. \nTable data (CSV files and DataFrames) will be stacked, with columns re-arranged \nas new ``xarray.Coordinates``. Keyword arguments ``attrs``, ``coords``, and \n``variables`` will be attached to the data before it is written. Any conflicts \nin these attributes will be updated with the arguments to this function.\n\n* to_pandas\n\n``to_pandas`` strips special attributes and returns an ordinary ``Series`` or \n``DataFrame`` object.\n\n* to_netcdf\n\n``to_netcdf`` first converts a container or csv file to an ``xarray.Dataset`` \nusing the ``to_dataset`` function, then writes the dataset to file with the\n``xarray`` ``ds.to_netcdf`` method.\n\n.. code-block:: python\n\n >>> metacsv.to_netcdf('mycsv.csv', 'mycsv.nc', header_file='mycsv.header')\n >>> import xarray as xr\n >>> xr.open_dataset('mycsv.nc')\n \n Dimensions: (index: 3)\n Coordinates:\n * index (index) |S1 'x' 'y' 'z'\n Data variables:\n a (index) int64 1 4 7\n b (index) int64 2 5 8\n c (index) int64 3 6 9\n Attributes:\n author: me\n\nSpecial attributes\n-----------------------------------------------\n\nThe ``coords`` and ``variables`` attributes are keywords and are not simply \npassed to the MetaCSV object's ``attrs`` attribute.\n\n\nVariables\n~~~~~~~~~~~~~\n\nVariables are attributes which apply to speicific columns or data variables. In \nMetaCSV containers, variables are displayed as a separate set of attributes. On \nconversion to ``xarray``, these attributes are assigned to variable-specific \n``attrs``:\n\n.. code-block:: python\n\n >>> ds = df.to_xarray()\n >>> ds\n \n Dimensions: (index: 4)\n Coordinates:\n * index (index) int64 0 1 2 3\n Data variables:\n region (index) object 'USA' 'USA' 'CAN' 'CAN'\n year (index) int64 2010 2011 2010 2011\n pop (index) float64 309.3 311.7 34.0 34.3\n gdp (index) float64 1.36e+04 1.382e+04 1.24e+03 1.277e+03\n Attributes:\n date: 2000-12-31\n author: A Person\n\n >>> ds.pop\n \n array([ 309.3, 311.7, 34. , 34.3])\n Coordinates:\n * index (index) int64 0 1 2 3\n Attributes:\n name: Population\n unit: millions\n\nNote that at present, variables are not persistent across slicing operations.\n\n**parse_vars**\n\nVariables have a special argument to ``read_csv``: ``parse_vars`` allows parsing of one-line variable definitions in the format ``var: description [unit]``:\n\n.. code-block:: python\n\n >>> doc = io.StringIO('''\n ---\n author: A Person\n date: 2000-12-31\n variables:\n pop: Population [millions]\n gdp: Product [2005 $Bn]\n ...\n region,year,pop,gdp\n USA,2010,309.3,13599.3\n USA,2011,311.7,13817.0\n CAN,2010,34.0,1240.0\n CAN,2011,34.3,1276.7\n ''')\n\n >>> metacsv.read_csv(doc, index_col=0, parse_vars=True)\n \n year pop gdp\n region\n USA 2010 309.3 13599.3\n USA 2011 311.7 13817.0\n CAN 2010 34.0 1240.0\n CAN 2011 34.3 1276.7\n\n Variables\n gdp: {u'description': 'Product', u'unit': '2005 $Bn'}\n pop: {u'description': 'Population', u'unit': 'millions'}\n Attributes\n date: 2000-12-31\n author: A Person\n\nCoordinates\n~~~~~~~~~~~~~\n\nThe conceptual foundation of coordinates is taken from ``xarray``, where data is \ntreated as an ndarray rather than a table. If you plan to only work with the \npandas-like features of ``metacsv``, you do not really need coordinates.\n\nThat said, specifying the ``coords`` attribute in a csv results in automatic\nindex handling:\n\n.. code-block:: python\n\n >>> doc = io.StringIO('''\n ---\n author: A Person\n date: 2000-12-31\n variables:\n pop:\n name: Population\n unit: millions\n gdp:\n name: Product\n unit: 2005 $Bn\n coords:\n - region\n - year\n ...\n region,year,pop,gdp\n USA,2010,309.3,13599.3\n USA,2011,311.7,13817.0\n CAN,2010,34.0,1240.0\n CAN,2011,34.3,1276.7\n ''')\n\n >>> df = metacsv.read_csv(doc)\n >>> df\n \n pop gdp\n region year\n USA 2010 309.3 13599.3\n 2011 311.7 13817.0\n CAN 2010 34.0 1240.0\n 2011 34.3 1276.7\n\n Coordinates\n * region (region) object CAN, USA\n * year (year) int64 2010, 2011\n Variables\n gdp: OrderedDict([('name', 'Product'), ('unit', '2005 $Bn')])\n pop: OrderedDict([('name', 'Population'), ('unit', 'millions')])\n Attributes\n date: 2000-12-31\n author: A Person\n\n\nCoordinates become especially useful, however, when moving to ``xarray`` objects \nor ``netCDF`` files. The ``DataFrame`` above will have no trouble, as ``region`` \nand ``year`` are orthoganal:\n\n.. code-block:: python\n\n >>> df.to_xarray()\n \n Dimensions: (region: 2, year: 2)\n Coordinates:\n * region (region) object 'USA' 'CAN'\n * year (year) int64 2010 2011\n Data variables:\n pop (region, year) float64 309.3 311.7 34.0 34.3\n gdp (region, year) float64 1.36e+04 1.382e+04 1.24e+03 1.277e+03\n Attributes:\n date: 2000-12-31\n author: A Person\n\nThis becomes more complicated when columns in the index are not independent and \ncannot be thought of as orthogonal. In this case, you can specify ``coords`` as \na dict-like attribute either in the CSV header or as an argument to the \nconversion method:\n\n.. code-block:: python\n\n doc = io.StringIO('''\n ---\n coords:\n region:\n regname: 'region'\n continent: 'region'\n year:\n ...\n region,regname,continent,year,pop,gdp\n USA,United States,North America,2010,309.3,13599.3\n USA,United States,North America,2011,311.7,13817.0\n CAN,Canada,North America,2010,34.0,1240.0\n CAN,Canada,North America,2011,34.3,1276.7\n ''')\n\n >>> metacsv.to_xarray(doc)\n \n Dimensions: (region: 2, year: 2)\n Coordinates:\n * region (region) object 'USA' 'CAN'\n * year (year) int64 2010 2011\n regname (region) object 'United States' 'Canada'\n continent (region) object 'North America' 'North America'\n Data variables:\n pop (region, year) float64 309.3 311.7 34.0 34.3\n gdp (region, year) float64 1.36e+04 1.382e+04 1.24e+03 1.277e+03\n\nNote that the resulting ``Dataset`` is not indexed by the cartesian product of \nall four coordinates, but only by the base coordinates, indicated by the ``*``. \nWithout first setting the ``coords`` attribute this way, the resulting data \nwould have ``NaN`` values corresponding to ``(USA, Canada)`` and \n``(CAN, United States)``.\n\n\nTODO\n============\n\n* Allow automatic coersion of ``xarray.Dataset`` and ``xarray.DataArray`` \n objects to MetaCSV containers.\n\n* Extend metacsv functionality to ``Panel`` objects\n\n* Make ``coords`` and ``attrs`` persistent across slicing operations \n (try ``df['pop'].to_xarray()`` from above example and watch it \n fail...)\n\n* Improve hooks between ``pandas`` and ``metacsv``:\n\n - update ``coord`` names on ``df.index.names`` assignment\n - update ``coords`` on stack/unstack\n - update ``coords`` on \n\n* Improve parser to automatically strip trailing commas and other excel relics\n\n* Enable ``read_csv(engine='C')``... this currently does not work.\n\n* Handle attributes indexed by coord/variable names --> assign to \n coord/variable-specific ``attrs``\n\n* Let's start an issue tracker and get rid of this section!\n\n* Should we rethink \"special attribute,\" naming e.g. coords? Maybe these should \n have some special prefix like ``_coords`` when included in yaml headers to \n avoid confusion with other generic attributes...\n\n* Allow attribute assertions (e.g. ``version='>1.6.0'``) in ``read_csv`` call\n\n* Improve test coverage\n\n* Improve documentation & build readthedocs page\n\n\n\nFeature Requests\n==================\n* Create syntax for ``multi-csv`` --> ``Panel`` or combining using filename \n regex \n* Eventually? allow for on-disk manipulation of many/large files with \n dask/xarray \n* Eventually? add xml, SQL, other structured syntax language conversions\n\n\n.. _BSD: http://opensource.org/licenses/BSD-3-Clause\n.. _Documentation: http://metacsv.readthedocs.org/en/latest/\n.. _API: http://metacsv.readthedocs.org/en/latest/api.html\n\n\n\nChangelog\n=========\n\nHere you can find the recent changes to MetaCSV..\n\nversion dev\n-----------\n\nreleased Ongoing\n\nUpdated CHANGES.\n\n\nversion 0.0.1\n-------------\n\nreleased 2016-05-04\n\nFirst release on PyPi.\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/delgadom/metacsv", "keywords": "MetaCSV", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "MetaCSV", "package_url": "https://pypi.org/project/MetaCSV/", "platform": "", "project_url": "https://pypi.org/project/MetaCSV/", "project_urls": { "Homepage": "https://github.com/delgadom/metacsv" }, "release_url": "https://pypi.org/project/MetaCSV/0.1.1/", "requires_dist": [ "pandas (>=0.17)", "numpy (>=1.10)", "pyyaml (>=3.0)", "xarray (>=0.7) ; extra == 'xarray'", "netCDF4 ; extra == 'xarray'" ], "requires_python": "", "summary": "Tools for documentation-aware data reading, writing, and analysis", "version": "0.1.1" }, "last_serial": 5845046, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a3b342188d9186e3713ab9377ac10c88", "sha256": "fccf1eb5639495e0cf0fec731bd603274e603e80d0e8aec41b9a9cf7b15020e1" }, "downloads": -1, "filename": "MetaCSV-0.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a3b342188d9186e3713ab9377ac10c88", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17424, "upload_time": "2016-05-11T20:38:56", "url": "https://files.pythonhosted.org/packages/55/00/82dec6963562409e3297f33d22dec3bf28cfe11ba95f6b7c772836357827/MetaCSV-0.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac59e10fb3d9c73a5d3f808b49b32137", "sha256": "70ef40ad4caa426a198c9d39e3f8e82960f1cce8ded49207067819d6c6abadc5" }, "downloads": -1, "filename": "MetaCSV-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac59e10fb3d9c73a5d3f808b49b32137", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17387, "upload_time": "2016-05-11T20:42:01", "url": "https://files.pythonhosted.org/packages/9d/7b/473ed4fc341921a84b2bb30795f42f6c22f52bb59599201a5460948d4436/MetaCSV-0.0.1-py3-none-any.whl" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "7172bbfa0151ce5ed4b7d9e4344889e3", "sha256": "ece65592503cde0815b7f12b161ead0d4670d3ba3eb32bca733fcf1a51114f0a" }, "downloads": -1, "filename": "MetaCSV-0.0.10.zip", "has_sig": true, "md5_digest": "7172bbfa0151ce5ed4b7d9e4344889e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46369, "upload_time": "2016-06-23T00:34:36", "url": "https://files.pythonhosted.org/packages/28/72/1190d91b6b03ef7b5c8cb59e8984df3358912bd13a00fcfdca51881eb5d9/MetaCSV-0.0.10.zip" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "0d19f389a85c27e82f88d9b5608c07ce", "sha256": "f3f1c4b38ad217d1532255af8d6a91af2437d37f3be7fa7abbc1beee192096a1" }, "downloads": -1, "filename": "MetaCSV-0.0.11.zip", "has_sig": true, "md5_digest": "0d19f389a85c27e82f88d9b5608c07ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51512, "upload_time": "2016-07-01T15:51:22", "url": "https://files.pythonhosted.org/packages/04/88/3c14b514323a0805282468a2bab941e026150452c37a67ca05675f4dd9cb/MetaCSV-0.0.11.zip" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "1b23247e3a00db80289bf15bbdceefae", "sha256": "7084559b5ed776ddb8f36213c8af194e1e686bc1a23375d58bfa3dd64864639f" }, "downloads": -1, "filename": "MetaCSV-0.0.12.zip", "has_sig": true, "md5_digest": "1b23247e3a00db80289bf15bbdceefae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51563, "upload_time": "2016-07-01T16:52:15", "url": "https://files.pythonhosted.org/packages/7b/96/27e9d0b4a407bfc0e206a3467270d11d13658b107350ab87272fa6ce8759/MetaCSV-0.0.12.zip" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "db0d65de00015bb22153bd1eb921644f", "sha256": "f8266ee406a3df606db8477b36510ff705ce6e8d1ccd3c399273a63234ea46c9" }, "downloads": -1, "filename": "MetaCSV-0.0.13-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "db0d65de00015bb22153bd1eb921644f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39680, "upload_time": "2016-07-01T17:01:19", "url": "https://files.pythonhosted.org/packages/2b/b9/0195866f70816ee83e241366cfc58da94e48c6bd717b43b2bca4a2ba2b01/MetaCSV-0.0.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5b1692e6bbaa42d65ffacf617b1f76f", "sha256": "a63fe928100ded0bc1526ac99b0c37d46e7103e04425ca233a43ed64184545bc" }, "downloads": -1, "filename": "MetaCSV-0.0.13.zip", "has_sig": true, "md5_digest": "e5b1692e6bbaa42d65ffacf617b1f76f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51565, "upload_time": "2016-07-01T17:01:23", "url": "https://files.pythonhosted.org/packages/f3/ea/f625c4fa333b6f8f8bc4b1ea8767ac9b06d72dce85975ff210c727deff0c/MetaCSV-0.0.13.zip" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "41b6f652f5df1974f08bdc19d2ad335d", "sha256": "e165f8df3c2a539b4a8ddbe4ed95b5fb06f6eab02f375f6c9dce96a32d6ea8e3" }, "downloads": -1, "filename": "MetaCSV-0.0.14-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "41b6f652f5df1974f08bdc19d2ad335d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39735, "upload_time": "2016-07-14T02:58:06", "url": "https://files.pythonhosted.org/packages/3b/fa/14a2dfac86435ad5ec916c4cffffa8fc0a820f57290cf593d71690d3c5fc/MetaCSV-0.0.14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f426a490994fe0130832b5776348d472", "sha256": "8c35a99c15b28b2d024ebd16c8cbca05f48c33313cb7ed896f11ef33bb7a741c" }, "downloads": -1, "filename": "MetaCSV-0.0.14.zip", "has_sig": true, "md5_digest": "f426a490994fe0130832b5776348d472", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51620, "upload_time": "2016-07-14T02:58:10", "url": "https://files.pythonhosted.org/packages/2c/4e/b52a46da66fa1cfde52cd92ab92088e78bf5c3c8f0e9ca4d33565d1c9f32/MetaCSV-0.0.14.zip" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "db40ec3f79831fe9cdefe8c6f5bbbf25", "sha256": "9f72e8036d45fbeb3e3e4b6d39e5d4a8028129876d3fe9df521e6e6e6f15dd5d" }, "downloads": -1, "filename": "MetaCSV-0.0.15-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "db40ec3f79831fe9cdefe8c6f5bbbf25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39863, "upload_time": "2016-07-14T04:29:26", "url": "https://files.pythonhosted.org/packages/4b/e2/32fc34527d710c624f1bbef35e815ea0a76193c1818b3ac8b1897fbbbe54/MetaCSV-0.0.15-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c28608bcecec5211d80b81b6060587db", "sha256": "af48881a19de2df589455ffdf67675900504fe41ae6bd9e60040e27aed90ccb4" }, "downloads": -1, "filename": "MetaCSV-0.0.15.zip", "has_sig": true, "md5_digest": "c28608bcecec5211d80b81b6060587db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51817, "upload_time": "2016-07-14T04:29:29", "url": "https://files.pythonhosted.org/packages/ed/11/32f8a15e2af92cd7a4fd937607b6668879856ee28047edf8f0de54476844/MetaCSV-0.0.15.zip" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "9ddfd753afece436aaa244c41f69a7a2", "sha256": "9f9250577f67d99857a58b50e6bbfa3561dd8111d6e4aa5319c6a4de95af9f96" }, "downloads": -1, "filename": "MetaCSV-0.0.16-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9ddfd753afece436aaa244c41f69a7a2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40184, "upload_time": "2016-08-04T00:55:39", "url": "https://files.pythonhosted.org/packages/44/1f/4b53d18873e314d2bd75ea9caa9818f4af19a017ffb5712e4e09198f54b7/MetaCSV-0.0.16-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5260e8676d10b11f5919c72aa741e07b", "sha256": "9dd961d20dcfed1031112eb3c194d6724f9c1f381b58b20b492be7ee73f68fd3" }, "downloads": -1, "filename": "MetaCSV-0.0.16.zip", "has_sig": true, "md5_digest": "5260e8676d10b11f5919c72aa741e07b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52154, "upload_time": "2016-08-04T00:55:42", "url": "https://files.pythonhosted.org/packages/59/83/ee2503a2b4e2de8e751f0d47a2f9c3ad47d740c0b5c97cf3c7053e6ecf4f/MetaCSV-0.0.16.zip" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "42a8154e8dd790c3aa82e2f508baa1b2", "sha256": "b84ccd04d5586127a6a748cba6914b420195bd0f22ddc71adaa749c1782135c4" }, "downloads": -1, "filename": "MetaCSV-0.0.2-py2.7.egg", "has_sig": false, "md5_digest": "42a8154e8dd790c3aa82e2f508baa1b2", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 35612, "upload_time": "2016-05-13T01:23:05", "url": "https://files.pythonhosted.org/packages/03/31/7487764cdb10a44d0691fce76cc6423a97d98b03d656d7d64870ab328153/MetaCSV-0.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d0a28878b54b07477d57724d59866b5e", "sha256": "74f787bae0f7147342f7004852ed619cd10b7ed84843836c7b6c6a74539e17b1" }, "downloads": -1, "filename": "MetaCSV-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "d0a28878b54b07477d57724d59866b5e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 20339, "upload_time": "2016-05-13T01:22:58", "url": "https://files.pythonhosted.org/packages/3e/74/c77cd59212d51716a4657b9506839484660cd2514e902873eea13a1e8f17/MetaCSV-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c25f5fb5375a367666948230d362aff4", "sha256": "6dd5ff26573f7ee8c4fef66c425bc30fe1bd602c43464e94a292afd7ef1c01cd" }, "downloads": -1, "filename": "MetaCSV-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c25f5fb5375a367666948230d362aff4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20342, "upload_time": "2016-05-13T01:22:53", "url": "https://files.pythonhosted.org/packages/9a/ea/35c5830cbe54ac280489a37e7aa8a88ba19e0c47a46a6154f93ff2662c1a/MetaCSV-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e8abb19967feb076bd70929e0f5810c7", "sha256": "78775b5ebabfa93d6fc971ffb990ca8cb724fd8d30111a2696e914a63a33daa2" }, "downloads": -1, "filename": "MetaCSV-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8abb19967feb076bd70929e0f5810c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20354, "upload_time": "2016-05-13T01:50:58", "url": "https://files.pythonhosted.org/packages/a1/4c/0a74253cba955d57e707c23814f5c7eb38a5e8d2d4f17e92b2e5238dc0be/MetaCSV-0.0.3-py2.py3-none-any.whl" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7bfaf64ae6ddc810c1aa0781b5de5b8d", "sha256": "da5ad8a44b8ba1de7aa7a90d514764998d2cfa333b3057a28423e763e691dd03" }, "downloads": -1, "filename": "MetaCSV-0.0.4.win-amd64.zip", "has_sig": false, "md5_digest": "7bfaf64ae6ddc810c1aa0781b5de5b8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37413, "upload_time": "2016-05-17T03:17:35", "url": "https://files.pythonhosted.org/packages/80/ae/597ec740344475aaeddbc3367d4d763c5beca69d7899d719f74aaa03b0a1/MetaCSV-0.0.4.win-amd64.zip" }, { "comment_text": "", "digests": { "md5": "0664b1f8a58596b7785733f9689a838e", "sha256": "ea089d7920dddbfd37b9d860ba531b72a77a889903df4676171c37f8ad1991f0" }, "downloads": -1, "filename": "MetaCSV-0.0.4.zip", "has_sig": false, "md5_digest": "0664b1f8a58596b7785733f9689a838e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28463, "upload_time": "2016-05-17T03:17:41", "url": "https://files.pythonhosted.org/packages/f8/81/e8fb593b9538149a404fbc04a466108f47d1bfd1b58c2e8cc4bb2bf61998/MetaCSV-0.0.4.zip" } ], "0.0.7": [], "0.0.8": [ { "comment_text": "", "digests": { "md5": "40de5702a6e645bc50939495d4462882", "sha256": "9d6c9dca2f2fd1324e3b20eaee85cb061ef28733aa091e2424217b1ad9f4d38f" }, "downloads": -1, "filename": "MetaCSV-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "40de5702a6e645bc50939495d4462882", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24979, "upload_time": "2016-06-17T00:33:49", "url": "https://files.pythonhosted.org/packages/e5/db/2fa0be2d2dd369d30ceecfa802009409a8c10c4ed8eacdc39446cf459def/MetaCSV-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb5e12a06a2a10c6d52e068e538f4275", "sha256": "c206d14ef51b2e239a074acb4cc5b87d6ee69127c9d21d4ea8bd9a1fa5420d41" }, "downloads": -1, "filename": "MetaCSV-0.0.8.zip", "has_sig": false, "md5_digest": "bb5e12a06a2a10c6d52e068e538f4275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33837, "upload_time": "2016-06-17T00:33:53", "url": "https://files.pythonhosted.org/packages/d0/94/7fba268181ea23dded56d366ef0ea7df807967133af514e66201e4601600/MetaCSV-0.0.8.zip" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "f85912fd6edcde4b3c858fdd9272720d", "sha256": "a94337e615e177b56d4cb8d5a9def5bf899967dfa95995b744dfc4b44d6ece25" }, "downloads": -1, "filename": "MetaCSV-0.0.9-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "f85912fd6edcde4b3c858fdd9272720d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34568, "upload_time": "2016-06-22T03:07:52", "url": "https://files.pythonhosted.org/packages/60/1a/577baea3ab1f9c880e228e33c7d435c4559342f935f8982b31da28c3d12b/MetaCSV-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed9bf366f1d998708a61d12b2615217", "sha256": "ed0fd5768d5dae5c49d4db47245c6153d06c1fff704015de0db9cd7c5418da80" }, "downloads": -1, "filename": "MetaCSV-0.0.9.zip", "has_sig": true, "md5_digest": "fed9bf366f1d998708a61d12b2615217", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45771, "upload_time": "2016-06-22T03:07:57", "url": "https://files.pythonhosted.org/packages/9d/51/16192981a8bf7011a347d642d672cd064f453602b809eebeb63ad84e77db/MetaCSV-0.0.9.zip" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "29f13911daab3a681742c24a13c02ef9", "sha256": "53738e1109fb6586d3225983d97ba8ee79e95a769fb53b4d5c718e5681261295" }, "downloads": -1, "filename": "MetaCSV-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "29f13911daab3a681742c24a13c02ef9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33596, "upload_time": "2017-05-18T05:13:38", "url": "https://files.pythonhosted.org/packages/b3/fe/dfb637993abfffebecd0287346bde6164ced3afcccc4d985be3295070d11/MetaCSV-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab4d3984efb3d79a11a83588384c9324", "sha256": "c3c83c5e496e9e02332a8674a08d6965522d8d97095a1461b7f627f4532265d6" }, "downloads": -1, "filename": "MetaCSV-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ab4d3984efb3d79a11a83588384c9324", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31542, "upload_time": "2017-05-18T05:13:41", "url": "https://files.pythonhosted.org/packages/8e/e6/9b4232f31ddba17f3795404907fb66bd11b2675277e79cafd93e50d29c04/MetaCSV-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d15fa9b494e48bbe52c240bbc52a10bb", "sha256": "e7eeab0cc7330ad8fb9a2bf353c3b9f2dd1f24556c9ea73923fd5125a3bb9ef0" }, "downloads": -1, "filename": "MetaCSV-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d15fa9b494e48bbe52c240bbc52a10bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27847, "upload_time": "2019-09-18T00:45:03", "url": "https://files.pythonhosted.org/packages/b4/88/48299b7ad9251c0c6ac7c8736d34e50daa288f5930cce61cec1080bdf5c2/MetaCSV-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d033dd5b4eb1a39ababee58ecca8f4a", "sha256": "b946952189ca6b1016409091d78b42b6b17a4a303d5b0ed36174c72a16527925" }, "downloads": -1, "filename": "MetaCSV-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6d033dd5b4eb1a39ababee58ecca8f4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26679, "upload_time": "2019-09-18T00:45:06", "url": "https://files.pythonhosted.org/packages/62/ce/36d01f4150f7ad7d9f3cbe09aa67df660ecb77bd524183a4e045bd1d7bac/MetaCSV-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d15fa9b494e48bbe52c240bbc52a10bb", "sha256": "e7eeab0cc7330ad8fb9a2bf353c3b9f2dd1f24556c9ea73923fd5125a3bb9ef0" }, "downloads": -1, "filename": "MetaCSV-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d15fa9b494e48bbe52c240bbc52a10bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27847, "upload_time": "2019-09-18T00:45:03", "url": "https://files.pythonhosted.org/packages/b4/88/48299b7ad9251c0c6ac7c8736d34e50daa288f5930cce61cec1080bdf5c2/MetaCSV-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d033dd5b4eb1a39ababee58ecca8f4a", "sha256": "b946952189ca6b1016409091d78b42b6b17a4a303d5b0ed36174c72a16527925" }, "downloads": -1, "filename": "MetaCSV-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6d033dd5b4eb1a39ababee58ecca8f4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26679, "upload_time": "2019-09-18T00:45:06", "url": "https://files.pythonhosted.org/packages/62/ce/36d01f4150f7ad7d9f3cbe09aa67df660ecb77bd524183a4e045bd1d7bac/MetaCSV-0.1.1.tar.gz" } ] }