pmcxcl


Namepmcxcl JSON
Version 0.2.1 PyPI version JSON
download
home_pagehttps://github.com/fangq/mcxcl
SummaryPython bindings for Monte Carlo eXtreme (OpenCL) photon transport simulator
upload_time2024-09-30 04:24:23
maintainerQianqian Fang
docs_urlNone
authorMatin Raayai Ardakani, Qianqian Fang
requires_python>=3.6
licenseGPLv3+
keywords monte carlo simulation biophotonics ray-tracing rendering gpu modeling biomedical optics tissue optics simulator optics opencl
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            ![](http://mcx.space/img/mcx18_banner.png)

# PMCX-CL - Python bindings for Monte Carlo eXtreme (OpenCL) photon transport simulator

- Copyright: (C) Matin Raayai Ardakani (2022-2023) <raayaiardakani.m at northeastern.edu> 
and Qianqian Fang (2019-2024) <q.fang at neu.edu>
- License: GNU Public License V3 or later
- Version: 0.2.1
- URL: https://pypi.org/project/pmcxcl/
- Github: https://github.com/fangq/mcxcl

![Linux Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_linux_manywheel.yml/badge.svg)\
![MacOS Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_macos_wheel.yml/badge.svg)\
![Windows Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_windows_wheel.yml/badge.svg)

This module provides a Python binding for Monte Carlo eXtreme for OpenCL (MCXCL).
For other binaries, including the standalone executable and the MATLAB bindings,
see [our website](https://mcx.space).

Monte Carlo eXtreme (MCX) is a fast photon transport simulation software for 3D 
heterogeneous turbid media. By taking advantage of the massively parallel 
threads and extremely low memory latency in a modern graphics processing unit 
(GPU), MCX is capable of performing Monte Carlo (MC) photon simulations at a 
blazing speed, typically hundreds to a thousand times faster than a single-threaded
CPU-based MC implementation.

## How to Install

* PIP: ```pip install pmcxcl```, see https://pypi.org/project/pmcxcl/


## Runtime Dependencies
* **CPU or GPU**: An OpenCL-capable CPU or GPU; most modern CPUs or GPUs support OpenCL -
an industrial-standard heterogeneous computing library and specification (https://www.khronos.org/opencl/)
* **OpenCL CPU or GPU runtime/driver**: Both NVIDIA and AMD GPU graphics drivers should contain
out-of-box OpenCL runtimes or drivers; for Intel GPUs, one should install additional OpenCL runtime
support from https://github.com/intel/compute-runtime or install the `intel-opencl-icd` package
if the OS provides (such as Ubuntu 22.04); one can also install an open-source OpenCL runtime
[POCL](http://portablecl.org/), using package manager such as `sudo apt-get install pocl-opencl-icd`. However,
POCL's support is largely limited to CPUs. You **do not need** to install CUDA SDK to use pmcxcl.
* **Python**: Python 3.6 and newer is required. **Python 2 is not supported**.
* **numpy**: Used to pass/receive volumetric information to/from pmcxcl. To install, use either conda or pip 
package managers: `pip install numpy` or `conda install numpy`
* (optional) **jdata**: Only needed to read/write JNIfTI output files. To install, use pip: `pip install jdata` 
on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter 
using apt-get: `sudo apt-get install python3-jdata`. See https://pypi.org/project/jdata/ for more details. 
* (optional) **bjdata**: Only needed to read/write BJData/UBJSON files. To install, run `pip install bjdata` 
on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter 
using apt-get: `sudo apt-get install python3-bjdata`. See https://pypi.org/project/bjdata/ for more details. 
* (optional) **matplotlib**: For plotting the results. To install, run either `pip install matplotlib` or
`conda install matplotlib`

## Build Instructions

### Build Dependencies
* **Operating System**: pmcxcl and mcxcl can be compiled on most OSes, including Windows, Linux and MacOS.
* **OpenCL library**: compiling mcxcl or pmcxcl requires to link with `libOpenCL.so` on Linux, or `libOpenCL.dylib`
on MacOS or `OpenCL.dll` on Windows. These libraries should have been installed by either graphics driver or
OpenCL runtimes.
* **Python Interpreter**: Python 3.6 or above. The ```pip``` Python package manager and the ```wheel``` package (available
  via ```pip```) are not required but recommended.
* **C/C++ Compiler**: pmcxcl can be compiled using a wide variety of C compilers, including
  * GNU GCC for Linux, MacOS (intalled via MacPorts or brew), and Windows (installed via msys2, mingw64 or cygwin64)
  * Microsoft Visual Studio C/C++ Compiler for Windows.
  * Apple Clang for macOS, available via Xcode.

  Refer to each OS's online documentations for more in-depth information on how to install these compilers.
  MacOS provides built-in OpenCL library support.
* **OpenMP**: The installed C/C++ Compiler should have support for [OpenMP](https://www.openmp.org/). 
  GCC and Microsoft Visual Studio compiler support OpenMP out of the box. Apple Clang, however, requires manual 
  installation of OpenMP libraries for Apple Clang. The easiest way to do this is via the [Brew](https://brew.sh/) package
  manager, preferably after selecting the correct Xcode version:
  ```zsh
    brew install libomp
    brew link --force libomp
  ```
* **CMake**: CMake version 3.15 and later is required. Refer to the [CMake website](https://cmake.org/download/) for more information on how to download.
  CMake is also widely available on package managers across all operating systems.

### Build Steps
1. Ensure that ```cmake```, ```python``` and the C/C++ compiler are all located over your ```PATH```.
This can be queried via ```echo $env:PATH``` on Windows or ```echo $PATH``` on Linux. If not, locate them and add their folder to the ```PATH```.

2. Clone the repository and switch to the ```pmcxcl/``` folder:
    ```bash
        git clone --recursive https://github.com/fangq/mcx.git
        cd mcx/pmcxcl
    ```
3. One can run `python3 setup.py install` or `python3 -m pip install .` to both locally build and install the module

4. If one only wants to locally build the module, one should run `python3 -m pip wheel .`

5. If the binary module is successfully built locally, you should see a binary wheel file `pmcxcl-X.X.X-cpXX-cpXX-*.whl`
stored inside the `mcxcl/pmcxcl` folder. You can install this wheel package using `python3 -m pip install --force-reinstall pmcxcl-*.whl`
to force installing this locally compiled `pmcxcl` module and overwrite any previously installed versions.


## How to use

The PMCXCL module is easy to use. You can use the `pmcxcl.gpuinfo()` function to first verify
if you have NVIDIA/CUDA compatible GPUs installed; if there are NVIDIA GPUs detected,
you can then call the `run()` function to launch a photon simulation.

A simulation can be defined conveniently in two approaches - a one-liner and a two-liner:

* For the one-liner, one simply pass on each MCX simulation setting as positional
argument. The supported setting names are compatible to nearly all the input fields
for the MATLAB version of MCX/MCXCL - [MCXLAB](https://github.com/fangq/mcx/blob/master/mcxlab/mcxlab.m))

```python3
import pmcxcl
import numpy as np
import matplotlib.pyplot as plt

res = pmcxcl.run(nphoton=1000000, vol=np.ones([60, 60, 60], dtype='uint8'), tstart=0, tend=5e-9, 
               tstep=5e-9, srcpos=[30,30,0], srcdir=[0,0,1], prop=np.array([[0, 0, 1, 1], [0.005, 1, 0.01, 1.37]]))
res['flux'].shape

plt.imshow(np.log10(res['flux'][30,:, :]))
plt.show()
```

* Alternatively, one can also define a Python dict object containing each setting
as a key, and pass on the dict object to `pmcxcl.run()`

```python3
import pmcxcl
import numpy as np
cfg = {'nphoton': 1000000, 'vol':np.ones([60,60,60],dtype='uint8'), 'tstart':0, 'tend':5e-9, 'tstep':5e-9,
       'srcpos': [30,30,0], 'srcdir':[0,0,1], 'prop':[[0,0,1,1],[0.005,1,0.01,1.37]]}
res = pmcxcl.run(cfg)
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fangq/mcxcl",
    "name": "pmcxcl",
    "maintainer": "Qianqian Fang",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "Monte Carlo simulation, Biophotonics, Ray-tracing, Rendering, GPU, Modeling, Biomedical Optics, Tissue Optics, Simulator, Optics, OpenCL",
    "author": "Matin Raayai Ardakani, Qianqian Fang",
    "author_email": "raayaiardakani.m@northeastern.edu, q.fang@neu.edu",
    "download_url": "https://mcx.space",
    "platform": null,
    "description": "![](http://mcx.space/img/mcx18_banner.png)\n\n# PMCX-CL - Python bindings for Monte Carlo eXtreme (OpenCL) photon transport simulator\n\n- Copyright: (C) Matin Raayai Ardakani (2022-2023) <raayaiardakani.m at northeastern.edu> \nand Qianqian Fang (2019-2024) <q.fang at neu.edu>\n- License: GNU Public License V3 or later\n- Version: 0.2.1\n- URL: https://pypi.org/project/pmcxcl/\n- Github: https://github.com/fangq/mcxcl\n\n![Linux Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_linux_manywheel.yml/badge.svg)\\\n![MacOS Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_macos_wheel.yml/badge.svg)\\\n![Windows Python Module](https://github.com/fangq/mcxcl/actions/workflows/build_windows_wheel.yml/badge.svg)\n\nThis module provides a Python binding for Monte Carlo eXtreme for OpenCL (MCXCL).\nFor other binaries, including the standalone executable and the MATLAB bindings,\nsee [our website](https://mcx.space).\n\nMonte Carlo eXtreme (MCX) is a fast photon transport simulation software for 3D \nheterogeneous turbid media. By taking advantage of the massively parallel \nthreads and extremely low memory latency in a modern graphics processing unit \n(GPU), MCX is capable of performing Monte Carlo (MC) photon simulations at a \nblazing speed, typically hundreds to a thousand times faster than a single-threaded\nCPU-based MC implementation.\n\n## How to Install\n\n* PIP: ```pip install pmcxcl```, see https://pypi.org/project/pmcxcl/\n\n\n## Runtime Dependencies\n* **CPU or GPU**: An OpenCL-capable CPU or GPU; most modern CPUs or GPUs support OpenCL -\nan industrial-standard heterogeneous computing library and specification (https://www.khronos.org/opencl/)\n* **OpenCL CPU or GPU runtime/driver**: Both NVIDIA and AMD GPU graphics drivers should contain\nout-of-box OpenCL runtimes or drivers; for Intel GPUs, one should install additional OpenCL runtime\nsupport from https://github.com/intel/compute-runtime or install the `intel-opencl-icd` package\nif the OS provides (such as Ubuntu 22.04); one can also install an open-source OpenCL runtime\n[POCL](http://portablecl.org/), using package manager such as `sudo apt-get install pocl-opencl-icd`. However,\nPOCL's support is largely limited to CPUs. You **do not need** to install CUDA SDK to use pmcxcl.\n* **Python**: Python 3.6 and newer is required. **Python 2 is not supported**.\n* **numpy**: Used to pass/receive volumetric information to/from pmcxcl. To install, use either conda or pip \npackage managers: `pip install numpy` or `conda install numpy`\n* (optional) **jdata**: Only needed to read/write JNIfTI output files. To install, use pip: `pip install jdata` \non all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter \nusing apt-get: `sudo apt-get install python3-jdata`. See https://pypi.org/project/jdata/ for more details. \n* (optional) **bjdata**: Only needed to read/write BJData/UBJSON files. To install, run `pip install bjdata` \non all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter \nusing apt-get: `sudo apt-get install python3-bjdata`. See https://pypi.org/project/bjdata/ for more details. \n* (optional) **matplotlib**: For plotting the results. To install, run either `pip install matplotlib` or\n`conda install matplotlib`\n\n## Build Instructions\n\n### Build Dependencies\n* **Operating System**: pmcxcl and mcxcl can be compiled on most OSes, including Windows, Linux and MacOS.\n* **OpenCL library**: compiling mcxcl or pmcxcl requires to link with `libOpenCL.so` on Linux, or `libOpenCL.dylib`\non MacOS or `OpenCL.dll` on Windows. These libraries should have been installed by either graphics driver or\nOpenCL runtimes.\n* **Python Interpreter**: Python 3.6 or above. The ```pip``` Python package manager and the ```wheel``` package (available\n  via ```pip```) are not required but recommended.\n* **C/C++ Compiler**: pmcxcl can be compiled using a wide variety of C compilers, including\n  * GNU GCC for Linux, MacOS (intalled via MacPorts or brew), and Windows (installed via msys2, mingw64 or cygwin64)\n  * Microsoft Visual Studio C/C++ Compiler for Windows.\n  * Apple Clang for macOS, available via Xcode.\n\n  Refer to each OS's online documentations for more in-depth information on how to install these compilers.\n  MacOS provides built-in OpenCL library support.\n* **OpenMP**: The installed C/C++ Compiler should have support for [OpenMP](https://www.openmp.org/). \n  GCC and Microsoft Visual Studio compiler support OpenMP out of the box. Apple Clang, however, requires manual \n  installation of OpenMP libraries for Apple Clang. The easiest way to do this is via the [Brew](https://brew.sh/) package\n  manager, preferably after selecting the correct Xcode version:\n  ```zsh\n    brew install libomp\n    brew link --force libomp\n  ```\n* **CMake**: CMake version 3.15 and later is required. Refer to the [CMake website](https://cmake.org/download/) for more information on how to download.\n  CMake is also widely available on package managers across all operating systems.\n\n### Build Steps\n1. Ensure that ```cmake```, ```python``` and the C/C++ compiler are all located over your ```PATH```.\nThis can be queried via ```echo $env:PATH``` on Windows or ```echo $PATH``` on Linux. If not, locate them and add their folder to the ```PATH```.\n\n2. Clone the repository and switch to the ```pmcxcl/``` folder:\n    ```bash\n        git clone --recursive https://github.com/fangq/mcx.git\n        cd mcx/pmcxcl\n    ```\n3. One can run `python3 setup.py install` or `python3 -m pip install .` to both locally build and install the module\n\n4. If one only wants to locally build the module, one should run `python3 -m pip wheel .`\n\n5. If the binary module is successfully built locally, you should see a binary wheel file `pmcxcl-X.X.X-cpXX-cpXX-*.whl`\nstored inside the `mcxcl/pmcxcl` folder. You can install this wheel package using `python3 -m pip install --force-reinstall pmcxcl-*.whl`\nto force installing this locally compiled `pmcxcl` module and overwrite any previously installed versions.\n\n\n## How to use\n\nThe PMCXCL module is easy to use. You can use the `pmcxcl.gpuinfo()` function to first verify\nif you have NVIDIA/CUDA compatible GPUs installed; if there are NVIDIA GPUs detected,\nyou can then call the `run()` function to launch a photon simulation.\n\nA simulation can be defined conveniently in two approaches - a one-liner and a two-liner:\n\n* For the one-liner, one simply pass on each MCX simulation setting as positional\nargument. The supported setting names are compatible to nearly all the input fields\nfor the MATLAB version of MCX/MCXCL - [MCXLAB](https://github.com/fangq/mcx/blob/master/mcxlab/mcxlab.m))\n\n```python3\nimport pmcxcl\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nres = pmcxcl.run(nphoton=1000000, vol=np.ones([60, 60, 60], dtype='uint8'), tstart=0, tend=5e-9, \n               tstep=5e-9, srcpos=[30,30,0], srcdir=[0,0,1], prop=np.array([[0, 0, 1, 1], [0.005, 1, 0.01, 1.37]]))\nres['flux'].shape\n\nplt.imshow(np.log10(res['flux'][30,:, :]))\nplt.show()\n```\n\n* Alternatively, one can also define a Python dict object containing each setting\nas a key, and pass on the dict object to `pmcxcl.run()`\n\n```python3\nimport pmcxcl\nimport numpy as np\ncfg = {'nphoton': 1000000, 'vol':np.ones([60,60,60],dtype='uint8'), 'tstart':0, 'tend':5e-9, 'tstep':5e-9,\n       'srcpos': [30,30,0], 'srcdir':[0,0,1], 'prop':[[0,0,1,1],[0.005,1,0.01,1.37]]}\nres = pmcxcl.run(cfg)\n```\n",
    "bugtrack_url": null,
    "license": "GPLv3+",
    "summary": "Python bindings for Monte Carlo eXtreme (OpenCL) photon transport simulator",
    "version": "0.2.1",
    "project_urls": {
        "Download": "https://mcx.space",
        "Homepage": "https://github.com/fangq/mcxcl"
    },
    "split_keywords": [
        "monte carlo simulation",
        " biophotonics",
        " ray-tracing",
        " rendering",
        " gpu",
        " modeling",
        " biomedical optics",
        " tissue optics",
        " simulator",
        " optics",
        " opencl"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df92e23151fbc8b0835829f11b86c30be7a51f9f8f073b5d8c5cd821e343393e",
                "md5": "511958f830e805184f5be9ef457e3270",
                "sha256": "871fb57c861dcf26f9e1423b40d43d61148d841fe687cf2cee7b507096a830bf"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp310-cp310-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "511958f830e805184f5be9ef457e3270",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 534785,
            "upload_time": "2024-09-30T04:24:23",
            "upload_time_iso_8601": "2024-09-30T04:24:23.353846Z",
            "url": "https://files.pythonhosted.org/packages/df/92/e23151fbc8b0835829f11b86c30be7a51f9f8f073b5d8c5cd821e343393e/pmcxcl-0.2.1-cp310-cp310-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c63d8e85051b75f4b0aca955a38b8d865a89fa0da613585e44f230ecb7e14302",
                "md5": "ffdf9fcca3b32cd6424703df6edf9aff",
                "sha256": "503f2a15cb2db174d543d1bf152ba29dcd751c74c87da98b69278e59f9c3d488"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ffdf9fcca3b32cd6424703df6edf9aff",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 1016472,
            "upload_time": "2024-09-30T04:22:58",
            "upload_time_iso_8601": "2024-09-30T04:22:58.422323Z",
            "url": "https://files.pythonhosted.org/packages/c6/3d/8e85051b75f4b0aca955a38b8d865a89fa0da613585e44f230ecb7e14302/pmcxcl-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "38e10914a74f4eaa41b97a3969469e7076d43ba284823d0d09eafca00fd61f25",
                "md5": "1d6a1ec926e07f57d86a1da0f39e0947",
                "sha256": "bcd0beb0f31b438c5f50d3bed2ebe1711fa2dbb36172f8b4d6c9bba896703944"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1d6a1ec926e07f57d86a1da0f39e0947",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 880966,
            "upload_time": "2024-09-30T04:23:02",
            "upload_time_iso_8601": "2024-09-30T04:23:02.575154Z",
            "url": "https://files.pythonhosted.org/packages/38/e1/0914a74f4eaa41b97a3969469e7076d43ba284823d0d09eafca00fd61f25/pmcxcl-0.2.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a52eba0b2c7db0426c9658235e343348f36347c55c15f93df6666161eb18fc4f",
                "md5": "9598eaa075f49129538fbfe9502ef606",
                "sha256": "95eac45638966cb5b2f2fd0345cbe1ab99bcf60fe843aeb92a81162108636f63"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp311-cp311-macosx_12_0_universal2.whl",
            "has_sig": false,
            "md5_digest": "9598eaa075f49129538fbfe9502ef606",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 535876,
            "upload_time": "2024-09-30T04:24:24",
            "upload_time_iso_8601": "2024-09-30T04:24:24.517748Z",
            "url": "https://files.pythonhosted.org/packages/a5/2e/ba0b2c7db0426c9658235e343348f36347c55c15f93df6666161eb18fc4f/pmcxcl-0.2.1-cp311-cp311-macosx_12_0_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02349a4356465ae7012f5e8014cbcd87650f9c49b34812c4ade33159249e24e6",
                "md5": "f4091e0c3bd5cdef8b226ed6d77db097",
                "sha256": "7190a84e09912a8d6d769f0fafffeb0b7535537d4f4634265cad1168293a93eb"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f4091e0c3bd5cdef8b226ed6d77db097",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 1017603,
            "upload_time": "2024-09-30T04:22:59",
            "upload_time_iso_8601": "2024-09-30T04:22:59.694584Z",
            "url": "https://files.pythonhosted.org/packages/02/34/9a4356465ae7012f5e8014cbcd87650f9c49b34812c4ade33159249e24e6/pmcxcl-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "047183439b8e958af68fc528e24f60f81fc174fd5337774c847dd796887674ec",
                "md5": "023c2827b192114056f7f5b8b00c5506",
                "sha256": "b94ac42360bf230815908245d35640dcb2b474ad5846fbfd2ed4cb8cd259e5bc"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "023c2827b192114056f7f5b8b00c5506",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 881677,
            "upload_time": "2024-09-30T04:23:04",
            "upload_time_iso_8601": "2024-09-30T04:23:04.378075Z",
            "url": "https://files.pythonhosted.org/packages/04/71/83439b8e958af68fc528e24f60f81fc174fd5337774c847dd796887674ec/pmcxcl-0.2.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7a1a098ad58e5cee86694582ca8571f237da58982775bca1e2ccf3ce8db514e",
                "md5": "df72172825507a7b89f456f4c5e06758",
                "sha256": "f7881bce1d06128aeba43885037d6fa22657a38cd226ed7680b5ee6f2008f147"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "df72172825507a7b89f456f4c5e06758",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 1017215,
            "upload_time": "2024-09-30T04:23:01",
            "upload_time_iso_8601": "2024-09-30T04:23:01.444041Z",
            "url": "https://files.pythonhosted.org/packages/f7/a1/a098ad58e5cee86694582ca8571f237da58982775bca1e2ccf3ce8db514e/pmcxcl-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "17975d2da0a66888873233dbeecf1c19c0fafb350892715baa050cb1ddb3948f",
                "md5": "e832294c681830551f4fe1e17ac385a9",
                "sha256": "67bd0f1811e114ed460ae24c75afde41ebef5957ab5dbc297d116a9403ed41e6"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e832294c681830551f4fe1e17ac385a9",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 1017110,
            "upload_time": "2024-09-30T04:23:02",
            "upload_time_iso_8601": "2024-09-30T04:23:02.991887Z",
            "url": "https://files.pythonhosted.org/packages/17/97/5d2da0a66888873233dbeecf1c19c0fafb350892715baa050cb1ddb3948f/pmcxcl-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50812b9f056ca81c72c5be67c76345b4215ab3da5ff5963d22815290d2fc37a8",
                "md5": "5c16c9a738afc62416715ff2035f0427",
                "sha256": "bf4a0b621b3a1a2eafe8aa966b641f3fb754299e7b2e83ebd12b43e778d3df82"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5c16c9a738afc62416715ff2035f0427",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 1016604,
            "upload_time": "2024-09-30T04:23:04",
            "upload_time_iso_8601": "2024-09-30T04:23:04.815268Z",
            "url": "https://files.pythonhosted.org/packages/50/81/2b9f056ca81c72c5be67c76345b4215ab3da5ff5963d22815290d2fc37a8/pmcxcl-0.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e603f473a271cd94da4223157add80c6f6de8a7de8345a86a2fa06a674054d0",
                "md5": "4774681887524db492799306cf4aa960",
                "sha256": "ecdc661960d9628f3747dd18d8a099f633c01f87e472cd7cdbd3d714e0514283"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp36-cp36m-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4774681887524db492799306cf4aa960",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 533170,
            "upload_time": "2024-09-30T04:24:25",
            "upload_time_iso_8601": "2024-09-30T04:24:25.708821Z",
            "url": "https://files.pythonhosted.org/packages/4e/60/3f473a271cd94da4223157add80c6f6de8a7de8345a86a2fa06a674054d0/pmcxcl-0.2.1-cp36-cp36m-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "136024e3950c729a68a0bb159acf46599be470362b27bcad6f3c5ad8c582e3e5",
                "md5": "672fd770702ab1e9fd978cd3a3736c56",
                "sha256": "e12e6efffb7c360393532a5e58feebba10f59a3ac9f649375bcf88e72833c00f"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "672fd770702ab1e9fd978cd3a3736c56",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 1016483,
            "upload_time": "2024-09-30T04:23:07",
            "upload_time_iso_8601": "2024-09-30T04:23:07.392692Z",
            "url": "https://files.pythonhosted.org/packages/13/60/24e3950c729a68a0bb159acf46599be470362b27bcad6f3c5ad8c582e3e5/pmcxcl-0.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b2e51019fe3b2c47a12ad76553c3cd3ad8cb66031962520e13c3593852b06802",
                "md5": "1e11d45416b8248eb41b7635cdc73245",
                "sha256": "ed6750632bc056444e1c432ef49166c422cc194fc495a849a97099bcbfbe7d65"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1e11d45416b8248eb41b7635cdc73245",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 883772,
            "upload_time": "2024-09-30T04:23:06",
            "upload_time_iso_8601": "2024-09-30T04:23:06.324447Z",
            "url": "https://files.pythonhosted.org/packages/b2/e5/1019fe3b2c47a12ad76553c3cd3ad8cb66031962520e13c3593852b06802/pmcxcl-0.2.1-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "95905b29c96a67037b80ab4656e103ef20e42fee8564551c1dad0b9084aad973",
                "md5": "25b5438f287ebeb6e0f27f6a55fcd05b",
                "sha256": "a43a6db574fe6b18c2076b147fc08244d13c1b4f56b3f01b36bb1947bed39f3d"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp37-cp37m-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "25b5438f287ebeb6e0f27f6a55fcd05b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 533190,
            "upload_time": "2024-09-30T04:24:27",
            "upload_time_iso_8601": "2024-09-30T04:24:27.145559Z",
            "url": "https://files.pythonhosted.org/packages/95/90/5b29c96a67037b80ab4656e103ef20e42fee8564551c1dad0b9084aad973/pmcxcl-0.2.1-cp37-cp37m-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f434143f6f0d7d679992e84f93af899d9b95c7d959624d12d9b5609e5e1c0f71",
                "md5": "040a1d6afbdb6affdf853c8f03a10b4f",
                "sha256": "e4dcf52ffde34953c3a48f72242b004422e7a81689aa13632dbc5237e8889165"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "040a1d6afbdb6affdf853c8f03a10b4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 1016582,
            "upload_time": "2024-09-30T04:23:10",
            "upload_time_iso_8601": "2024-09-30T04:23:10.847730Z",
            "url": "https://files.pythonhosted.org/packages/f4/34/143f6f0d7d679992e84f93af899d9b95c7d959624d12d9b5609e5e1c0f71/pmcxcl-0.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7dfc60703de5c9ef808d94e31f30b18570b70ef0be829c4446a6f488093d514",
                "md5": "c9da7c94217193a33ff6046c9240e8c8",
                "sha256": "02494f0fe12748be3628f45732bdd57ecf5527a3c2a04270ffbbb48e944bbd48"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c9da7c94217193a33ff6046c9240e8c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 883852,
            "upload_time": "2024-09-30T04:23:08",
            "upload_time_iso_8601": "2024-09-30T04:23:08.807577Z",
            "url": "https://files.pythonhosted.org/packages/a7/df/c60703de5c9ef808d94e31f30b18570b70ef0be829c4446a6f488093d514/pmcxcl-0.2.1-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "11e96cf89acaa4a9ad57b81ae2bcd3a2b2d6771b40af7bc1d76a518259d4666a",
                "md5": "56fb90105bf6eab40c32422deb150185",
                "sha256": "3c69d2b40e4a58479ffed2a90cae08451321ac8c13e227a0a5191d06a66b6bc7"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp38-cp38-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "56fb90105bf6eab40c32422deb150185",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 534841,
            "upload_time": "2024-09-30T04:24:28",
            "upload_time_iso_8601": "2024-09-30T04:24:28.655276Z",
            "url": "https://files.pythonhosted.org/packages/11/e9/6cf89acaa4a9ad57b81ae2bcd3a2b2d6771b40af7bc1d76a518259d4666a/pmcxcl-0.2.1-cp38-cp38-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6ca8612d56ce80f95ada00aa64c0b64d5ed3826e151a3f2ec14edca707b70665",
                "md5": "4d342cb47696b5a76df001fba3ba345b",
                "sha256": "d00fae5875aeb528236ea67d1fc23fd3b81b6b345aa6f9b2b8f4374b93f2ffda"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4d342cb47696b5a76df001fba3ba345b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 1016080,
            "upload_time": "2024-09-30T04:23:13",
            "upload_time_iso_8601": "2024-09-30T04:23:13.071138Z",
            "url": "https://files.pythonhosted.org/packages/6c/a8/612d56ce80f95ada00aa64c0b64d5ed3826e151a3f2ec14edca707b70665/pmcxcl-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8df226ed91565cba16ac867efce66113586aff0ad97c7230421b6166361142d5",
                "md5": "f92905867fc836b9653d27e87d4d6888",
                "sha256": "b47ad29916a22e50c588bca0473f6bf8d2c880d9c5452b6b698b7869dc90b89f"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f92905867fc836b9653d27e87d4d6888",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 881107,
            "upload_time": "2024-09-30T04:23:12",
            "upload_time_iso_8601": "2024-09-30T04:23:12.405038Z",
            "url": "https://files.pythonhosted.org/packages/8d/f2/26ed91565cba16ac867efce66113586aff0ad97c7230421b6166361142d5/pmcxcl-0.2.1-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5668c02ee0170920f46b5c5fbb91e92d7c82307bb6c9c52a728159269a738183",
                "md5": "437515502787cb5178b8b63db5eb6420",
                "sha256": "d1432799272c831d6c6b2e5b0bea664d830e91352c463e4ff862a32e2e19ae28"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp39-cp39-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "437515502787cb5178b8b63db5eb6420",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 534907,
            "upload_time": "2024-09-30T04:24:29",
            "upload_time_iso_8601": "2024-09-30T04:24:29.843231Z",
            "url": "https://files.pythonhosted.org/packages/56/68/c02ee0170920f46b5c5fbb91e92d7c82307bb6c9c52a728159269a738183/pmcxcl-0.2.1-cp39-cp39-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d7b61f1df37bf3901f8a01d4c97def96f40296f89e774eeb0570237be0957be6",
                "md5": "d1ab117beef1f3319f5d9bc1228b3b8f",
                "sha256": "c841cae59e6e450a133ee965b39a1d609e27948823f395725ce9b08893f336ae"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d1ab117beef1f3319f5d9bc1228b3b8f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 1017029,
            "upload_time": "2024-09-30T04:23:15",
            "upload_time_iso_8601": "2024-09-30T04:23:15.483392Z",
            "url": "https://files.pythonhosted.org/packages/d7/b6/1f1df37bf3901f8a01d4c97def96f40296f89e774eeb0570237be0957be6/pmcxcl-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "56525345c13fb645eadbdf76f1e8d1156492f4ab05aaa4b46c74ecbb8200f68f",
                "md5": "017082f236049932de621f35e8795179",
                "sha256": "d6ba9bfce0f2273a4b8a50c556b531de182248e75788eb66f0803d3f2a9c928c"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "017082f236049932de621f35e8795179",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 881018,
            "upload_time": "2024-09-30T04:23:14",
            "upload_time_iso_8601": "2024-09-30T04:23:14.578456Z",
            "url": "https://files.pythonhosted.org/packages/56/52/5345c13fb645eadbdf76f1e8d1156492f4ab05aaa4b46c74ecbb8200f68f/pmcxcl-0.2.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a4880c9b679dd4cf83872e1230539d01c4c029f3b942079a7ab56dae6f08b902",
                "md5": "b9b01986991774978880ed6879453a60",
                "sha256": "7b615efc9c158f81057d618f382eae74ec39eb617f1a179fcb0e7a60ba7d7697"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b9b01986991774978880ed6879453a60",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.6",
            "size": 1016072,
            "upload_time": "2024-09-30T04:23:17",
            "upload_time_iso_8601": "2024-09-30T04:23:17.496871Z",
            "url": "https://files.pythonhosted.org/packages/a4/88/0c9b679dd4cf83872e1230539d01c4c029f3b942079a7ab56dae6f08b902/pmcxcl-0.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "39dfb4ca66385e47f62deb6edc051f669f26abc72f6e2edd76d2931e30a58de2",
                "md5": "4eaee5a7b698c282f17bbfe7b67688b5",
                "sha256": "cc478291c24393fc2c27ba4defdf695346d8af978caba14e9301659c15230f06"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp37-pypy37_pp73-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4eaee5a7b698c282f17bbfe7b67688b5",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.6",
            "size": 533808,
            "upload_time": "2024-09-30T04:24:31",
            "upload_time_iso_8601": "2024-09-30T04:24:31.042589Z",
            "url": "https://files.pythonhosted.org/packages/39/df/b4ca66385e47f62deb6edc051f669f26abc72f6e2edd76d2931e30a58de2/pmcxcl-0.2.1-pp37-pypy37_pp73-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e11cc790c704415c0de4620106fd694b2a6712816ce6b824e5f59a7143dc5ae9",
                "md5": "00a6598476ba451ae302fdbfb282eb3e",
                "sha256": "218baabe4c5f490431a634bbe148effa3a2f37a1007253a36c82fda2b3035c3d"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp37-pypy37_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "00a6598476ba451ae302fdbfb282eb3e",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.6",
            "size": 880235,
            "upload_time": "2024-09-30T04:23:16",
            "upload_time_iso_8601": "2024-09-30T04:23:16.582840Z",
            "url": "https://files.pythonhosted.org/packages/e1/1c/c790c704415c0de4620106fd694b2a6712816ce6b824e5f59a7143dc5ae9/pmcxcl-0.2.1-pp37-pypy37_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c0e65a534caa74ec12004f7435d73d370c1a7fe4ea2acd3d01ddeff52a65f21",
                "md5": "0097ee21e91d6f2c0d62f5d876998a6d",
                "sha256": "7c54bd57e70622674d535788da5faced3cb910fa132d52465b685a98d2f00f3a"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp38-pypy38_pp73-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0097ee21e91d6f2c0d62f5d876998a6d",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.6",
            "size": 534282,
            "upload_time": "2024-09-30T04:24:32",
            "upload_time_iso_8601": "2024-09-30T04:24:32.196258Z",
            "url": "https://files.pythonhosted.org/packages/1c/0e/65a534caa74ec12004f7435d73d370c1a7fe4ea2acd3d01ddeff52a65f21/pmcxcl-0.2.1-pp38-pypy38_pp73-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e199065de243866552c79efce437dc02cfd7987a6b5c7447225a479f5da9abfa",
                "md5": "7988609cf33b18a6f4f228a6c0932795",
                "sha256": "a4d41bee94ed0d7d27ab922eaac209b5a15763fe612ef88f07e871acc2ecf6bc"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp38-pypy38_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7988609cf33b18a6f4f228a6c0932795",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.6",
            "size": 881293,
            "upload_time": "2024-09-30T04:23:19",
            "upload_time_iso_8601": "2024-09-30T04:23:19.180039Z",
            "url": "https://files.pythonhosted.org/packages/e1/99/065de243866552c79efce437dc02cfd7987a6b5c7447225a479f5da9abfa/pmcxcl-0.2.1-pp38-pypy38_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "57cbfa39b9f720596f6daa94f6a4cb796bdeaaac4ac1d83d5574baf21418642d",
                "md5": "c6c8be62e64f61b16ee775b2a7a7eda0",
                "sha256": "2b6cb53478e29fcad2683d24d4b078f57106d88abf1e8a05861f7a9430d30897"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp39-pypy39_pp73-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c6c8be62e64f61b16ee775b2a7a7eda0",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.6",
            "size": 534120,
            "upload_time": "2024-09-30T04:24:33",
            "upload_time_iso_8601": "2024-09-30T04:24:33.628104Z",
            "url": "https://files.pythonhosted.org/packages/57/cb/fa39b9f720596f6daa94f6a4cb796bdeaaac4ac1d83d5574baf21418642d/pmcxcl-0.2.1-pp39-pypy39_pp73-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "acccbfc2d7d5f96c042ad939b5d5877852da1fd966db2b6ec224f107834692fd",
                "md5": "727dbe919dda9fa2175b87139f5bc9a3",
                "sha256": "d9a05f127e52992e10a42120e684dfb9db1114dc9b29c7ca53e16d2b50d26216"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "727dbe919dda9fa2175b87139f5bc9a3",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.6",
            "size": 1016386,
            "upload_time": "2024-09-30T04:23:19",
            "upload_time_iso_8601": "2024-09-30T04:23:19.947384Z",
            "url": "https://files.pythonhosted.org/packages/ac/cc/bfc2d7d5f96c042ad939b5d5877852da1fd966db2b6ec224f107834692fd/pmcxcl-0.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d041821e1bdd231e061022db13c18d80da4fc8046c3f43fd064b372e97e980cb",
                "md5": "89e41cd8fa595c41326c3f41c5d00cb6",
                "sha256": "48d61bc4af82705654cc9b5876fd60917da9d2c0687d9ea549e543a162cc2a4f"
            },
            "downloads": -1,
            "filename": "pmcxcl-0.2.1-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "89e41cd8fa595c41326c3f41c5d00cb6",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.6",
            "size": 880874,
            "upload_time": "2024-09-30T04:23:21",
            "upload_time_iso_8601": "2024-09-30T04:23:21.725184Z",
            "url": "https://files.pythonhosted.org/packages/d0/41/821e1bdd231e061022db13c18d80da4fc8046c3f43fd064b372e97e980cb/pmcxcl-0.2.1-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-30 04:24:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fangq",
    "github_project": "mcxcl",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pmcxcl"
}
        
Elapsed time: 0.62020s