rocraters


Namerocraters JSON
Version 0.4.5 PyPI version JSON
download
home_pageNone
SummaryLightweight Python library for RO-Crate manipulation implemented in Rust
upload_time2025-01-27 10:43:58
maintainerNone
docs_urlNone
authorMatt Burridge <m.burridge1@newcastle.ac.uk>
requires_python>=3.10
licenseApache-2.0
keywords ro-crate rocrate research object rocraters
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Overview 

rocraters is a python library that is built upon a rust backend for interfacing with [RO-Crates](https://www.researchobject.org/ro-crate/1.1/). 
This implementation was specifically created to address the challenges of data 
handling on automated robotic systems within an automated synthetic biology lab,
however it's noted that this could have more general applicability to other environments.

It's aim is to provide a robust, portable and scalable solution to dealing with 
RO-Crates within the varying software environments of a synthetic biology lab stack.
It's designed to be maximally flexible with minimal onboarding, allowing you to 
incorprate it into scrpits/ data pipelines as easily as possible. 
This also relies on you to have an understanding of the structure of an RO-Crate, but focuses more on the fact that some metadata is better than no metadata. 


*This is not the go-to python libary for RO-Crate interfacing, 
please see [ro-crate-py](https://github.com/ResearchObject/ro-crate-py) for a 
full python implementation.*

# Build 

Built using PyO3 and maturin. Recommended to setup python venv, then install maturin (and remember maturin[patchelf])

# Installation 

```bash
pip install -i https://test.pypi.org/simple/ rocraters
```

# Basic usage 

The RO-Crate specification defines an RO-Crate as a JSON-LD file, consisting of a context and a graph. As such, in python it is a dictionary containing a "context" key, with some form of vocab context (default is the RO-Crate context) and a "graph" key, which contains a list of json objects (dictionaries).

To create an empty RO-Crate, you need to do the following: 
```python
from rocraters import PyRoCrateContext, PyRoCrate

# Define context 
context = PyRoCrateContext.from_string(" https://w3id.org/ro/crate/1.1/context")

# Initialise empty crate 
crate = PyRoCrate(context)

# For an easy start, you can make a default crate!
default_crate = PyRoCrate.new_default()
```

Now, there are 4 primary objects (dictionaries) that can be added to the crate:
1. Metadata descriptor (only 1 per crate)
2. Root data entity (only 1 per crate)
3. Data entity (zero - many)
4. Contextual entity (zero - many)

These are all based upon the specification. 

To populate the basic crate, with the essential keys to conform to specification: 

```python 
# Continuation of the above examples 
# Metadata descriptor 
descriptor = {
        "type": "CreativeWork",
        "id": "ro-crate-metadata.json",
        "conformsTo": {"id": "https://w3id.org/ro/crate/1.1"},
        "about": {"id": "./"}
}
# Root data entity 
root =  {
    "id": "./",
    "type": "Dataset",
    "datePublished": "2017",
    "license": {"id": "https://creativecommons.org/licenses/by-nc-sa/3.0/au/"}
}
# Data entity 
data = {
    "id": "data_file.txt",
    "type": "Dataset"
}
# Contextual entity 
contextual = {
    "id": "#JohnDoe",
    "type": "Person",
}

# Update the RO-Crate object 
crate.update_descriptor(descriptor)
crate.update_root(root)
crate.update_data(data)
crate.update_contextual(contextual)
```

To then write the crate to a `ro-crate-metadata.json` file in the current working directory:
```python
# Continuation of the above examples
# Write crate 
crate.write()
```

To then read a `ro-crate-metadata.json` file and load it in as a structured object:
```python 
# New example
from rocraters import read

# Read RO-Crate at specified path 
crate = read("ro-crate-metadata.json", True)
```

To zip the folder and all contained directories within the `ro-crate-metadata.json` directory:
```python
# new example 
from rocraters import zip

zip("ro-crate-metadata.json", True)
```

# Modifying a RO-Crate 

As per the libraries purpose, modification, ie the deletion, update and addition of entites is intended to be as simple as possible, whilst ensuring minimal conformance:

```python
# Example based upon previously made crate
from rocraters import read

crate = read("ro-crate-metadata.json", True) 

# Update the data entity and make modification 
data_target = crate.get_entity("data_file.txt")
data_target["description"] = "A text file dataset containing information"

# Update the contextual entity and make modification
contextual_target = crate.get_entity("#JohnDoe")
contextual_target.update({"id" : "#JaneDoe"})
crate.update_contextual(contextual_target)

# To delete a key:value 
data_target.pop("description")

# To delete an entity - this immediately updates the crate object
contextual_target.delete_entity("#JaneDoe")

# We then update the crate the same way we make it
# The ID will be used to serach the crate and overwrites the object with an indentical "id" key
crate.update_data(data_target)
crate.write()
```

# Custom compilation 

PyO3 is used to handle python bindings. Maturin is used as the build tool.



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rocraters",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "ro-crate, rocrate, research object, rocraters",
    "author": "Matt Burridge <m.burridge1@newcastle.ac.uk>",
    "author_email": "Matt Burridge <m.burridge1@newcastle.ac.uk>",
    "download_url": "https://files.pythonhosted.org/packages/48/4b/58d38f08e34d1769d9e6b764a07f36386a85ec52654ed610f6fc201f24b1/rocraters-0.4.5.tar.gz",
    "platform": null,
    "description": "# Overview \n\nrocraters is a python library that is built upon a rust backend for interfacing with [RO-Crates](https://www.researchobject.org/ro-crate/1.1/). \nThis implementation was specifically created to address the challenges of data \nhandling on automated robotic systems within an automated synthetic biology lab,\nhowever it's noted that this could have more general applicability to other environments.\n\nIt's aim is to provide a robust, portable and scalable solution to dealing with \nRO-Crates within the varying software environments of a synthetic biology lab stack.\nIt's designed to be maximally flexible with minimal onboarding, allowing you to \nincorprate it into scrpits/ data pipelines as easily as possible. \nThis also relies on you to have an understanding of the structure of an RO-Crate, but focuses more on the fact that some metadata is better than no metadata. \n\n\n*This is not the go-to python libary for RO-Crate interfacing, \nplease see [ro-crate-py](https://github.com/ResearchObject/ro-crate-py) for a \nfull python implementation.*\n\n# Build \n\nBuilt using PyO3 and maturin. Recommended to setup python venv, then install maturin (and remember maturin[patchelf])\n\n# Installation \n\n```bash\npip install -i https://test.pypi.org/simple/ rocraters\n```\n\n# Basic usage \n\nThe RO-Crate specification defines an RO-Crate as a JSON-LD file, consisting of a context and a graph. As such, in python it is a dictionary containing a \"context\" key, with some form of vocab context (default is the RO-Crate context) and a \"graph\" key, which contains a list of json objects (dictionaries).\n\nTo create an empty RO-Crate, you need to do the following: \n```python\nfrom rocraters import PyRoCrateContext, PyRoCrate\n\n# Define context \ncontext = PyRoCrateContext.from_string(\" https://w3id.org/ro/crate/1.1/context\")\n\n# Initialise empty crate \ncrate = PyRoCrate(context)\n\n# For an easy start, you can make a default crate!\ndefault_crate = PyRoCrate.new_default()\n```\n\nNow, there are 4 primary objects (dictionaries) that can be added to the crate:\n1. Metadata descriptor (only 1 per crate)\n2. Root data entity (only 1 per crate)\n3. Data entity (zero - many)\n4. Contextual entity (zero - many)\n\nThese are all based upon the specification. \n\nTo populate the basic crate, with the essential keys to conform to specification: \n\n```python \n# Continuation of the above examples \n# Metadata descriptor \ndescriptor = {\n        \"type\": \"CreativeWork\",\n        \"id\": \"ro-crate-metadata.json\",\n        \"conformsTo\": {\"id\": \"https://w3id.org/ro/crate/1.1\"},\n        \"about\": {\"id\": \"./\"}\n}\n# Root data entity \nroot =  {\n    \"id\": \"./\",\n    \"type\": \"Dataset\",\n    \"datePublished\": \"2017\",\n    \"license\": {\"id\": \"https://creativecommons.org/licenses/by-nc-sa/3.0/au/\"}\n}\n# Data entity \ndata = {\n    \"id\": \"data_file.txt\",\n    \"type\": \"Dataset\"\n}\n# Contextual entity \ncontextual = {\n    \"id\": \"#JohnDoe\",\n    \"type\": \"Person\",\n}\n\n# Update the RO-Crate object \ncrate.update_descriptor(descriptor)\ncrate.update_root(root)\ncrate.update_data(data)\ncrate.update_contextual(contextual)\n```\n\nTo then write the crate to a `ro-crate-metadata.json` file in the current working directory:\n```python\n# Continuation of the above examples\n# Write crate \ncrate.write()\n```\n\nTo then read a `ro-crate-metadata.json` file and load it in as a structured object:\n```python \n# New example\nfrom rocraters import read\n\n# Read RO-Crate at specified path \ncrate = read(\"ro-crate-metadata.json\", True)\n```\n\nTo zip the folder and all contained directories within the `ro-crate-metadata.json` directory:\n```python\n# new example \nfrom rocraters import zip\n\nzip(\"ro-crate-metadata.json\", True)\n```\n\n# Modifying a RO-Crate \n\nAs per the libraries purpose, modification, ie the deletion, update and addition of entites is intended to be as simple as possible, whilst ensuring minimal conformance:\n\n```python\n# Example based upon previously made crate\nfrom rocraters import read\n\ncrate = read(\"ro-crate-metadata.json\", True) \n\n# Update the data entity and make modification \ndata_target = crate.get_entity(\"data_file.txt\")\ndata_target[\"description\"] = \"A text file dataset containing information\"\n\n# Update the contextual entity and make modification\ncontextual_target = crate.get_entity(\"#JohnDoe\")\ncontextual_target.update({\"id\" : \"#JaneDoe\"})\ncrate.update_contextual(contextual_target)\n\n# To delete a key:value \ndata_target.pop(\"description\")\n\n# To delete an entity - this immediately updates the crate object\ncontextual_target.delete_entity(\"#JaneDoe\")\n\n# We then update the crate the same way we make it\n# The ID will be used to serach the crate and overwrites the object with an indentical \"id\" key\ncrate.update_data(data_target)\ncrate.write()\n```\n\n# Custom compilation \n\nPyO3 is used to handle python bindings. Maturin is used as the build tool.\n\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Lightweight Python library for RO-Crate manipulation implemented in Rust",
    "version": "0.4.5",
    "project_urls": null,
    "split_keywords": [
        "ro-crate",
        " rocrate",
        " research object",
        " rocraters"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1dbd5155bb2f49b43e016ac480dff67d4f5ad09243043bbc42d26119b3cf17a3",
                "md5": "f023a65201138f37a2d0066f7eacf71c",
                "sha256": "86f8a3d9932ee68738c9cdfebd87203ce73b764064c8b4bfed37bec80bfcddf3"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "f023a65201138f37a2d0066f7eacf71c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 11426648,
            "upload_time": "2025-01-27T10:43:45",
            "upload_time_iso_8601": "2025-01-27T10:43:45.469546Z",
            "url": "https://files.pythonhosted.org/packages/1d/bd/5155bb2f49b43e016ac480dff67d4f5ad09243043bbc42d26119b3cf17a3/rocraters-0.4.5-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0af3c3632d47e4a10fb792f77a50b7284af54e480d4441c64a2cacc0d6cbcc3c",
                "md5": "8f1ede3523f69cd5b8b06496898d782a",
                "sha256": "d3ab52c777bd2af9626320a62dc6ff3fbf3c706e80adcc24bcf0b06b60bc9a18"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8f1ede3523f69cd5b8b06496898d782a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 5480681,
            "upload_time": "2025-01-27T10:43:47",
            "upload_time_iso_8601": "2025-01-27T10:43:47.843670Z",
            "url": "https://files.pythonhosted.org/packages/0a/f3/c3632d47e4a10fb792f77a50b7284af54e480d4441c64a2cacc0d6cbcc3c/rocraters-0.4.5-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1542c366983d0bcddfd7ec3508bda2f368f059aa1698a1e55f1496a3b9b5353f",
                "md5": "a52c68c695fe49f8d39d0c8b63266a90",
                "sha256": "c1beb92decb0ce801e1b909835febafa531b68d102910e58c613e3cf851f9963"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "a52c68c695fe49f8d39d0c8b63266a90",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 6904468,
            "upload_time": "2025-01-27T10:43:19",
            "upload_time_iso_8601": "2025-01-27T10:43:19.790006Z",
            "url": "https://files.pythonhosted.org/packages/15/42/c366983d0bcddfd7ec3508bda2f368f059aa1698a1e55f1496a3b9b5353f/rocraters-0.4.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bfcfb5e37d1359fb84a8dce857e27bb800cd2b832ba75baf88387815debb4ed5",
                "md5": "cf9f47a923dd6bb088854c7bbad83189",
                "sha256": "aecd921ad45bee514279f7c16a6467c2ea8e91d0316ac7994726c7ca5715dcc9"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cf9f47a923dd6bb088854c7bbad83189",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 6455943,
            "upload_time": "2025-01-27T10:43:32",
            "upload_time_iso_8601": "2025-01-27T10:43:32.749919Z",
            "url": "https://files.pythonhosted.org/packages/bf/cf/b5e37d1359fb84a8dce857e27bb800cd2b832ba75baf88387815debb4ed5/rocraters-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f67e5e68d0c8e948a1dab4c5af4e814e23c7831b42f4b09048bde81b380e6ba0",
                "md5": "5efc1cb60816c7f1e56725c57082ffbd",
                "sha256": "f28e7f95407799649262a426ebb898550c115a81f9ec174b14e96b9c68b0b890"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "5efc1cb60816c7f1e56725c57082ffbd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 5030882,
            "upload_time": "2025-01-27T10:44:08",
            "upload_time_iso_8601": "2025-01-27T10:44:08.143108Z",
            "url": "https://files.pythonhosted.org/packages/f6/7e/5e68d0c8e948a1dab4c5af4e814e23c7831b42f4b09048bde81b380e6ba0/rocraters-0.4.5-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5420d2e6e2d2f7cd3a6251408e90ef547d67860856db7d613c08d0eee4c28c23",
                "md5": "a52a669b6837f446e8d74b4e48bf821a",
                "sha256": "d40e668dad0e7359ca360a6de5892c49dbfd4494d1c201a992c8f63e268b1ed1"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a52a669b6837f446e8d74b4e48bf821a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 5528583,
            "upload_time": "2025-01-27T10:43:59",
            "upload_time_iso_8601": "2025-01-27T10:43:59.929350Z",
            "url": "https://files.pythonhosted.org/packages/54/20/d2e6e2d2f7cd3a6251408e90ef547d67860856db7d613c08d0eee4c28c23/rocraters-0.4.5-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f4e00eaf3282ecd1f39b74235734ccb5d35647caa846a9c74c3d81ee2d017c06",
                "md5": "b593c4e8d6646b0cf724baa28aeab8e7",
                "sha256": "dc8bfbacac9b0b84a7556f5b050fcab580fa713e53c19862a10a1a54bf550bff"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "b593c4e8d6646b0cf724baa28aeab8e7",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 11426737,
            "upload_time": "2025-01-27T10:43:50",
            "upload_time_iso_8601": "2025-01-27T10:43:50.338789Z",
            "url": "https://files.pythonhosted.org/packages/f4/e0/0eaf3282ecd1f39b74235734ccb5d35647caa846a9c74c3d81ee2d017c06/rocraters-0.4.5-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5309ccefd137c6ad13f12aac820bdb3edaafdb08afafbef98361096c58bd4e11",
                "md5": "1e9b531f64fb4707186b1bb25a0182b6",
                "sha256": "7ffa901ca03535ae0d25c96388d437c8985e27cd218bee1219d7927dac17312e"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "1e9b531f64fb4707186b1bb25a0182b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 6904269,
            "upload_time": "2025-01-27T10:43:21",
            "upload_time_iso_8601": "2025-01-27T10:43:21.952701Z",
            "url": "https://files.pythonhosted.org/packages/53/09/ccefd137c6ad13f12aac820bdb3edaafdb08afafbef98361096c58bd4e11/rocraters-0.4.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "559fc1a4fee3aa5f4d20dac4efab496680d9da8499703802b4be44afb50c7aea",
                "md5": "813e219fc1a7183d697623562bb672d8",
                "sha256": "f28860032892c5527c00d439a8a0569e8f6afbecdd803adb8aed6c1a09fb6143"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "813e219fc1a7183d697623562bb672d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 6455704,
            "upload_time": "2025-01-27T10:43:34",
            "upload_time_iso_8601": "2025-01-27T10:43:34.831870Z",
            "url": "https://files.pythonhosted.org/packages/55/9f/c1a4fee3aa5f4d20dac4efab496680d9da8499703802b4be44afb50c7aea/rocraters-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bcb9efe275d4e809a7f97cb08463f0de087828e9228f7921ec0cdb99569afa7e",
                "md5": "2373566ae376a2ee8555915381a4912d",
                "sha256": "22d2b18cb0a20499a0f1471a95d81e759cbb45f9167863e9cb5775b67e3b1689"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "2373566ae376a2ee8555915381a4912d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 5031005,
            "upload_time": "2025-01-27T10:44:10",
            "upload_time_iso_8601": "2025-01-27T10:44:10.634027Z",
            "url": "https://files.pythonhosted.org/packages/bc/b9/efe275d4e809a7f97cb08463f0de087828e9228f7921ec0cdb99569afa7e/rocraters-0.4.5-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "04d930e3bca051088e4cec551dff8582565bd4ba7086c28fac3ec896f708a5f7",
                "md5": "c9c8e2add9d0fb04502fbed82ccb711d",
                "sha256": "e23383c647a7a90b3a7f1724d9aee1a5bdc2167bbf486af6dee6efcbde7f925d"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c9c8e2add9d0fb04502fbed82ccb711d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 5528046,
            "upload_time": "2025-01-27T10:44:02",
            "upload_time_iso_8601": "2025-01-27T10:44:02.633010Z",
            "url": "https://files.pythonhosted.org/packages/04/d9/30e3bca051088e4cec551dff8582565bd4ba7086c28fac3ec896f708a5f7/rocraters-0.4.5-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9af4ed9010a462800198b800ee62aa7e247a6720200e96d530fb8cdb1b43e028",
                "md5": "d4612571a9858537af4bff64cd82de1a",
                "sha256": "dc517a32b097b28bcfc41b50a45e614f0ca9d9ca02d7c4f525dd8d98ee9d513c"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "d4612571a9858537af4bff64cd82de1a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 11423353,
            "upload_time": "2025-01-27T10:43:53",
            "upload_time_iso_8601": "2025-01-27T10:43:53.238208Z",
            "url": "https://files.pythonhosted.org/packages/9a/f4/ed9010a462800198b800ee62aa7e247a6720200e96d530fb8cdb1b43e028/rocraters-0.4.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "020ba5a6ae5817ac1cc78e7da4a060d283029a8fdfe3ac07d48910dc9f6dfb9b",
                "md5": "f8c6f29b963a61f049799ce247342293",
                "sha256": "59ce609b37709c0b5f5c46c0055495daf1cf0a3657f8c9483369441917939c2c"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "f8c6f29b963a61f049799ce247342293",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 6904610,
            "upload_time": "2025-01-27T10:43:24",
            "upload_time_iso_8601": "2025-01-27T10:43:24.086138Z",
            "url": "https://files.pythonhosted.org/packages/02/0b/a5a6ae5817ac1cc78e7da4a060d283029a8fdfe3ac07d48910dc9f6dfb9b/rocraters-0.4.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c9b4700a663d136ba54f4a0edf39e62d1b67351f3f8458c19fced5c441745bc3",
                "md5": "c00477a07713f88bd91097a4b37571ff",
                "sha256": "59f125370a3521ed87ea18618f8b3b9600d6fc6153393194ea82c0cae13f235a"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c00477a07713f88bd91097a4b37571ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 6454706,
            "upload_time": "2025-01-27T10:43:37",
            "upload_time_iso_8601": "2025-01-27T10:43:37.640260Z",
            "url": "https://files.pythonhosted.org/packages/c9/b4/700a663d136ba54f4a0edf39e62d1b67351f3f8458c19fced5c441745bc3/rocraters-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c9404c8c17f430522b5157efb22ed73fdb4443de0262deeee92db3186eec799d",
                "md5": "5361fac5cf783d8dfb65dea502745a77",
                "sha256": "d9f8c741a7d4b2e9f24fee967aebfa83003816738fb22abd0846ef1506834a4c"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "5361fac5cf783d8dfb65dea502745a77",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 5030418,
            "upload_time": "2025-01-27T10:44:13",
            "upload_time_iso_8601": "2025-01-27T10:44:13.932860Z",
            "url": "https://files.pythonhosted.org/packages/c9/40/4c8c17f430522b5157efb22ed73fdb4443de0262deeee92db3186eec799d/rocraters-0.4.5-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7945b774573d3b33aad1aae581d98730015f9aee3ad85e7629cc7669b027d4a",
                "md5": "8e1c4b1c4d2e40ed63ea4f4af3cc3e05",
                "sha256": "1edc99b01c6b42b6d67360c924ae4df8fc4f511cce4c7c795545e4d055839d0b"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8e1c4b1c4d2e40ed63ea4f4af3cc3e05",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 5528862,
            "upload_time": "2025-01-27T10:44:05",
            "upload_time_iso_8601": "2025-01-27T10:44:05.433705Z",
            "url": "https://files.pythonhosted.org/packages/e7/94/5b774573d3b33aad1aae581d98730015f9aee3ad85e7629cc7669b027d4a/rocraters-0.4.5-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ad84aec9cfcb42bbac9beba950b5cf86284b825cc4d8a2eb3d752d3ca7f32e8e",
                "md5": "93afdc658da82606df6cfa0d0c466164",
                "sha256": "0c364734893d1ca5dc8c3a274c1ecdc1466e7ba07991d9df1af6ff3eff83d174"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "93afdc658da82606df6cfa0d0c466164",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 11421792,
            "upload_time": "2025-01-27T10:43:56",
            "upload_time_iso_8601": "2025-01-27T10:43:56.284157Z",
            "url": "https://files.pythonhosted.org/packages/ad/84/aec9cfcb42bbac9beba950b5cf86284b825cc4d8a2eb3d752d3ca7f32e8e/rocraters-0.4.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6f98a17f2b046839d87f1ed45251624b07c0ef05e5e40810a4201e5a3a06b66c",
                "md5": "5a771f7435820cf0afc1787b2f39e8c6",
                "sha256": "e1bf961dca2cbe307230577886ed535d67720a420dae63c3cf1d753372326c56"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5a771f7435820cf0afc1787b2f39e8c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 6904196,
            "upload_time": "2025-01-27T10:43:27",
            "upload_time_iso_8601": "2025-01-27T10:43:27.817058Z",
            "url": "https://files.pythonhosted.org/packages/6f/98/a17f2b046839d87f1ed45251624b07c0ef05e5e40810a4201e5a3a06b66c/rocraters-0.4.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4c7c838051674f94a1effebc76f37f673e5d1fd67284789cfc62ca65a7c14801",
                "md5": "2c61dba233cdb0805f572fefec7bc215",
                "sha256": "ce3d4d3d57ea1546f33d6b04177537f25142ee592d61f9db9f3776a0ebad605b"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2c61dba233cdb0805f572fefec7bc215",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 6454327,
            "upload_time": "2025-01-27T10:43:40",
            "upload_time_iso_8601": "2025-01-27T10:43:40.299226Z",
            "url": "https://files.pythonhosted.org/packages/4c/7c/838051674f94a1effebc76f37f673e5d1fd67284789cfc62ca65a7c14801/rocraters-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a1ecae626bbb8bc3c53548ce24b09de72719ac283477b958749e379bb45dc9c2",
                "md5": "2c35553d17ba361514d5e498fb2de1b6",
                "sha256": "484d51a98baed23c565005d3c3d18cb75bce2b78c870e7a19a8c93eef145d5f9"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2c35553d17ba361514d5e498fb2de1b6",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.10",
            "size": 6906111,
            "upload_time": "2025-01-27T10:43:30",
            "upload_time_iso_8601": "2025-01-27T10:43:30.250284Z",
            "url": "https://files.pythonhosted.org/packages/a1/ec/ae626bbb8bc3c53548ce24b09de72719ac283477b958749e379bb45dc9c2/rocraters-0.4.5-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4232fc6579c19e14fc88ed64ff616ef54a3cbdeb92ab6ae23e57d7bcb6b6c0ab",
                "md5": "37bae05cf4345cc0e10b5eea1914f91d",
                "sha256": "eb4e0d64c180ea066a6142d977512836999b7ff6991fbffaf432600e004d2a38"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37bae05cf4345cc0e10b5eea1914f91d",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.10",
            "size": 6457108,
            "upload_time": "2025-01-27T10:43:43",
            "upload_time_iso_8601": "2025-01-27T10:43:43.183910Z",
            "url": "https://files.pythonhosted.org/packages/42/32/fc6579c19e14fc88ed64ff616ef54a3cbdeb92ab6ae23e57d7bcb6b6c0ab/rocraters-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "484b58d38f08e34d1769d9e6b764a07f36386a85ec52654ed610f6fc201f24b1",
                "md5": "011f56f6d2a61d666382e35dfc403713",
                "sha256": "35e474d59b9e12f3e827161eccadab6a4cb25686cf61d88f3f85d42a4974f466"
            },
            "downloads": -1,
            "filename": "rocraters-0.4.5.tar.gz",
            "has_sig": false,
            "md5_digest": "011f56f6d2a61d666382e35dfc403713",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 475073,
            "upload_time": "2025-01-27T10:43:58",
            "upload_time_iso_8601": "2025-01-27T10:43:58.357338Z",
            "url": "https://files.pythonhosted.org/packages/48/4b/58d38f08e34d1769d9e6b764a07f36386a85ec52654ed610f6fc201f24b1/rocraters-0.4.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-27 10:43:58",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "rocraters"
}
        
Elapsed time: 0.65339s