pydftracer


Namepydftracer JSON
Version 1.0.8 PyPI version JSON
download
home_pagehttps://github.com/hariharan-devarajan/dftracer
SummaryI/O profiler for deep learning python apps. Specifically for dlio_benchmark.
upload_time2024-12-17 03:37:11
maintainerNone
docs_urlNone
authorHariharan Devarajan (Hari)
requires_python>=3.7
licenseNone
keywords profiler deep learning i/o benchmark npz pytorch benchmark tensorflow benchmark
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DFTracer

[![Build and Test](https://github.com/hariharan-devarajan/dftracer/actions/workflows/ci.yml/badge.svg)](https://github.com/hariharan-devarajan/dftracer/actions/workflows/ci.yml)
[![Documentation Status](https://readthedocs.org/projects/dftracer/badge/?version=latest)](https://dftracer.readthedocs.io/en/latest/?badge=latest)
![PyPI - Version](https://img.shields.io/pypi/v/pydftracer?label=PyPI)
![PyPI - Wheel](https://img.shields.io/pypi/wheel/pydftracer?label=Wheel)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pydftracer?label=Python)
![PyPI - License](https://img.shields.io/pypi/l/pydftracer?label=License)

## Overview

DFTracer is a tracing tool designed to capture both application-code and I/O-call level events from workflows. It provides a unified tracing interface, optimized trace format, and compression mechanism to enable efficient distributed analysis for large-scale AI-driven workloads.

## Prerequisites

Requirements for DFTracer

1. Python>=3.7
1. pybind11

Requirements for DFAnalyzer

1. bokeh>=2.4.2
1. dask>=2023.5.0
1. distributed
1. matplotlib>=3.7.3
1. numpy>=1.24.3
1. pandas>=2.0.3
1. pyarrow>=12.0.1
1. pybind11
1. python-intervals>=1.10.0.post1
1. rich>=13.6.0
1. seaborn>=0.13.2
1. [zindex_py](https://github.com/hariharan-devarajan/zindex.git)

## Installation

Users can easily install DFTracer using `pip`, the standard tool for installing Python packages. 
This method works for both native Python and Conda environments.

### From PyPI

```bash
pip install pydftracer
pip install pydftracer[dfanalyzer]
```

### From Github

```bash
DFTRACER_VERSION=develop
pip install git+https://github.com/hariharan-devarajan/dftracer.git@${DFTRACER_VERSION}
pip install git+https://github.com/hariharan-devarajan/dftracer.git@${DFTRACER_VERSION}#egg=pydftracer[dfanalyzer]
```

### From Source

```bash
git clone git@github.com:hariharan-devarajan/dftracer.git
cd dftracer
# You can skip this for installing the dev branch.
# for latest stable version use master branch.
git checkout tags/<Release> -b <Release>
pip install .
```

For detailed build instructions, click [here](https://dftracer.readthedocs.io/en/latest/build.html).

## Usage

```python
from dftracer.logger import dftracer, dft_fn
log_inst = dftracer.initialize_log(logfile=None, data_dir=None, process_id=-1)
dft_fn = dft_fn("COMPUTE")

# Example of using function decorators
@dft_fn.log
def log_events(index):
    sleep(1)

# Example of function spawning and implicit I/O calls
def posix_calls(val):
    index, is_spawn = val
    path = f"{cwd}/data/demofile{index}.txt"
    f = open(path, "w+")
    f.write("Now the file has more content!")
    f.close()
    if is_spawn:
        print(f"Calling spawn on {index} with pid {os.getpid()}")
        log_inst.finalize() # This need to be called to correctly finalize DFTracer.
    else:
        print(f"Not calling spawn on {index} with pid {os.getpid()}")

# NPZ calls internally calls POSIX calls.
def npz_calls(index):
    path = f"{cwd}/data/demofile{index}.npz"
    if os.path.exists(path):
        os.remove(path)
    records = np.random.randint(255, size=(8, 8, 1024), dtype=np.uint8)
    record_labels = [0] * 1024
    np.savez(path, x=records, y=record_labels)

def main():
    log_events(0)
    npz_calls(1)
    with get_context('spawn').Pool(1, initializer=init) as pool:
        pool.map(posix_calls, ((2, True),))
    log_inst.finalize()

if __name__ == "__main__":
    main()
```

For this example, as the `dftracer.initialize_log` do not pass `logfile` or `data_dir`, we need to set `DFTRACER_LOG_FILE` and `DFTRACER_DATA_DIR`.
By default the DFTracer mode is set to `FUNCTION`.
Example of running this configurations are:

```bash
# The process id, app_name and .pfw will be appended by DFTracer for each app and process.
# The name of the final log file will be ~/log_file-<APP_NAME>-<PID>.pfw
DFTRACER_LOG_FILE=~/log_file
# Colon separated paths to include in the tracing
DFTRACER_DATA_DIR=/dev/shm/:/p/gpfs1/$USER/dataset:$PWD/data
# Enable DFTracer
DFTRACER_ENABLE=1
```

For more examples, click [here](https://dftracer.readthedocs.io/en/latest/examples.html).

## Documentation

* Building DFTracer: [https://dftracer.readthedocs.io/en/latest/build.html](https://dftracer.readthedocs.io/en/latest/build.html)
* Integrating DFTracer: [https://dftracer.readthedocs.io/en/latest/examples.html](https://dftracer.readthedocs.io/en/latest/examples.html)
* Visualizing DFTracer Traces: [https://dftracer.readthedocs.io/en/latest/perfetto.html](https://dftracer.readthedocs.io/en/latest/perfetto.html)
* Building DFAnalyzer: [https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html](https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html)

## Citation and Reference

The original SC'24 paper describes the design and implementation of the DFTracer code. Please cite this paper and the code if you use DFTracer in your research. 

```
@inproceedings{devarajan_dftracer_2024,
    address = {Atlanta, GA},
    title = {{DFTracer}: {An} {Analysis}-{Friendly} {Data} {Flow} {Tracer} for {AI}-{Driven} {Workflows}},
    shorttitle = {{DFTracer}},
    urldate = {2024-07-31},
    booktitle = {{SC24}: {International} {Conference} for {High} {Performance} {Computing}, {Networking}, {Storage} and {Analysis}},
    publisher = {IEEE},
    author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
    month = nov,
    year = {2024},
}

@misc{devarajan_dftracer_code_2024,
    type = {Github},
    title = {Github {DFTracer}},
    shorttitle = {{DFTracer}},
    url = {https://github.com/hariharan-devarajan/dftracer.git},
    urldate = {2024-07-31},
    journal = {DFTracer: A multi-level dataflow tracer for capture I/O calls from worklows.},
    author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
    month = jun,
    year = {2024},
}
```

## Acknowledgments

This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344; and under the auspices of the National Cancer Institute (NCI) by Frederick National Laboratory for Cancer Research (FNLCR) under Contract 75N91019D00024. This research used resources of the Argonne Leadership Computing Facility, a U.S. Department of Energy (DOE) Office of Science user facility at Argonne National Laboratory and is based on research supported by the U.S. DOE Office of Science-Advanced Scientific Computing Research Program, under Contract No. DE-AC02-06CH11357. Office of Advanced Scientific Computing Research under the DOE Early Career Research Program. Also, This material is based upon work partially supported by LLNL LDRD 23-ERD-045 and 24-SI-005. LLNL-CONF-857447.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hariharan-devarajan/dftracer",
    "name": "pydftracer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "profiler, deep learning, I/O, benchmark, NPZ, pytorch benchmark, tensorflow benchmark",
    "author": "Hariharan Devarajan (Hari)",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e7/ca/480beed4c15433e55004fd9cc9611dbf8d8215a6fbbc7f131f22a2a33b16/pydftracer-1.0.8.tar.gz",
    "platform": null,
    "description": "# DFTracer\n\n[![Build and Test](https://github.com/hariharan-devarajan/dftracer/actions/workflows/ci.yml/badge.svg)](https://github.com/hariharan-devarajan/dftracer/actions/workflows/ci.yml)\n[![Documentation Status](https://readthedocs.org/projects/dftracer/badge/?version=latest)](https://dftracer.readthedocs.io/en/latest/?badge=latest)\n![PyPI - Version](https://img.shields.io/pypi/v/pydftracer?label=PyPI)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/pydftracer?label=Wheel)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pydftracer?label=Python)\n![PyPI - License](https://img.shields.io/pypi/l/pydftracer?label=License)\n\n## Overview\n\nDFTracer is a tracing tool designed to capture both application-code and I/O-call level events from workflows. It provides a unified tracing interface, optimized trace format, and compression mechanism to enable efficient distributed analysis for large-scale AI-driven workloads.\n\n## Prerequisites\n\nRequirements for DFTracer\n\n1. Python>=3.7\n1. pybind11\n\nRequirements for DFAnalyzer\n\n1. bokeh>=2.4.2\n1. dask>=2023.5.0\n1. distributed\n1. matplotlib>=3.7.3\n1. numpy>=1.24.3\n1. pandas>=2.0.3\n1. pyarrow>=12.0.1\n1. pybind11\n1. python-intervals>=1.10.0.post1\n1. rich>=13.6.0\n1. seaborn>=0.13.2\n1. [zindex_py](https://github.com/hariharan-devarajan/zindex.git)\n\n## Installation\n\nUsers can easily install DFTracer using `pip`, the standard tool for installing Python packages. \nThis method works for both native Python and Conda environments.\n\n### From PyPI\n\n```bash\npip install pydftracer\npip install pydftracer[dfanalyzer]\n```\n\n### From Github\n\n```bash\nDFTRACER_VERSION=develop\npip install git+https://github.com/hariharan-devarajan/dftracer.git@${DFTRACER_VERSION}\npip install git+https://github.com/hariharan-devarajan/dftracer.git@${DFTRACER_VERSION}#egg=pydftracer[dfanalyzer]\n```\n\n### From Source\n\n```bash\ngit clone git@github.com:hariharan-devarajan/dftracer.git\ncd dftracer\n# You can skip this for installing the dev branch.\n# for latest stable version use master branch.\ngit checkout tags/<Release> -b <Release>\npip install .\n```\n\nFor detailed build instructions, click [here](https://dftracer.readthedocs.io/en/latest/build.html).\n\n## Usage\n\n```python\nfrom dftracer.logger import dftracer, dft_fn\nlog_inst = dftracer.initialize_log(logfile=None, data_dir=None, process_id=-1)\ndft_fn = dft_fn(\"COMPUTE\")\n\n# Example of using function decorators\n@dft_fn.log\ndef log_events(index):\n    sleep(1)\n\n# Example of function spawning and implicit I/O calls\ndef posix_calls(val):\n    index, is_spawn = val\n    path = f\"{cwd}/data/demofile{index}.txt\"\n    f = open(path, \"w+\")\n    f.write(\"Now the file has more content!\")\n    f.close()\n    if is_spawn:\n        print(f\"Calling spawn on {index} with pid {os.getpid()}\")\n        log_inst.finalize() # This need to be called to correctly finalize DFTracer.\n    else:\n        print(f\"Not calling spawn on {index} with pid {os.getpid()}\")\n\n# NPZ calls internally calls POSIX calls.\ndef npz_calls(index):\n    path = f\"{cwd}/data/demofile{index}.npz\"\n    if os.path.exists(path):\n        os.remove(path)\n    records = np.random.randint(255, size=(8, 8, 1024), dtype=np.uint8)\n    record_labels = [0] * 1024\n    np.savez(path, x=records, y=record_labels)\n\ndef main():\n    log_events(0)\n    npz_calls(1)\n    with get_context('spawn').Pool(1, initializer=init) as pool:\n        pool.map(posix_calls, ((2, True),))\n    log_inst.finalize()\n\nif __name__ == \"__main__\":\n    main()\n```\n\nFor this example, as the `dftracer.initialize_log` do not pass `logfile` or `data_dir`, we need to set `DFTRACER_LOG_FILE` and `DFTRACER_DATA_DIR`.\nBy default the DFTracer mode is set to `FUNCTION`.\nExample of running this configurations are:\n\n```bash\n# The process id, app_name and .pfw will be appended by DFTracer for each app and process.\n# The name of the final log file will be ~/log_file-<APP_NAME>-<PID>.pfw\nDFTRACER_LOG_FILE=~/log_file\n# Colon separated paths to include in the tracing\nDFTRACER_DATA_DIR=/dev/shm/:/p/gpfs1/$USER/dataset:$PWD/data\n# Enable DFTracer\nDFTRACER_ENABLE=1\n```\n\nFor more examples, click [here](https://dftracer.readthedocs.io/en/latest/examples.html).\n\n## Documentation\n\n* Building DFTracer: [https://dftracer.readthedocs.io/en/latest/build.html](https://dftracer.readthedocs.io/en/latest/build.html)\n* Integrating DFTracer: [https://dftracer.readthedocs.io/en/latest/examples.html](https://dftracer.readthedocs.io/en/latest/examples.html)\n* Visualizing DFTracer Traces: [https://dftracer.readthedocs.io/en/latest/perfetto.html](https://dftracer.readthedocs.io/en/latest/perfetto.html)\n* Building DFAnalyzer: [https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html](https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html)\n\n## Citation and Reference\n\nThe original SC'24 paper describes the design and implementation of the DFTracer code. Please cite this paper and the code if you use DFTracer in your research. \n\n```\n@inproceedings{devarajan_dftracer_2024,\n    address = {Atlanta, GA},\n    title = {{DFTracer}: {An} {Analysis}-{Friendly} {Data} {Flow} {Tracer} for {AI}-{Driven} {Workflows}},\n    shorttitle = {{DFTracer}},\n    urldate = {2024-07-31},\n    booktitle = {{SC24}: {International} {Conference} for {High} {Performance} {Computing}, {Networking}, {Storage} and {Analysis}},\n    publisher = {IEEE},\n    author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},\n    month = nov,\n    year = {2024},\n}\n\n@misc{devarajan_dftracer_code_2024,\n    type = {Github},\n    title = {Github {DFTracer}},\n    shorttitle = {{DFTracer}},\n    url = {https://github.com/hariharan-devarajan/dftracer.git},\n    urldate = {2024-07-31},\n    journal = {DFTracer: A multi-level dataflow tracer for capture I/O calls from worklows.},\n    author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},\n    month = jun,\n    year = {2024},\n}\n```\n\n## Acknowledgments\n\nThis work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344; and under the auspices of the National Cancer Institute (NCI) by Frederick National Laboratory for Cancer Research (FNLCR) under Contract 75N91019D00024. This research used resources of the Argonne Leadership Computing Facility, a U.S. Department of Energy (DOE) Office of Science user facility at Argonne National Laboratory and is based on research supported by the U.S. DOE Office of Science-Advanced Scientific Computing Research Program, under Contract No. DE-AC02-06CH11357. Office of Advanced Scientific Computing Research under the DOE Early Career Research Program. Also, This material is based upon work partially supported by LLNL LDRD 23-ERD-045 and 24-SI-005. LLNL-CONF-857447.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "I/O profiler for deep learning python apps. Specifically for dlio_benchmark.",
    "version": "1.0.8",
    "project_urls": {
        "Bug Reports": "https://github.com/hariharan-devarajan/dftracer/issues",
        "Homepage": "https://github.com/hariharan-devarajan/dftracer",
        "Source": "https://github.com/hariharan-devarajan/dftracer"
    },
    "split_keywords": [
        "profiler",
        " deep learning",
        " i/o",
        " benchmark",
        " npz",
        " pytorch benchmark",
        " tensorflow benchmark"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "54f10de593cec75cc2037dcc0e3f92f4d89faa7d7c7cdd397c2c032a27f2e5f0",
                "md5": "31ef14705b556e3f3392385c5a67ca2a",
                "sha256": "9cacdd09ef9df2147cde5c954da23c7bd811f397536b54a20d2e268a7d6b691b"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp310-cp310-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "31ef14705b556e3f3392385c5a67ca2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 2371065,
            "upload_time": "2024-12-17T03:35:55",
            "upload_time_iso_8601": "2024-12-17T03:35:55.714544Z",
            "url": "https://files.pythonhosted.org/packages/54/f1/0de593cec75cc2037dcc0e3f92f4d89faa7d7c7cdd397c2c032a27f2e5f0/pydftracer-1.0.8-cp310-cp310-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0e143612cc539f3908eb962bfee8822ce0780c20c823e2fb2be58a0058fa50ac",
                "md5": "8b69a8453b764f1f37b410e77ec7be25",
                "sha256": "01cb974651a15fdd81ee9b6ea1496f6b7a8b89e179d99b29ee4a19280eee0550"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp310-cp310-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8b69a8453b764f1f37b410e77ec7be25",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 2472852,
            "upload_time": "2024-12-17T03:35:40",
            "upload_time_iso_8601": "2024-12-17T03:35:40.645820Z",
            "url": "https://files.pythonhosted.org/packages/0e/14/3612cc539f3908eb962bfee8822ce0780c20c823e2fb2be58a0058fa50ac/pydftracer-1.0.8-cp310-cp310-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d2a4993cb69548444c4db6bd196e02e52d36956e25f41344b84851fcb773c24c",
                "md5": "6926c9ed64503f3659e3487fc7929dd9",
                "sha256": "13549129638c1b51994e0156274691292c983ceb63cad3b0e436c198095499d5"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp310-cp310-manylinux_2_38_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6926c9ed64503f3659e3487fc7929dd9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 2531528,
            "upload_time": "2024-12-17T03:36:03",
            "upload_time_iso_8601": "2024-12-17T03:36:03.816681Z",
            "url": "https://files.pythonhosted.org/packages/d2/a4/993cb69548444c4db6bd196e02e52d36956e25f41344b84851fcb773c24c/pydftracer-1.0.8-cp310-cp310-manylinux_2_38_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "423f646725c0ec54e922d202cd5a14e37c7bc27cb6a4ca211cbaf553d628ac2a",
                "md5": "a805d965b0758d1427f9643dae0b0725",
                "sha256": "bbf4989f7875dd843d2dbfbe34781e573ef40f239e19c7bd51fdfd4ff68c0b4c"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp311-cp311-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a805d965b0758d1427f9643dae0b0725",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 2377297,
            "upload_time": "2024-12-17T03:35:53",
            "upload_time_iso_8601": "2024-12-17T03:35:53.015825Z",
            "url": "https://files.pythonhosted.org/packages/42/3f/646725c0ec54e922d202cd5a14e37c7bc27cb6a4ca211cbaf553d628ac2a/pydftracer-1.0.8-cp311-cp311-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e0a414085550d7a83e012f3fab7832b87fcb19e476e22e290ce2ea423f28612",
                "md5": "07fd7eca20616e1d966ae2744bc10813",
                "sha256": "1ea586ccbdc7839ae7a7f342adf1407530bb8c9fd371fc3355501312c6cb0f86"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp311-cp311-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "07fd7eca20616e1d966ae2744bc10813",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 2478044,
            "upload_time": "2024-12-17T03:35:46",
            "upload_time_iso_8601": "2024-12-17T03:35:46.913361Z",
            "url": "https://files.pythonhosted.org/packages/7e/0a/414085550d7a83e012f3fab7832b87fcb19e476e22e290ce2ea423f28612/pydftracer-1.0.8-cp311-cp311-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "60e7ffa7830e43e413e20abbde89b0d7807575c2d886f53c13665fd115d52929",
                "md5": "0146f6d7e260eeaf9a7a34353ae378af",
                "sha256": "f740680298a58167c0ae4685fdca43f239b6843910aae26477ec4c06d659a239"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp311-cp311-manylinux_2_38_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0146f6d7e260eeaf9a7a34353ae378af",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 2536380,
            "upload_time": "2024-12-17T03:36:07",
            "upload_time_iso_8601": "2024-12-17T03:36:07.583863Z",
            "url": "https://files.pythonhosted.org/packages/60/e7/ffa7830e43e413e20abbde89b0d7807575c2d886f53c13665fd115d52929/pydftracer-1.0.8-cp311-cp311-manylinux_2_38_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "036cb05684731db242589395bf47fcb94f72c92b4af98cb23eba7d29affab856",
                "md5": "77ffa1c9089c5afa2cab3ee5499498b8",
                "sha256": "aa7c4557b942373321dbc129a6d9419d56e9bc16ab6e03f192ccd0132c0bb69a"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp312-cp312-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "77ffa1c9089c5afa2cab3ee5499498b8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 2375390,
            "upload_time": "2024-12-17T03:36:12",
            "upload_time_iso_8601": "2024-12-17T03:36:12.935758Z",
            "url": "https://files.pythonhosted.org/packages/03/6c/b05684731db242589395bf47fcb94f72c92b4af98cb23eba7d29affab856/pydftracer-1.0.8-cp312-cp312-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8afda0096ecfa6fcbb5f30d6e39f92c2e53fd18685725dada43d24cc4fc7ecac",
                "md5": "d44b49d0b17d1f11af7cf2a945ef1cdb",
                "sha256": "19f2b68dc3d454d0de973dd181a341971a3407f04aa1fd7f0ea9a4ce5c773197"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp312-cp312-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d44b49d0b17d1f11af7cf2a945ef1cdb",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 2475285,
            "upload_time": "2024-12-17T03:36:55",
            "upload_time_iso_8601": "2024-12-17T03:36:55.969605Z",
            "url": "https://files.pythonhosted.org/packages/8a/fd/a0096ecfa6fcbb5f30d6e39f92c2e53fd18685725dada43d24cc4fc7ecac/pydftracer-1.0.8-cp312-cp312-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3f606c56422399d46f6296df4913e44ed3c66cea1d3bb36200ff4f4d893cc067",
                "md5": "23030e8ecc0637889b6eaf40c6cd3b71",
                "sha256": "b6b04aded8c4f5459f46185d03e3f2644db7d8ac6782e83b465ee26ed491b3af"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp312-cp312-manylinux_2_38_x86_64.whl",
            "has_sig": false,
            "md5_digest": "23030e8ecc0637889b6eaf40c6cd3b71",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 2537741,
            "upload_time": "2024-12-17T03:36:51",
            "upload_time_iso_8601": "2024-12-17T03:36:51.115642Z",
            "url": "https://files.pythonhosted.org/packages/3f/60/6c56422399d46f6296df4913e44ed3c66cea1d3bb36200ff4f4d893cc067/pydftracer-1.0.8-cp312-cp312-manylinux_2_38_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "197cadf2123a20670e2af96574a9e38dbbb7f0166fd6e1b957acd793614d7a44",
                "md5": "a3e578821559747a914685d0e5c77a08",
                "sha256": "27a7286c94edd5b19b479fe4aae070716567f7f37dc335f030fdf5f4cda9f7fd"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp37-cp37m-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a3e578821559747a914685d0e5c77a08",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 2375710,
            "upload_time": "2024-12-17T03:37:08",
            "upload_time_iso_8601": "2024-12-17T03:37:08.803888Z",
            "url": "https://files.pythonhosted.org/packages/19/7c/adf2123a20670e2af96574a9e38dbbb7f0166fd6e1b957acd793614d7a44/pydftracer-1.0.8-cp37-cp37m-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61fe42576dfe3b4e2ae92dbeb44228c8e2ea5f3bd691e26ef033c7cb473baa8e",
                "md5": "f2a510bb1cf1d7aeb2c7b8d26ec9c8a8",
                "sha256": "5ae1124ab31a5a3008a14b4832ad441fe32b86ac81a23c346dcfbc77d995b1df"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp37-cp37m-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f2a510bb1cf1d7aeb2c7b8d26ec9c8a8",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 2474290,
            "upload_time": "2024-12-17T03:36:59",
            "upload_time_iso_8601": "2024-12-17T03:36:59.765182Z",
            "url": "https://files.pythonhosted.org/packages/61/fe/42576dfe3b4e2ae92dbeb44228c8e2ea5f3bd691e26ef033c7cb473baa8e/pydftracer-1.0.8-cp37-cp37m-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e83c96b0e13cabc19950a1db1c6de498f2252d53c17db72bbf9b61634fc21bce",
                "md5": "c9eb3e84212a7610d347475026ba3487",
                "sha256": "b81f7c7882b8d6d571431147231b15f08f15f35bd67f573351cd0061870a535c"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp38-cp38-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c9eb3e84212a7610d347475026ba3487",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 2371479,
            "upload_time": "2024-12-17T03:37:48",
            "upload_time_iso_8601": "2024-12-17T03:37:48.869109Z",
            "url": "https://files.pythonhosted.org/packages/e8/3c/96b0e13cabc19950a1db1c6de498f2252d53c17db72bbf9b61634fc21bce/pydftracer-1.0.8-cp38-cp38-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1a90277361780a2e7fe232f257ffc68fbd8c98add81c2387b14414755b666cc6",
                "md5": "11dc98aedbc4510f5fc0b5c748e92005",
                "sha256": "7dcbe9b572b5bad876c20c12d9e7c24b7a1a157858f437b12525b816c658f08c"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp38-cp38-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "11dc98aedbc4510f5fc0b5c748e92005",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 2472703,
            "upload_time": "2024-12-17T03:37:37",
            "upload_time_iso_8601": "2024-12-17T03:37:37.577181Z",
            "url": "https://files.pythonhosted.org/packages/1a/90/277361780a2e7fe232f257ffc68fbd8c98add81c2387b14414755b666cc6/pydftracer-1.0.8-cp38-cp38-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02579d85a2e0d0d0cb65941cf6d8a01e96015d348d5f81fde896c0756c4ccc6d",
                "md5": "14428be50d244a7e4e41b8ecd2708ffa",
                "sha256": "4d3e427b7060b484378c5681625128eac2fc204a88a4127e1f34b5774d8024de"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp38-cp38-manylinux_2_38_x86_64.whl",
            "has_sig": false,
            "md5_digest": "14428be50d244a7e4e41b8ecd2708ffa",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 2531039,
            "upload_time": "2024-12-17T03:37:53",
            "upload_time_iso_8601": "2024-12-17T03:37:53.768200Z",
            "url": "https://files.pythonhosted.org/packages/02/57/9d85a2e0d0d0cb65941cf6d8a01e96015d348d5f81fde896c0756c4ccc6d/pydftracer-1.0.8-cp38-cp38-manylinux_2_38_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac200d0869d37b912e913542ad70b1f8d903c309c0f668ebf3b2f678a3443f61",
                "md5": "4b44a6ad1acec63c49a48df525bfbff6",
                "sha256": "e6c62d70ea959e3301ee0be314ab694985b8f17de437c42997f347c43891c589"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp39-cp39-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4b44a6ad1acec63c49a48df525bfbff6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 2372221,
            "upload_time": "2024-12-17T03:38:04",
            "upload_time_iso_8601": "2024-12-17T03:38:04.303365Z",
            "url": "https://files.pythonhosted.org/packages/ac/20/0d0869d37b912e913542ad70b1f8d903c309c0f668ebf3b2f678a3443f61/pydftracer-1.0.8-cp39-cp39-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "922b16386cc9329e92e2f3788a052942e53f902e35807a5c100eb506634da3b9",
                "md5": "b5307ad1ed214b52dc0923767414f6f4",
                "sha256": "f15583b88464aa5c43acaa2ded6fbcdf2a7182794473534be6e649c1aa175987"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp39-cp39-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b5307ad1ed214b52dc0923767414f6f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 2474048,
            "upload_time": "2024-12-17T03:37:42",
            "upload_time_iso_8601": "2024-12-17T03:37:42.617273Z",
            "url": "https://files.pythonhosted.org/packages/92/2b/16386cc9329e92e2f3788a052942e53f902e35807a5c100eb506634da3b9/pydftracer-1.0.8-cp39-cp39-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "39ccf2504b4abb6abff7bd43951bbca5a3ec394d2bf52898d10d1b1464b371f6",
                "md5": "ded10fddff2cf1a64a2d8f130c22fcfb",
                "sha256": "097b3fef0004e10d0c3a57cef6eb90d63a859416e0559521cf0c3504311cd022"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8-cp39-cp39-manylinux_2_38_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ded10fddff2cf1a64a2d8f130c22fcfb",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 2531965,
            "upload_time": "2024-12-17T03:38:15",
            "upload_time_iso_8601": "2024-12-17T03:38:15.388504Z",
            "url": "https://files.pythonhosted.org/packages/39/cc/f2504b4abb6abff7bd43951bbca5a3ec394d2bf52898d10d1b1464b371f6/pydftracer-1.0.8-cp39-cp39-manylinux_2_38_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e7ca480beed4c15433e55004fd9cc9611dbf8d8215a6fbbc7f131f22a2a33b16",
                "md5": "967d693e7b4f68c01f7a4d9db5f81d67",
                "sha256": "df987a0b4560bfd1be6fa9ed9fa6cfe49e811f1ac4a677170c9b4b8968994f00"
            },
            "downloads": -1,
            "filename": "pydftracer-1.0.8.tar.gz",
            "has_sig": false,
            "md5_digest": "967d693e7b4f68c01f7a4d9db5f81d67",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 77170,
            "upload_time": "2024-12-17T03:37:11",
            "upload_time_iso_8601": "2024-12-17T03:37:11.556536Z",
            "url": "https://files.pythonhosted.org/packages/e7/ca/480beed4c15433e55004fd9cc9611dbf8d8215a6fbbc7f131f22a2a33b16/pydftracer-1.0.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-17 03:37:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hariharan-devarajan",
    "github_project": "dftracer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pydftracer"
}
        
Elapsed time: 1.21752s