rdata


Namerdata JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryRead R datasets from Python.
upload_time2025-08-15 17:17:10
maintainerNone
docs_urlNone
authorCarlos Ramos Carreño, Tuomas Rossi
requires_python>=3.11
licenseMIT License Copyright (c) 2018 Rdata developers. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords rdata r dataset
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            rdata
=====

|build-status| |docs| |coverage| |repostatus| |versions| |pypi| |conda| |zenodo| |pyOpenSci| |joss|

A Python library for R datasets.

..
	Github does not support include in README for dubious security reasons, so
	we copy-paste instead. Also Github does not understand Sphinx directives.
	.. include:: docs/index.rst
	.. include:: docs/usage.rst

The package rdata offers a lightweight way in Python to import and export R datasets/objects stored
in the ".rda" and ".rds" formats.
Its main advantages are:

- It is a pure Python implementation, with no dependencies on the R language or
  related libraries.
  Thus, it can be used anywhere where Python is supported, including the web
  using `Pyodide <https://pyodide.org/>`__.
- It attempts to support all objects that can be meaningfully translated between R and Python.
  As opposed to other solutions, you are no limited to import dataframes or
  data with a particular structure.
- It allows users to easily customize the conversion of R classes to Python
  ones and vice versa.
  Does your data use custom R classes?
  Worry no longer, as it is possible to define custom conversions to the Python
  classes of your choosing.
- It has a permissive license (MIT). As opposed to other packages that depend
  on R libraries and thus need to adhere to the GPL license, you can use rdata
  as a dependency on MIT, BSD or even closed source projects.

Installation
============

Installing a stable release
---------------------------

The rdata package is on PyPi and can be installed using :code:`pip`:

.. code::

   pip install rdata

The package is also available for :code:`conda` using the :code:`conda-forge` channel:

.. code::

   conda install -c conda-forge rdata

Installing a develop version
----------------------------

The current version from the develop branch can be installed as

.. code::

   pip install git+https://github.com/vnmabus/rdata.git@develop

Documentation
=============

The documentation of rdata is in
`ReadTheDocs <https://rdata.readthedocs.io/>`__.

Examples
========

Examples of use are available in
`ReadTheDocs <https://rdata.readthedocs.io/en/stable/auto_examples/>`__.

Citing rdata
============

Please, if you find this software useful in your work, reference it citing the following paper:

.. code-block::

  @article{ramos-carreno+rossi_2024_rdata,
      author = {Ramos-Carreño, Carlos and Rossi, Tuomas},
      doi = {10.21105/joss.07540},
      journal = {Journal of Open Source Software},
      month = dec,
      number = {104},
      pages = {1--4},
      title = {{rdata: A Python library for R datasets}},
      url = {https://joss.theoj.org/papers/10.21105/joss.07540#},
      volume = {9},
      year = {2024}
  }

You can additionally cite the software repository itself using:

.. code-block::

  @misc{ramos-carreno++_2024_rdata-repo,
    author = {The rdata developers},
    doi = {10.5281/zenodo.6382237},
    month = dec,
    title = {rdata: A Python library for R datasets},
    url = {https://github.com/vnmabus/rdata},
    year = {2024}
  }

If you want to reference a particular version for reproducibility, check the version-specific DOIs available in Zenodo.

Usage
=====

Read an R dataset
-----------------

The common way of reading an rds file is:

.. code:: python

    import rdata

    converted = rdata.read_rds(rdata.TESTDATA_PATH / "test_dataframe.rds")
    print(converted)

which returns the read dataframe:

.. code:: none

      class  value
    1     a      1
    2     b      2
    3     b      3

The analog rda file can be read in a similar way:

.. code:: python

    import rdata

    converted = rdata.read_rda(rdata.TESTDATA_PATH / "test_dataframe.rda")
    print(converted)

which returns a dictionary mapping the variable name defined in the file (:code:`test_dataframe`) to the dataframe:

.. code:: none

    {'test_dataframe':   class  value
    1     a      1
    2     b      2
    3     b      3}

Under the hood, these reading functions are equivalent to the following two-step code:

.. code:: python

    import rdata

    parsed = rdata.parser.parse_file(rdata.TESTDATA_PATH / "test_dataframe.rda")
    converted = rdata.conversion.convert(parsed)
    print(converted)

This consists of two steps:

#. First, the file is parsed using the function
   `rdata.parser.parse_file <https://rdata.readthedocs.io/en/latest/modules/rdata.parser.parse_file.html>`__.
   This provides a literal description of the
   file contents as a hierarchy of Python objects representing the basic R
   objects. This step is unambiguous and always the same.
#. Then, each object must be converted to an appropriate Python object. In this
   step there are several choices on which Python type is the most appropriate
   as the conversion for a given R object. Thus, we provide a default
   `rdata.conversion.convert <https://rdata.readthedocs.io/en/latest/modules/rdata.conversion.convert.html>`__
   routine, which tries to select Python
   objects that preserve most information of the original R object. For custom
   R classes, it is also possible to specify conversion routines to Python
   objects as exemplified in
   `the documentation <https://rdata.readthedocs.io/en/latest/usage.html#converting>`__.

Write an R dataset
------------------

The common way of writing data to an rds file is:

.. code:: python

    import pandas as pd
    import rdata

    df = pd.DataFrame({"class": pd.Categorical(["a", "b", "b"]), "value": [1, 2, 3]})
    print(df)

    rdata.write_rds("data.rds", df)

which writes the dataframe to file :code:`data.rds`:

.. code:: none

      class  value
    0     a      1
    1     b      2
    2     b      3

Similarly, the dataframe can be written to an rda file with a given variable name:

.. code:: python

    import pandas as pd
    import rdata

    df = pd.DataFrame({"class": pd.Categorical(["a", "b", "b"]), "value": [1, 2, 3]})
    data = {"my_dataframe": df}
    print(data)

    rdata.write_rda("data.rda", data)

which writes the name-dataframe dictionary to file :code:`data.rda`:

.. code:: none

    {'my_dataframe':   class  value
    0     a      1
    1     b      2
    2     b      3}

Under the hood, these writing functions are equivalent to the following two-step code:

.. code:: python

    import pandas as pd
    import rdata

    df = pd.DataFrame({"class": pd.Categorical(["a", "b", "b"]), "value": [1, 2, 3]})
    data = {"my_dataframe": df}

    r_data = rdata.conversion.convert_python_to_r_data(data, file_type="rda")
    rdata.unparser.unparse_file("data.rda", r_data, file_type="rda")

This consists of two steps (reverse to reading):

#. First, each Python object is converted to an appropriate R object.
   Like in reading, there are several choices, and the default
   `rdata.conversion.convert_python_to_r_data <https://rdata.readthedocs.io/en/latest/modules/rdata.conversion.convert_python_to_r_data.html>`__.
   routine tries to select
   R objects that preserve most information of the original Python object.
   For Python classes, it is also possible to specify custom conversion routines
   to R classes as exemplified in
   `the documentation <https://rdata.readthedocs.io/en/latest/usage.html#converting>`__.
#. Then, the created RData representation is unparsed to a file using the function
   `rdata.unparser.unparse_file <https://rdata.readthedocs.io/en/latest/modules/rdata.unparser.unparse_file.html>`__.


Additional examples
===================

Additional examples illustrating the functionalities of this package can be
found in the
`ReadTheDocs documentation <https://rdata.readthedocs.io/en/latest/auto_examples/index.html>`__.


.. |build-status| image:: https://github.com/vnmabus/rdata/actions/workflows/main.yml/badge.svg?branch=master
    :alt: build status
    :target: https://github.com/vnmabus/rdata/actions/workflows/main.yml

.. |docs| image:: https://readthedocs.org/projects/rdata/badge/?version=latest
    :alt: Documentation Status
    :target: https://rdata.readthedocs.io/en/latest/?badge=latest

.. |coverage| image:: http://codecov.io/github/vnmabus/rdata/coverage.svg?branch=develop
    :alt: Coverage Status
    :target: https://codecov.io/gh/vnmabus/rdata/branch/develop

.. |repostatus| image:: https://www.repostatus.org/badges/latest/active.svg
   :alt: Project Status: Active – The project has reached a stable, usable state and is being actively developed.
   :target: https://www.repostatus.org/#active

.. |versions| image:: https://img.shields.io/pypi/pyversions/rdata
   :alt: PyPI - Python Version

.. |pypi| image:: https://badge.fury.io/py/rdata.svg
    :alt: Pypi version
    :target: https://pypi.python.org/pypi/rdata/

.. |conda| image:: https://anaconda.org/conda-forge/rdata/badges/version.svg
    :alt: Conda version
    :target: https://anaconda.org/conda-forge/rdata

.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6382237.svg
    :alt: Zenodo DOI
    :target: https://doi.org/10.5281/zenodo.6382237

.. |pyOpenSci| image:: https://tinyurl.com/y22nb8up
    :alt: pyOpenSci: Peer reviewed
    :target: https://github.com/pyOpenSci/software-submission/issues/144

.. |joss| image:: https://joss.theoj.org/papers/10.21105/joss.07540/status.svg
   :target: https://doi.org/10.21105/joss.07540

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rdata",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": "Carlos Ramos Carre\u00f1o <vnmabus@gmail.com>",
    "keywords": "rdata, r, dataset",
    "author": "Carlos Ramos Carre\u00f1o, Tuomas Rossi",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/5b/e5/c5626257359fde4662f9c2f658bcb37873ffad1490c8991640a361b8cf8e/rdata-1.0.0.tar.gz",
    "platform": null,
    "description": "rdata\n=====\n\n|build-status| |docs| |coverage| |repostatus| |versions| |pypi| |conda| |zenodo| |pyOpenSci| |joss|\n\nA Python library for R datasets.\n\n..\n\tGithub does not support include in README for dubious security reasons, so\n\twe copy-paste instead. Also Github does not understand Sphinx directives.\n\t.. include:: docs/index.rst\n\t.. include:: docs/usage.rst\n\nThe package rdata offers a lightweight way in Python to import and export R datasets/objects stored\nin the \".rda\" and \".rds\" formats.\nIts main advantages are:\n\n- It is a pure Python implementation, with no dependencies on the R language or\n  related libraries.\n  Thus, it can be used anywhere where Python is supported, including the web\n  using `Pyodide <https://pyodide.org/>`__.\n- It attempts to support all objects that can be meaningfully translated between R and Python.\n  As opposed to other solutions, you are no limited to import dataframes or\n  data with a particular structure.\n- It allows users to easily customize the conversion of R classes to Python\n  ones and vice versa.\n  Does your data use custom R classes?\n  Worry no longer, as it is possible to define custom conversions to the Python\n  classes of your choosing.\n- It has a permissive license (MIT). As opposed to other packages that depend\n  on R libraries and thus need to adhere to the GPL license, you can use rdata\n  as a dependency on MIT, BSD or even closed source projects.\n\nInstallation\n============\n\nInstalling a stable release\n---------------------------\n\nThe rdata package is on PyPi and can be installed using :code:`pip`:\n\n.. code::\n\n   pip install rdata\n\nThe package is also available for :code:`conda` using the :code:`conda-forge` channel:\n\n.. code::\n\n   conda install -c conda-forge rdata\n\nInstalling a develop version\n----------------------------\n\nThe current version from the develop branch can be installed as\n\n.. code::\n\n   pip install git+https://github.com/vnmabus/rdata.git@develop\n\nDocumentation\n=============\n\nThe documentation of rdata is in\n`ReadTheDocs <https://rdata.readthedocs.io/>`__.\n\nExamples\n========\n\nExamples of use are available in\n`ReadTheDocs <https://rdata.readthedocs.io/en/stable/auto_examples/>`__.\n\nCiting rdata\n============\n\nPlease, if you find this software useful in your work, reference it citing the following paper:\n\n.. code-block::\n\n  @article{ramos-carreno+rossi_2024_rdata,\n      author = {Ramos-Carre\u00f1o, Carlos and Rossi, Tuomas},\n      doi = {10.21105/joss.07540},\n      journal = {Journal of Open Source Software},\n      month = dec,\n      number = {104},\n      pages = {1--4},\n      title = {{rdata: A Python library for R datasets}},\n      url = {https://joss.theoj.org/papers/10.21105/joss.07540#},\n      volume = {9},\n      year = {2024}\n  }\n\nYou can additionally cite the software repository itself using:\n\n.. code-block::\n\n  @misc{ramos-carreno++_2024_rdata-repo,\n    author = {The rdata developers},\n    doi = {10.5281/zenodo.6382237},\n    month = dec,\n    title = {rdata: A Python library for R datasets},\n    url = {https://github.com/vnmabus/rdata},\n    year = {2024}\n  }\n\nIf you want to reference a particular version for reproducibility, check the version-specific DOIs available in Zenodo.\n\nUsage\n=====\n\nRead an R dataset\n-----------------\n\nThe common way of reading an rds file is:\n\n.. code:: python\n\n    import rdata\n\n    converted = rdata.read_rds(rdata.TESTDATA_PATH / \"test_dataframe.rds\")\n    print(converted)\n\nwhich returns the read dataframe:\n\n.. code:: none\n\n      class  value\n    1     a      1\n    2     b      2\n    3     b      3\n\nThe analog rda file can be read in a similar way:\n\n.. code:: python\n\n    import rdata\n\n    converted = rdata.read_rda(rdata.TESTDATA_PATH / \"test_dataframe.rda\")\n    print(converted)\n\nwhich returns a dictionary mapping the variable name defined in the file (:code:`test_dataframe`) to the dataframe:\n\n.. code:: none\n\n    {'test_dataframe':   class  value\n    1     a      1\n    2     b      2\n    3     b      3}\n\nUnder the hood, these reading functions are equivalent to the following two-step code:\n\n.. code:: python\n\n    import rdata\n\n    parsed = rdata.parser.parse_file(rdata.TESTDATA_PATH / \"test_dataframe.rda\")\n    converted = rdata.conversion.convert(parsed)\n    print(converted)\n\nThis consists of two steps:\n\n#. First, the file is parsed using the function\n   `rdata.parser.parse_file <https://rdata.readthedocs.io/en/latest/modules/rdata.parser.parse_file.html>`__.\n   This provides a literal description of the\n   file contents as a hierarchy of Python objects representing the basic R\n   objects. This step is unambiguous and always the same.\n#. Then, each object must be converted to an appropriate Python object. In this\n   step there are several choices on which Python type is the most appropriate\n   as the conversion for a given R object. Thus, we provide a default\n   `rdata.conversion.convert <https://rdata.readthedocs.io/en/latest/modules/rdata.conversion.convert.html>`__\n   routine, which tries to select Python\n   objects that preserve most information of the original R object. For custom\n   R classes, it is also possible to specify conversion routines to Python\n   objects as exemplified in\n   `the documentation <https://rdata.readthedocs.io/en/latest/usage.html#converting>`__.\n\nWrite an R dataset\n------------------\n\nThe common way of writing data to an rds file is:\n\n.. code:: python\n\n    import pandas as pd\n    import rdata\n\n    df = pd.DataFrame({\"class\": pd.Categorical([\"a\", \"b\", \"b\"]), \"value\": [1, 2, 3]})\n    print(df)\n\n    rdata.write_rds(\"data.rds\", df)\n\nwhich writes the dataframe to file :code:`data.rds`:\n\n.. code:: none\n\n      class  value\n    0     a      1\n    1     b      2\n    2     b      3\n\nSimilarly, the dataframe can be written to an rda file with a given variable name:\n\n.. code:: python\n\n    import pandas as pd\n    import rdata\n\n    df = pd.DataFrame({\"class\": pd.Categorical([\"a\", \"b\", \"b\"]), \"value\": [1, 2, 3]})\n    data = {\"my_dataframe\": df}\n    print(data)\n\n    rdata.write_rda(\"data.rda\", data)\n\nwhich writes the name-dataframe dictionary to file :code:`data.rda`:\n\n.. code:: none\n\n    {'my_dataframe':   class  value\n    0     a      1\n    1     b      2\n    2     b      3}\n\nUnder the hood, these writing functions are equivalent to the following two-step code:\n\n.. code:: python\n\n    import pandas as pd\n    import rdata\n\n    df = pd.DataFrame({\"class\": pd.Categorical([\"a\", \"b\", \"b\"]), \"value\": [1, 2, 3]})\n    data = {\"my_dataframe\": df}\n\n    r_data = rdata.conversion.convert_python_to_r_data(data, file_type=\"rda\")\n    rdata.unparser.unparse_file(\"data.rda\", r_data, file_type=\"rda\")\n\nThis consists of two steps (reverse to reading):\n\n#. First, each Python object is converted to an appropriate R object.\n   Like in reading, there are several choices, and the default\n   `rdata.conversion.convert_python_to_r_data <https://rdata.readthedocs.io/en/latest/modules/rdata.conversion.convert_python_to_r_data.html>`__.\n   routine tries to select\n   R objects that preserve most information of the original Python object.\n   For Python classes, it is also possible to specify custom conversion routines\n   to R classes as exemplified in\n   `the documentation <https://rdata.readthedocs.io/en/latest/usage.html#converting>`__.\n#. Then, the created RData representation is unparsed to a file using the function\n   `rdata.unparser.unparse_file <https://rdata.readthedocs.io/en/latest/modules/rdata.unparser.unparse_file.html>`__.\n\n\nAdditional examples\n===================\n\nAdditional examples illustrating the functionalities of this package can be\nfound in the\n`ReadTheDocs documentation <https://rdata.readthedocs.io/en/latest/auto_examples/index.html>`__.\n\n\n.. |build-status| image:: https://github.com/vnmabus/rdata/actions/workflows/main.yml/badge.svg?branch=master\n    :alt: build status\n    :target: https://github.com/vnmabus/rdata/actions/workflows/main.yml\n\n.. |docs| image:: https://readthedocs.org/projects/rdata/badge/?version=latest\n    :alt: Documentation Status\n    :target: https://rdata.readthedocs.io/en/latest/?badge=latest\n\n.. |coverage| image:: http://codecov.io/github/vnmabus/rdata/coverage.svg?branch=develop\n    :alt: Coverage Status\n    :target: https://codecov.io/gh/vnmabus/rdata/branch/develop\n\n.. |repostatus| image:: https://www.repostatus.org/badges/latest/active.svg\n   :alt: Project Status: Active \u2013 The project has reached a stable, usable state and is being actively developed.\n   :target: https://www.repostatus.org/#active\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/rdata\n   :alt: PyPI - Python Version\n\n.. |pypi| image:: https://badge.fury.io/py/rdata.svg\n    :alt: Pypi version\n    :target: https://pypi.python.org/pypi/rdata/\n\n.. |conda| image:: https://anaconda.org/conda-forge/rdata/badges/version.svg\n    :alt: Conda version\n    :target: https://anaconda.org/conda-forge/rdata\n\n.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6382237.svg\n    :alt: Zenodo DOI\n    :target: https://doi.org/10.5281/zenodo.6382237\n\n.. |pyOpenSci| image:: https://tinyurl.com/y22nb8up\n    :alt: pyOpenSci: Peer reviewed\n    :target: https://github.com/pyOpenSci/software-submission/issues/144\n\n.. |joss| image:: https://joss.theoj.org/papers/10.21105/joss.07540/status.svg\n   :target: https://doi.org/10.21105/joss.07540\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2018 Rdata developers.\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "Read R datasets from Python.",
    "version": "1.0.0",
    "project_urls": {
        "documentation": "https://rdata.readthedocs.io",
        "homepage": "https://github.com/vnmabus/rdata",
        "repository": "https://github.com/vnmabus/rdata"
    },
    "split_keywords": [
        "rdata",
        " r",
        " dataset"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "29b6aec7624eb1db90e58b7fa34ab6491ee06385020bbb9598d4b8a28051da81",
                "md5": "7d5792fb721dbc54d29199e16fe311ad",
                "sha256": "b671e31676e158dc215297595d5085aee1674b91be3c26e38638ca056167d402"
            },
            "downloads": -1,
            "filename": "rdata-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7d5792fb721dbc54d29199e16fe311ad",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 72291,
            "upload_time": "2025-08-15T17:17:09",
            "upload_time_iso_8601": "2025-08-15T17:17:09.404040Z",
            "url": "https://files.pythonhosted.org/packages/29/b6/aec7624eb1db90e58b7fa34ab6491ee06385020bbb9598d4b8a28051da81/rdata-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5be5c5626257359fde4662f9c2f658bcb37873ffad1490c8991640a361b8cf8e",
                "md5": "95547e50a29af202706f76ecc66709fc",
                "sha256": "d924d7657c9eeaee4b86a0ae87999f5beb0070ed47bd491c85bc79ee9644596d"
            },
            "downloads": -1,
            "filename": "rdata-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "95547e50a29af202706f76ecc66709fc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 56618,
            "upload_time": "2025-08-15T17:17:10",
            "upload_time_iso_8601": "2025-08-15T17:17:10.832758Z",
            "url": "https://files.pythonhosted.org/packages/5b/e5/c5626257359fde4662f9c2f658bcb37873ffad1490c8991640a361b8cf8e/rdata-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-15 17:17:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "vnmabus",
    "github_project": "rdata",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rdata"
}
        
Elapsed time: 3.84883s