pydicos


Namepydicos JSON
Version 1.2.2 PyPI version JSON
download
home_pagehttps://github.com/Auxilia-tech/pydicos
SummarypyDICOS is a python package for working with DICOS files.
upload_time2024-08-12 15:21:19
maintainerNone
docs_urlNone
authorLouis Combaldieu
requires_python>=3
licenseMIT
keywords dicos digital imaging communications security
VCS
bugtrack_url
requirements numpy pybind11 cmake wheel build pytest pytest-order
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pyDICOS

[![License](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/licenses/MIT)
[![publish-pypi](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/publish-pypi-deploy.yml/badge.svg)](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/publish-pypi-deploy.yml)
[![run-tests](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/tests.yml/badge.svg)](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/Auxilia-tech/pyDICOS/graph/badge.svg?token=BJ9INN7187)](https://codecov.io/gh/Auxilia-tech/pyDICOS)

## Motivations

This project was initiated to enable the usage of DICOS data in machine learning workflows. 
PyDICOS is intended to be a simple python wrapper of Stratovan's C++ [DICOS library](https://www.stratovan.com/products/dicos-toolkit).
Note that this is **NOT** an open source implementation of the DICOS standard.

PyDICOS relies on [pybind11](https://github.com/pybind/pybind11) to wrap DICOS user-level API to python.
It depends on numpy to load data in python and can easily be installed _via_ `pip`.

PyDICOS is unrelated to [pydicom](https://github.com/pydicom/pydicom) in its implementation and contributors, 
while being similar in its core spirit (enabling python data manipulations).

## Open Architecture

We firmly believe that by releasing this library, we will encourage and support the [Open Architecture framework](https://www.aci-europe.org/downloads/resources/TSA-230504-7_4.1%20Attachment%201%20OA%20for%20Airport%20Security%20Systems%202nd%20Edition%20%20FINAL.pdf). We welcome all actors of airport security to review and use this library.

## Scope

 - Provide a pythonized API for the DICOS toolkit
   - [x] First release : read/write functions for CT, DX and TDR, user-level API
   - [x] First releases : DICOS protocol, client/server functions
   - [x] Future release : more pure python functions to shave off heavy cpp signatures (`get_data`, `set_data` and `CT::generate_tdr`)
   - [x] Future release : library indexed in Pypi 
   - [ ] Out of scope for now : Windows release
   - [ ] Out of scope for now : AIT2D, AIT3D, QR
   - [ ] Out of scope for now : Module and Tag level APIs
 - Stay up to date with Stratovan latest releases
   - Currently tested and supported DICOS version : `v3`

## Install

⚠️ pyDICOS is currently only available for linux on x86 platform.

### ✨ NEW ✨ Using Pypi index (recommended)

Using [pip](https://pip.pypa.io/en/stable/) directly from Pypi index :
```bash
pip install pydicos
```

### Building from source (dev mode)

To setup the build environment, clone the repository, create your virtual environment and install required dependencies

```bash
git clone https://github.com/Auxilia-tech/pyDICOS
cd pyDICOS
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

Install the [Stratovan toolkit](https://www.stratovan.com/products/dicos-toolkit) in the `opt` folder. If the library is already installed in another folder, skip this step and change the SDICOS path variable in `setup.sh`.
```bash
chmod +x ./sdicos_lin_ubuntu-20-{version}.run
./sdicos_lin_ubuntu-20-{version}.run --unattendedmodeui none --mode unattended --prefix /opt/stratovan/sdicos
chmod 755 -R /opt/stratovan/sdicos
```

To generate a python wheel :

```bash
chmod +x setup.sh
./setup.sh
```

The lib wheel should be produced in the `dist` folder and can be installed _via_ `pip` in any local virtual environment.

## Usage

### Concept diagram

<div align="center">
<img width="850" src="assets/DICOS.svg">
</div>

### Script usage

Refer to our [exemple files](https://github.com/Auxilia-tech/pyDICOS/tests) to explore the binded methods.
The stratovan exemple files were entirely translated in python.

Here is a quick exemple for a script that reads and rewrites a CT and DX scan, and a TDR.

```python
from pydicos import dcsread, dcswrite

ct = dcsread("SimpleCT/SimpleCT.dcs")
data = ct.get_data() # list of 3-dimentionnal numpy arrays
dcswrite(ct, "SimpleCT/SimpleCT_2.dcs")

dx = dcsread("DXFiles/SimpleDX.dcs")
data = dx.get_data() # 2-dimentionnal numpy array
dcswrite(dx, "DXFiles/SimpleDX_2.dcs")

tdr = dcsread("SimpleTDR/SimpleTDR.dcs")
data = tdr.get_data() # dictionnay of metadata
dcswrite(tdr, "SimpleTDR/SimpleTDR_2.dcs")
```

✨ NEW ✨ : refer to [our notebook](notebooks/tutorial.ipynb) tutorial for instructions and examples to change an object main attribute.

### Advanced usage

More complex operations can be addressed by using the C++ functions directly. 
They can be invoked using the `pyDICOS` modules. For example, the previous 
script would look like this :

```python
from pyDICOS import CT, DX, TDR, ErrorLog, Filename
   
ct, err, file = CT(), ErrorLog(), Filename("SimpleCT/SimpleCT.dcs")
if not ct.Read(file, err, None):
   raise RuntimeError(f"Failed to read DICOS file: {file.Get()}\n{err.GetErrorLog().Get()}")
data = ... # This is very long, refer to pydicos._loaders::CTLoader.get_data for full script
if not ct.Write(Filename("SimpleCT/SimpleCT_2.dcs"), err):
   raise RuntimeError(f"Failed to write DICOS file: SimpleCT/SimpleCT_2.dcs\n{err.GetErrorLog().Get()}")

dx, err, file = DX(), ErrorLog(), Filename("SimpleDX/SimpleDX.dcs")
if not dx.Read(file, err, None):
   raise RuntimeError(f"Failed to read DICOS file: {file.Get()}\n{err.GetErrorLog().Get()}")
data = np.array(dx.GetXRayData().GetUnsigned16(), copy=False)
if not dx.Write(Filename("SimpleDX/SimpleDX_2.dcs"), err):
   raise RuntimeError(f"Failed to write DICOS file: SimpleDX/SimpleDX_2.dcs\n{err.GetErrorLog().Get()}")

tdr, err, file = TDR(), ErrorLog(), Filename("SimpleTDR/SimpleTDR.dcs")
if not tdr.Read(file, err, None):
   raise RuntimeError(f"Failed to read DICOS file: {filename}\n{err.GetErrorLog().Get()}")
data = ... # This is very long, refer to pydicos._loaders::TDRLoader.get_data for full script
if not tdr.Write(Filename("SimpleTDR/SimpleTDR_2.dcs"), err):
   raise RuntimeError(f"Failed to write DICOS file: SimpleTDR/SimpleTDR_2.dcs\n{err.GetErrorLog().Get()}")
```
As you can see, `pyDICOS` is the direct translation of the C++ classes and in-place method signatures. 
The objects of the `pydicos` library inherit the methods available in `pyDICOS`. 
More details in [architecture](pydicos/README.md).

### Testing

The library can be tested via `pytest`
```bash
pytest tests/
```

## Contributing

As our resources are limited, we very much value your contributions, be it bug fixes, new core features, or documentation improvements.
For more information, please read our [contribution guide](CONTRIBUTING.md).

### Contributors acknowledgement

Many thanks to our main contributors :

 - [Ahmad Audi](https://github.com/AAUDI) is a freelance developper specialized in C++ and python. He is available for similar work on [upwork](https://www.upwork.com/freelancers/~01a066bd29ed6d1a64). [LinkedIn](https://www.linkedin.com/in/ahmadaudi/)
 - [Louis Combaldieu](https://github.com/lcombaldieu) is the cofounder and CTO of Auxilia. He specializes in deep learning and computer vision. Get in touch with him through our [contact form](https://www.auxilia-tech.com/contact) to learn more about pyDICOS and Auxilia's line of products.

## License

This software is released under the [MIT license](https://opensource.org/licenses/MIT).

### Stratovan inherited disclaimer

    ##############################################################################
    ### Stratovan Corporation Copyright and Disclaimer Notice:
    ###
    ### Copyright (c) 2014 Stratovan Corporation. All Rights Reserved.
    ###
    ### Permission to use, copy, modify, and distribute this software and its
    ### documentation without a signed licensing agreement, is hereby granted,
    ### provided that this copyright notice, this paragraph and the following two
    ### paragraphs appear in all copies, modifications, and distributions.
    ###
    ### IN NO EVENT SHALL STRATOVAN BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
    ### SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
    ### ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
    ### STRATOVAN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    ###
    ### STRATOVAN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
    ### TO, THE IMPLIED WARRANTIES OF USE AND FITNESS FOR A PARTICULAR PURPOSE. THE
    ### SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS
    ### PROVIDED "AS IS". STRATOVAN HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
    ### SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS UNLESS DIRECTED BY THE
    ### U.S. GOVERNMENT'S TRANSPORTATION SECURITY ADMINISTRATION (TSA).
    ###
    ##############################################################################

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Auxilia-tech/pydicos",
    "name": "pydicos",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3",
    "maintainer_email": null,
    "keywords": "DICOS, Digital, Imaging, Communications, Security",
    "author": "Louis Combaldieu",
    "author_email": "louis.combaldieu@auxilia-tech.com",
    "download_url": "https://github.com/Auxilia-tech/pydicos/",
    "platform": null,
    "description": "# pyDICOS\n\n[![License](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/licenses/MIT)\n[![publish-pypi](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/publish-pypi-deploy.yml/badge.svg)](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/publish-pypi-deploy.yml)\n[![run-tests](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/tests.yml/badge.svg)](https://github.com/Auxilia-tech/pyDICOS/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/Auxilia-tech/pyDICOS/graph/badge.svg?token=BJ9INN7187)](https://codecov.io/gh/Auxilia-tech/pyDICOS)\n\n## Motivations\n\nThis project was initiated to enable the usage of DICOS data in machine learning workflows. \nPyDICOS is intended to be a simple python wrapper of Stratovan's C++ [DICOS library](https://www.stratovan.com/products/dicos-toolkit).\nNote that this is **NOT** an open source implementation of the DICOS standard.\n\nPyDICOS relies on [pybind11](https://github.com/pybind/pybind11) to wrap DICOS user-level API to python.\nIt depends on numpy to load data in python and can easily be installed _via_ `pip`.\n\nPyDICOS is unrelated to [pydicom](https://github.com/pydicom/pydicom) in its implementation and contributors, \nwhile being similar in its core spirit (enabling python data manipulations).\n\n## Open Architecture\n\nWe firmly believe that by releasing this library, we will encourage and support the [Open Architecture framework](https://www.aci-europe.org/downloads/resources/TSA-230504-7_4.1%20Attachment%201%20OA%20for%20Airport%20Security%20Systems%202nd%20Edition%20%20FINAL.pdf). We welcome all actors of airport security to review and use this library.\n\n## Scope\n\n - Provide a pythonized API for the DICOS toolkit\n   - [x] First release : read/write functions for CT, DX and TDR, user-level API\n   - [x] First releases : DICOS protocol, client/server functions\n   - [x] Future release : more pure python functions to shave off heavy cpp signatures (`get_data`, `set_data` and `CT::generate_tdr`)\n   - [x] Future release : library indexed in Pypi \n   - [ ] Out of scope for now : Windows release\n   - [ ] Out of scope for now : AIT2D, AIT3D, QR\n   - [ ] Out of scope for now : Module and Tag level APIs\n - Stay up to date with Stratovan latest releases\n   - Currently tested and supported DICOS version : `v3`\n\n## Install\n\n\u26a0\ufe0f pyDICOS is currently only available for linux on x86 platform.\n\n### \u2728 NEW \u2728 Using Pypi index (recommended)\n\nUsing [pip](https://pip.pypa.io/en/stable/) directly from Pypi index :\n```bash\npip install pydicos\n```\n\n### Building from source (dev mode)\n\nTo setup the build environment, clone the repository, create your virtual environment and install required dependencies\n\n```bash\ngit clone https://github.com/Auxilia-tech/pyDICOS\ncd pyDICOS\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\nInstall the [Stratovan toolkit](https://www.stratovan.com/products/dicos-toolkit) in the `opt` folder. If the library is already installed in another folder, skip this step and change the SDICOS path variable in `setup.sh`.\n```bash\nchmod +x ./sdicos_lin_ubuntu-20-{version}.run\n./sdicos_lin_ubuntu-20-{version}.run --unattendedmodeui none --mode unattended --prefix /opt/stratovan/sdicos\nchmod 755 -R /opt/stratovan/sdicos\n```\n\nTo generate a python wheel :\n\n```bash\nchmod +x setup.sh\n./setup.sh\n```\n\nThe lib wheel should be produced in the `dist` folder and can be installed _via_ `pip` in any local virtual environment.\n\n## Usage\n\n### Concept diagram\n\n<div align=\"center\">\n<img width=\"850\" src=\"assets/DICOS.svg\">\n</div>\n\n### Script usage\n\nRefer to our [exemple files](https://github.com/Auxilia-tech/pyDICOS/tests) to explore the binded methods.\nThe stratovan exemple files were entirely translated in python.\n\nHere is a quick exemple for a script that reads and rewrites a CT and DX scan, and a TDR.\n\n```python\nfrom pydicos import dcsread, dcswrite\n\nct = dcsread(\"SimpleCT/SimpleCT.dcs\")\ndata = ct.get_data() # list of 3-dimentionnal numpy arrays\ndcswrite(ct, \"SimpleCT/SimpleCT_2.dcs\")\n\ndx = dcsread(\"DXFiles/SimpleDX.dcs\")\ndata = dx.get_data() # 2-dimentionnal numpy array\ndcswrite(dx, \"DXFiles/SimpleDX_2.dcs\")\n\ntdr = dcsread(\"SimpleTDR/SimpleTDR.dcs\")\ndata = tdr.get_data() # dictionnay of metadata\ndcswrite(tdr, \"SimpleTDR/SimpleTDR_2.dcs\")\n```\n\n\u2728 NEW \u2728 : refer to [our notebook](notebooks/tutorial.ipynb) tutorial for instructions and examples to change an object main attribute.\n\n### Advanced usage\n\nMore complex operations can be addressed by using the C++ functions directly. \nThey can be invoked using the `pyDICOS` modules. For example, the previous \nscript would look like this :\n\n```python\nfrom pyDICOS import CT, DX, TDR, ErrorLog, Filename\n   \nct, err, file = CT(), ErrorLog(), Filename(\"SimpleCT/SimpleCT.dcs\")\nif not ct.Read(file, err, None):\n   raise RuntimeError(f\"Failed to read DICOS file: {file.Get()}\\n{err.GetErrorLog().Get()}\")\ndata = ... # This is very long, refer to pydicos._loaders::CTLoader.get_data for full script\nif not ct.Write(Filename(\"SimpleCT/SimpleCT_2.dcs\"), err):\n   raise RuntimeError(f\"Failed to write DICOS file: SimpleCT/SimpleCT_2.dcs\\n{err.GetErrorLog().Get()}\")\n\ndx, err, file = DX(), ErrorLog(), Filename(\"SimpleDX/SimpleDX.dcs\")\nif not dx.Read(file, err, None):\n   raise RuntimeError(f\"Failed to read DICOS file: {file.Get()}\\n{err.GetErrorLog().Get()}\")\ndata = np.array(dx.GetXRayData().GetUnsigned16(), copy=False)\nif not dx.Write(Filename(\"SimpleDX/SimpleDX_2.dcs\"), err):\n   raise RuntimeError(f\"Failed to write DICOS file: SimpleDX/SimpleDX_2.dcs\\n{err.GetErrorLog().Get()}\")\n\ntdr, err, file = TDR(), ErrorLog(), Filename(\"SimpleTDR/SimpleTDR.dcs\")\nif not tdr.Read(file, err, None):\n   raise RuntimeError(f\"Failed to read DICOS file: {filename}\\n{err.GetErrorLog().Get()}\")\ndata = ... # This is very long, refer to pydicos._loaders::TDRLoader.get_data for full script\nif not tdr.Write(Filename(\"SimpleTDR/SimpleTDR_2.dcs\"), err):\n   raise RuntimeError(f\"Failed to write DICOS file: SimpleTDR/SimpleTDR_2.dcs\\n{err.GetErrorLog().Get()}\")\n```\nAs you can see, `pyDICOS` is the direct translation of the C++ classes and in-place method signatures. \nThe objects of the `pydicos` library inherit the methods available in `pyDICOS`. \nMore details in [architecture](pydicos/README.md).\n\n### Testing\n\nThe library can be tested via `pytest`\n```bash\npytest tests/\n```\n\n## Contributing\n\nAs our resources are limited, we very much value your contributions, be it bug fixes, new core features, or documentation improvements.\nFor more information, please read our [contribution guide](CONTRIBUTING.md).\n\n### Contributors acknowledgement\n\nMany thanks to our main contributors :\n\n - [Ahmad Audi](https://github.com/AAUDI) is a freelance developper specialized in C++ and python. He is available for similar work on [upwork](https://www.upwork.com/freelancers/~01a066bd29ed6d1a64). [LinkedIn](https://www.linkedin.com/in/ahmadaudi/)\n - [Louis Combaldieu](https://github.com/lcombaldieu) is the cofounder and CTO of Auxilia. He specializes in deep learning and computer vision. Get in touch with him through our [contact form](https://www.auxilia-tech.com/contact) to learn more about pyDICOS and Auxilia's line of products.\n\n## License\n\nThis software is released under the [MIT license](https://opensource.org/licenses/MIT).\n\n### Stratovan inherited disclaimer\n\n    ##############################################################################\n    ### Stratovan Corporation Copyright and Disclaimer Notice:\n    ###\n    ### Copyright (c) 2014 Stratovan Corporation. All Rights Reserved.\n    ###\n    ### Permission to use, copy, modify, and distribute this software and its\n    ### documentation without a signed licensing agreement, is hereby granted,\n    ### provided that this copyright notice, this paragraph and the following two\n    ### paragraphs appear in all copies, modifications, and distributions.\n    ###\n    ### IN NO EVENT SHALL STRATOVAN BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,\n    ### SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,\n    ### ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF\n    ### STRATOVAN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n    ###\n    ### STRATOVAN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED\n    ### TO, THE IMPLIED WARRANTIES OF USE AND FITNESS FOR A PARTICULAR PURPOSE. THE\n    ### SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS\n    ### PROVIDED \"AS IS\". STRATOVAN HAS NO OBLIGATION TO PROVIDE MAINTENANCE,\n    ### SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS UNLESS DIRECTED BY THE\n    ### U.S. GOVERNMENT'S TRANSPORTATION SECURITY ADMINISTRATION (TSA).\n    ###\n    ##############################################################################\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "pyDICOS is a python package for working with DICOS files.",
    "version": "1.2.2",
    "project_urls": {
        "Download": "https://github.com/Auxilia-tech/pydicos/",
        "Homepage": "https://github.com/Auxilia-tech/pydicos"
    },
    "split_keywords": [
        "dicos",
        " digital",
        " imaging",
        " communications",
        " security"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa835c80bf4d4da744a05af0b095154189f59d5e1e31e34b22287d2e9cb5cf88",
                "md5": "990c393a0b68196c610059ea5cd019e6",
                "sha256": "02e79e9c12e5e30cda87768a4c61067131ae8513d1e559e5c084b58944ddf700"
            },
            "downloads": -1,
            "filename": "pydicos-1.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "990c393a0b68196c610059ea5cd019e6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3",
            "size": 5663008,
            "upload_time": "2024-08-12T15:21:19",
            "upload_time_iso_8601": "2024-08-12T15:21:19.942484Z",
            "url": "https://files.pythonhosted.org/packages/aa/83/5c80bf4d4da744a05af0b095154189f59d5e1e31e34b22287d2e9cb5cf88/pydicos-1.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "79b4e6e63cb312ec0e4ce3f4656ecb5946ac7ae173f04719bb5e576dd4182fa3",
                "md5": "0ba4fbd41981344deba0e0b74fa238e8",
                "sha256": "b4111b930134326ad7bd8216ca6feeea0b0e95a56c3077a2db6d44202806dc85"
            },
            "downloads": -1,
            "filename": "pydicos-1.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0ba4fbd41981344deba0e0b74fa238e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3",
            "size": 5663487,
            "upload_time": "2024-08-12T15:21:22",
            "upload_time_iso_8601": "2024-08-12T15:21:22.176838Z",
            "url": "https://files.pythonhosted.org/packages/79/b4/e6e63cb312ec0e4ce3f4656ecb5946ac7ae173f04719bb5e576dd4182fa3/pydicos-1.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0987faae7b24f2979a1d15c9cb26e44d27911fa95cfbe2b78b1fe00b611a45fa",
                "md5": "6f06f92cb6e2ace8a2ef51eb4b8d9e59",
                "sha256": "f7a0ef9a337da7157dbb3ea5da6f78ddaa96b38467e6a1c24c69e099d23957a5"
            },
            "downloads": -1,
            "filename": "pydicos-1.2.2-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6f06f92cb6e2ace8a2ef51eb4b8d9e59",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3",
            "size": 5729190,
            "upload_time": "2024-08-12T15:21:23",
            "upload_time_iso_8601": "2024-08-12T15:21:23.989105Z",
            "url": "https://files.pythonhosted.org/packages/09/87/faae7b24f2979a1d15c9cb26e44d27911fa95cfbe2b78b1fe00b611a45fa/pydicos-1.2.2-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a40d0506d9b5e37f27d688b2b76ad6ca8ca1e8a364ed53802d9589a4ff123992",
                "md5": "d14223bcada629313659b29b66328f0e",
                "sha256": "43054682f6e6a437da24298cc723be7daeaf240c9e9f494cace877c2596b5cc7"
            },
            "downloads": -1,
            "filename": "pydicos-1.2.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d14223bcada629313659b29b66328f0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3",
            "size": 5662506,
            "upload_time": "2024-08-12T15:21:25",
            "upload_time_iso_8601": "2024-08-12T15:21:25.663409Z",
            "url": "https://files.pythonhosted.org/packages/a4/0d/0506d9b5e37f27d688b2b76ad6ca8ca1e8a364ed53802d9589a4ff123992/pydicos-1.2.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0713f57617e15074757783e32d6f1feb15a3d1ec678af7cbe3c35bb34a0a8bb9",
                "md5": "cb9fa38c41b7fe72663c176c4741399d",
                "sha256": "b0a5a2df1ea5c395f4379d1c00b192aa7e4e5955fcdcf71e9988ee3e2123d4b3"
            },
            "downloads": -1,
            "filename": "pydicos-1.2.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cb9fa38c41b7fe72663c176c4741399d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3",
            "size": 5662630,
            "upload_time": "2024-08-12T15:21:27",
            "upload_time_iso_8601": "2024-08-12T15:21:27.173776Z",
            "url": "https://files.pythonhosted.org/packages/07/13/f57617e15074757783e32d6f1feb15a3d1ec678af7cbe3c35bb34a0a8bb9/pydicos-1.2.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-12 15:21:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Auxilia-tech",
    "github_project": "pydicos",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "pybind11",
            "specs": []
        },
        {
            "name": "cmake",
            "specs": []
        },
        {
            "name": "wheel",
            "specs": []
        },
        {
            "name": "build",
            "specs": []
        },
        {
            "name": "pytest",
            "specs": []
        },
        {
            "name": "pytest-order",
            "specs": []
        }
    ],
    "lcname": "pydicos"
}
        
Elapsed time: 0.34707s