drgn


Namedrgn JSON
Version 0.0.30 PyPI version JSON
download
home_pagehttps://github.com/osandov/drgn
SummaryProgrammable debugger
upload_time2024-12-18 23:09:40
maintainerNone
docs_urlNone
authorOmar Sandoval
requires_python>=3.6
licenseLGPL-2.1-or-later
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            drgn
====

|pypi badge| |ci badge| |docs badge| |black badge|

.. |pypi badge| image:: https://img.shields.io/pypi/v/drgn
    :target: https://pypi.org/project/drgn/
    :alt: PyPI

.. |ci badge| image:: https://github.com/osandov/drgn/workflows/CI/badge.svg
    :target: https://github.com/osandov/drgn/actions
    :alt: CI Status

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

.. |black badge| image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black

.. start-introduction

drgn (pronounced "dragon") is a debugger with an emphasis on programmability.
drgn exposes the types and variables in a program for easy, expressive
scripting in Python. For example, you can debug the Linux kernel:

.. code-block:: pycon

    >>> from drgn.helpers.linux import list_for_each_entry
    >>> for mod in list_for_each_entry('struct module',
    ...                                prog['modules'].address_of_(),
    ...                                'list'):
    ...    if mod.refcnt.counter > 10:
    ...        print(mod.name)
    ...
    (char [56])"snd"
    (char [56])"evdev"
    (char [56])"i915"

Although other debuggers like `GDB <https://www.gnu.org/software/gdb/>`_ have
scripting support, drgn aims to make scripting as natural as possible so that
debugging feels like coding. This makes it well-suited for introspecting the
complex, inter-connected state in large programs.

Additionally, drgn is designed as a library that can be used to build debugging
and introspection tools; see the official `tools
<https://github.com/osandov/drgn/tree/main/tools>`_.

drgn was developed at `Meta <https://opensource.fb.com/>`_ for debugging the
Linux kernel (as an alternative to the `crash
<https://crash-utility.github.io/>`_ utility), but it can also debug userspace
programs written in C. C++ support is in progress.

.. end-introduction

Documentation can be found at `drgn.readthedocs.io
<https://drgn.readthedocs.io>`_.

.. start-installation

Installation
------------

Package Manager
^^^^^^^^^^^^^^^

drgn can be installed using the package manager on some Linux distributions.

.. image:: https://repology.org/badge/vertical-allrepos/drgn.svg
    :target: https://repology.org/project/drgn/versions
    :alt: Packaging Status

* Fedora >= 32

  .. code-block:: console

      $ sudo dnf install drgn

* RHEL/CentOS >= 8

  `Enable EPEL <https://docs.fedoraproject.org/en-US/epel/#_quickstart>`_. Then:

  .. code-block:: console

      $ sudo dnf install drgn

* Oracle Linux >= 8

  Enable the ``ol8_addons`` or ``ol9_addons`` repository and install drgn:

  .. code-block:: console

      $ sudo dnf config-manager --enable ol8_addons  # OR: ol9_addons
      $ sudo dnf install drgn

  Drgn is also available for Python versions in application streams. For
  example, use ``dnf install python3.12-drgn`` to install drgn for Python 3.12.
  See the documentation for drgn in `Oracle Linux 9
  <https://docs.oracle.com/en/operating-systems/oracle-linux/9/drgn/how_to_install_drgn.html>`_
  and `Oracle Linux 8
  <https://docs.oracle.com/en/operating-systems/oracle-linux/8/drgn/how_to_install_drgn.html>`_
  for more information.

* Arch Linux

  .. code-block:: console

      $ sudo pacman -S drgn

* Debian >= 12 (Bookworm)

  .. code-block:: console

    $ sudo apt install python3-drgn

* Gentoo

  .. code-block:: console

      $ sudo emerge dev-debug/drgn

* openSUSE

  .. code-block:: console

      $ sudo zypper install python3-drgn

* Ubuntu

  Enable the `michel-slm/kernel-utils PPA <https://launchpad.net/~michel-slm/+archive/ubuntu/kernel-utils>`_.
  Then:

  .. code-block:: console

      $ sudo apt install python3-drgn

pip
^^^

If your Linux distribution doesn't package the latest release of drgn, you can
install it with `pip <https://pip.pypa.io/>`_.

First, `install pip
<https://packaging.python.org/guides/installing-using-linux-tools/#installing-pip-setuptools-wheel-with-linux-package-managers>`_.
Then, run:

.. code-block:: console

    $ sudo pip3 install drgn

This will install a binary wheel by default. If you get a build error, then pip
wasn't able to use the binary wheel. Install the dependencies listed `below
<#from-source>`_ and try again.

Note that RHEL/CentOS 6, Debian Stretch, Ubuntu Trusty, and Ubuntu Xenial (and
older) ship Python versions which are too old. Python 3.6 or newer must be
installed.

From Source
^^^^^^^^^^^

To get the development version of drgn, you will need to build it from source.
First, install dependencies:

* Fedora

  .. code-block:: console

      $ sudo dnf install autoconf automake check-devel elfutils-devel gcc git libkdumpfile-devel libtool make pkgconf python3 python3-devel python3-pip python3-setuptools

* RHEL/CentOS/Oracle Linux

  .. code-block:: console

      $ sudo dnf install autoconf automake check-devel elfutils-devel gcc git libtool make pkgconf python3 python3-devel python3-pip python3-setuptools

  Optionally, install ``libkdumpfile-devel`` from EPEL on RHEL/CentOS >= 8 or
  install `libkdumpfile <https://github.com/ptesarik/libkdumpfile>`_ from
  source if you want support for the makedumpfile format. For Oracle Linux >= 7,
  ``libkdumpfile-devel`` can be installed directly from the corresponding addons
  repository (e.g. ``ol9_addons``).

  Replace ``dnf`` with ``yum`` for RHEL/CentOS/Oracle Linux < 8.

  When building on RHEL/CentOS/Oracle Linux < 8, you may need to use a newer
  version of GCC, for example, using the ``devtoolset-12`` developer toolset.
  Check your distribution's documentation for information on installing and
  using these newer toolchains.

* Debian/Ubuntu

  .. code-block:: console

      $ sudo apt install autoconf automake check gcc git liblzma-dev libelf-dev libdw-dev libtool make pkgconf python3 python3-dev python3-pip python3-setuptools zlib1g-dev

  Optionally, install libkdumpfile from source if you want support for the
  makedumpfile format.

* Arch Linux

  .. code-block:: console

      $ sudo pacman -S --needed autoconf automake check gcc git libelf libkdumpfile libtool make pkgconf python python-pip python-setuptools

* Gentoo

  .. code-block:: console

      $ sudo emerge --noreplace --oneshot dev-build/autoconf dev-build/automake dev-libs/check dev-libs/elfutils sys-devel/gcc dev-vcs/git dev-libs/libkdumpfile dev-build/libtool dev-build/make dev-python/pip virtual/pkgconfig dev-lang/python dev-python/setuptools

* openSUSE

  .. code-block:: console

      $ sudo zypper install autoconf automake check-devel gcc git libdw-devel libelf-devel libkdumpfile-devel libtool make pkgconf python3 python3-devel python3-pip python3-setuptools

Then, run:

.. code-block:: console

    $ git clone https://github.com/osandov/drgn.git
    $ cd drgn
    $ python3 setup.py build
    $ sudo python3 setup.py install

.. end-installation

See the `installation documentation
<https://drgn.readthedocs.io/en/latest/installation.html>`_ for more options.

Quick Start
-----------

.. start-quick-start

drgn debugs the running kernel by default; run ``sudo drgn``. To debug a
running program, run ``sudo drgn -p $PID``. To debug a core dump (either a
kernel vmcore or a userspace core dump), run ``drgn -c $PATH``. Make sure to
`install debugging symbols
<https://drgn.readthedocs.io/en/latest/getting_debugging_symbols.html>`_ for
whatever you are debugging.

Then, you can access variables in the program with ``prog['name']`` and access
structure members with ``.``:

.. code-block:: pycon

    $ sudo drgn
    >>> prog['init_task'].comm
    (char [16])"swapper/0"

You can use various predefined helpers:

.. code-block:: pycon

    >>> len(list(bpf_prog_for_each()))
    11
    >>> task = find_task(115)
    >>> cmdline(task)
    [b'findmnt', b'-p']

You can get stack traces with ``stack_trace()`` and access parameters or local
variables with ``trace['name']``:

.. code-block:: pycon

    >>> trace = stack_trace(task)
    >>> trace[5]
    #5 at 0xffffffff8a5a32d0 (do_sys_poll+0x400/0x578) in do_poll at ./fs/select.c:961:8 (inlined)
    >>> poll_list = trace[5]['list']
    >>> file = fget(task, poll_list.entries[0].fd)
    >>> d_path(file.f_path.address_of_())
    b'/proc/115/mountinfo'

.. end-quick-start

See the `user guide <https://drgn.readthedocs.io/en/latest/user_guide.html>`_
for more details and features.

.. start-for-index

Getting Help
------------

* The `GitHub issue tracker <https://github.com/osandov/drgn/issues>`_ is the
  preferred method to report issues.
* There is also a `Linux Kernel Debuggers Matrix room
  <https://matrix.to/#/#linux-debuggers:matrix.org>`_.

License
-------

Copyright (c) Meta Platforms, Inc. and affiliates.

drgn is licensed under the `LGPLv2.1
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html>`_ or later.

.. end-for-index

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/osandov/drgn",
    "name": "drgn",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "Omar Sandoval",
    "author_email": "osandov@osandov.com",
    "download_url": "https://files.pythonhosted.org/packages/7d/b5/d601dc9bfc4393a03e9b3bd8fd79fb04fdc7bb2d88dcc095cbadc779aec6/drgn-0.0.30.tar.gz",
    "platform": null,
    "description": "drgn\n====\n\n|pypi badge| |ci badge| |docs badge| |black badge|\n\n.. |pypi badge| image:: https://img.shields.io/pypi/v/drgn\n    :target: https://pypi.org/project/drgn/\n    :alt: PyPI\n\n.. |ci badge| image:: https://github.com/osandov/drgn/workflows/CI/badge.svg\n    :target: https://github.com/osandov/drgn/actions\n    :alt: CI Status\n\n.. |docs badge| image:: https://readthedocs.org/projects/drgn/badge/?version=latest\n    :target: https://drgn.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\n.. |black badge| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/psf/black\n\n.. start-introduction\n\ndrgn (pronounced \"dragon\") is a debugger with an emphasis on programmability.\ndrgn exposes the types and variables in a program for easy, expressive\nscripting in Python. For example, you can debug the Linux kernel:\n\n.. code-block:: pycon\n\n    >>> from drgn.helpers.linux import list_for_each_entry\n    >>> for mod in list_for_each_entry('struct module',\n    ...                                prog['modules'].address_of_(),\n    ...                                'list'):\n    ...    if mod.refcnt.counter > 10:\n    ...        print(mod.name)\n    ...\n    (char [56])\"snd\"\n    (char [56])\"evdev\"\n    (char [56])\"i915\"\n\nAlthough other debuggers like `GDB <https://www.gnu.org/software/gdb/>`_ have\nscripting support, drgn aims to make scripting as natural as possible so that\ndebugging feels like coding. This makes it well-suited for introspecting the\ncomplex, inter-connected state in large programs.\n\nAdditionally, drgn is designed as a library that can be used to build debugging\nand introspection tools; see the official `tools\n<https://github.com/osandov/drgn/tree/main/tools>`_.\n\ndrgn was developed at `Meta <https://opensource.fb.com/>`_ for debugging the\nLinux kernel (as an alternative to the `crash\n<https://crash-utility.github.io/>`_ utility), but it can also debug userspace\nprograms written in C. C++ support is in progress.\n\n.. end-introduction\n\nDocumentation can be found at `drgn.readthedocs.io\n<https://drgn.readthedocs.io>`_.\n\n.. start-installation\n\nInstallation\n------------\n\nPackage Manager\n^^^^^^^^^^^^^^^\n\ndrgn can be installed using the package manager on some Linux distributions.\n\n.. image:: https://repology.org/badge/vertical-allrepos/drgn.svg\n    :target: https://repology.org/project/drgn/versions\n    :alt: Packaging Status\n\n* Fedora >= 32\n\n  .. code-block:: console\n\n      $ sudo dnf install drgn\n\n* RHEL/CentOS >= 8\n\n  `Enable EPEL <https://docs.fedoraproject.org/en-US/epel/#_quickstart>`_. Then:\n\n  .. code-block:: console\n\n      $ sudo dnf install drgn\n\n* Oracle Linux >= 8\n\n  Enable the ``ol8_addons`` or ``ol9_addons`` repository and install drgn:\n\n  .. code-block:: console\n\n      $ sudo dnf config-manager --enable ol8_addons  # OR: ol9_addons\n      $ sudo dnf install drgn\n\n  Drgn is also available for Python versions in application streams. For\n  example, use ``dnf install python3.12-drgn`` to install drgn for Python 3.12.\n  See the documentation for drgn in `Oracle Linux 9\n  <https://docs.oracle.com/en/operating-systems/oracle-linux/9/drgn/how_to_install_drgn.html>`_\n  and `Oracle Linux 8\n  <https://docs.oracle.com/en/operating-systems/oracle-linux/8/drgn/how_to_install_drgn.html>`_\n  for more information.\n\n* Arch Linux\n\n  .. code-block:: console\n\n      $ sudo pacman -S drgn\n\n* Debian >= 12 (Bookworm)\n\n  .. code-block:: console\n\n    $ sudo apt install python3-drgn\n\n* Gentoo\n\n  .. code-block:: console\n\n      $ sudo emerge dev-debug/drgn\n\n* openSUSE\n\n  .. code-block:: console\n\n      $ sudo zypper install python3-drgn\n\n* Ubuntu\n\n  Enable the `michel-slm/kernel-utils PPA <https://launchpad.net/~michel-slm/+archive/ubuntu/kernel-utils>`_.\n  Then:\n\n  .. code-block:: console\n\n      $ sudo apt install python3-drgn\n\npip\n^^^\n\nIf your Linux distribution doesn't package the latest release of drgn, you can\ninstall it with `pip <https://pip.pypa.io/>`_.\n\nFirst, `install pip\n<https://packaging.python.org/guides/installing-using-linux-tools/#installing-pip-setuptools-wheel-with-linux-package-managers>`_.\nThen, run:\n\n.. code-block:: console\n\n    $ sudo pip3 install drgn\n\nThis will install a binary wheel by default. If you get a build error, then pip\nwasn't able to use the binary wheel. Install the dependencies listed `below\n<#from-source>`_ and try again.\n\nNote that RHEL/CentOS 6, Debian Stretch, Ubuntu Trusty, and Ubuntu Xenial (and\nolder) ship Python versions which are too old. Python 3.6 or newer must be\ninstalled.\n\nFrom Source\n^^^^^^^^^^^\n\nTo get the development version of drgn, you will need to build it from source.\nFirst, install dependencies:\n\n* Fedora\n\n  .. code-block:: console\n\n      $ sudo dnf install autoconf automake check-devel elfutils-devel gcc git libkdumpfile-devel libtool make pkgconf python3 python3-devel python3-pip python3-setuptools\n\n* RHEL/CentOS/Oracle Linux\n\n  .. code-block:: console\n\n      $ sudo dnf install autoconf automake check-devel elfutils-devel gcc git libtool make pkgconf python3 python3-devel python3-pip python3-setuptools\n\n  Optionally, install ``libkdumpfile-devel`` from EPEL on RHEL/CentOS >= 8 or\n  install `libkdumpfile <https://github.com/ptesarik/libkdumpfile>`_ from\n  source if you want support for the makedumpfile format. For Oracle Linux >= 7,\n  ``libkdumpfile-devel`` can be installed directly from the corresponding addons\n  repository (e.g. ``ol9_addons``).\n\n  Replace ``dnf`` with ``yum`` for RHEL/CentOS/Oracle Linux < 8.\n\n  When building on RHEL/CentOS/Oracle Linux < 8, you may need to use a newer\n  version of GCC, for example, using the ``devtoolset-12`` developer toolset.\n  Check your distribution's documentation for information on installing and\n  using these newer toolchains.\n\n* Debian/Ubuntu\n\n  .. code-block:: console\n\n      $ sudo apt install autoconf automake check gcc git liblzma-dev libelf-dev libdw-dev libtool make pkgconf python3 python3-dev python3-pip python3-setuptools zlib1g-dev\n\n  Optionally, install libkdumpfile from source if you want support for the\n  makedumpfile format.\n\n* Arch Linux\n\n  .. code-block:: console\n\n      $ sudo pacman -S --needed autoconf automake check gcc git libelf libkdumpfile libtool make pkgconf python python-pip python-setuptools\n\n* Gentoo\n\n  .. code-block:: console\n\n      $ sudo emerge --noreplace --oneshot dev-build/autoconf dev-build/automake dev-libs/check dev-libs/elfutils sys-devel/gcc dev-vcs/git dev-libs/libkdumpfile dev-build/libtool dev-build/make dev-python/pip virtual/pkgconfig dev-lang/python dev-python/setuptools\n\n* openSUSE\n\n  .. code-block:: console\n\n      $ sudo zypper install autoconf automake check-devel gcc git libdw-devel libelf-devel libkdumpfile-devel libtool make pkgconf python3 python3-devel python3-pip python3-setuptools\n\nThen, run:\n\n.. code-block:: console\n\n    $ git clone https://github.com/osandov/drgn.git\n    $ cd drgn\n    $ python3 setup.py build\n    $ sudo python3 setup.py install\n\n.. end-installation\n\nSee the `installation documentation\n<https://drgn.readthedocs.io/en/latest/installation.html>`_ for more options.\n\nQuick Start\n-----------\n\n.. start-quick-start\n\ndrgn debugs the running kernel by default; run ``sudo drgn``. To debug a\nrunning program, run ``sudo drgn -p $PID``. To debug a core dump (either a\nkernel vmcore or a userspace core dump), run ``drgn -c $PATH``. Make sure to\n`install debugging symbols\n<https://drgn.readthedocs.io/en/latest/getting_debugging_symbols.html>`_ for\nwhatever you are debugging.\n\nThen, you can access variables in the program with ``prog['name']`` and access\nstructure members with ``.``:\n\n.. code-block:: pycon\n\n    $ sudo drgn\n    >>> prog['init_task'].comm\n    (char [16])\"swapper/0\"\n\nYou can use various predefined helpers:\n\n.. code-block:: pycon\n\n    >>> len(list(bpf_prog_for_each()))\n    11\n    >>> task = find_task(115)\n    >>> cmdline(task)\n    [b'findmnt', b'-p']\n\nYou can get stack traces with ``stack_trace()`` and access parameters or local\nvariables with ``trace['name']``:\n\n.. code-block:: pycon\n\n    >>> trace = stack_trace(task)\n    >>> trace[5]\n    #5 at 0xffffffff8a5a32d0 (do_sys_poll+0x400/0x578) in do_poll at ./fs/select.c:961:8 (inlined)\n    >>> poll_list = trace[5]['list']\n    >>> file = fget(task, poll_list.entries[0].fd)\n    >>> d_path(file.f_path.address_of_())\n    b'/proc/115/mountinfo'\n\n.. end-quick-start\n\nSee the `user guide <https://drgn.readthedocs.io/en/latest/user_guide.html>`_\nfor more details and features.\n\n.. start-for-index\n\nGetting Help\n------------\n\n* The `GitHub issue tracker <https://github.com/osandov/drgn/issues>`_ is the\n  preferred method to report issues.\n* There is also a `Linux Kernel Debuggers Matrix room\n  <https://matrix.to/#/#linux-debuggers:matrix.org>`_.\n\nLicense\n-------\n\nCopyright (c) Meta Platforms, Inc. and affiliates.\n\ndrgn is licensed under the `LGPLv2.1\n<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html>`_ or later.\n\n.. end-for-index\n",
    "bugtrack_url": null,
    "license": "LGPL-2.1-or-later",
    "summary": "Programmable debugger",
    "version": "0.0.30",
    "project_urls": {
        "Bug Tracker": "https://github.com/osandov/drgn/issues",
        "Documentation": "https://drgn.readthedocs.io",
        "Homepage": "https://github.com/osandov/drgn"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6482c5c54dae52c24ff440d20c6948cdc47581af7d857475f84d06b5024a53b5",
                "md5": "09c6b8f34ff7f0db35fd793d36de2c15",
                "sha256": "ba087a0f9cc7bbb9fc31165234d4be69fe2b780141b724fa35675564107900f1"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "09c6b8f34ff7f0db35fd793d36de2c15",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 4848766,
            "upload_time": "2024-12-18T23:09:07",
            "upload_time_iso_8601": "2024-12-18T23:09:07.888739Z",
            "url": "https://files.pythonhosted.org/packages/64/82/c5c54dae52c24ff440d20c6948cdc47581af7d857475f84d06b5024a53b5/drgn-0.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7b8ac6eb1c87ab0948844271f6f5ff8e4c29d9471b209458e9d4de68f0617ac",
                "md5": "80a5b59ad9681c0f2c9033de897753ea",
                "sha256": "69edb2a3518780083fe09f3e000cf4b17be7ea27baf16d66a041bf310b72e5d2"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "80a5b59ad9681c0f2c9033de897753ea",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 4860030,
            "upload_time": "2024-12-18T23:09:11",
            "upload_time_iso_8601": "2024-12-18T23:09:11.992116Z",
            "url": "https://files.pythonhosted.org/packages/a7/b8/ac6eb1c87ab0948844271f6f5ff8e4c29d9471b209458e9d4de68f0617ac/drgn-0.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3bfeb272017a85ad8cdcfff42845a189ad92f897d328591bec6f707ce36498b6",
                "md5": "bbe1be8563ea0d585f3897d6b70643b1",
                "sha256": "8d06a3eecb99ec4dbb582e959ccbfd51533f4fb912448228975e99c7cce3053a"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bbe1be8563ea0d585f3897d6b70643b1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 4868900,
            "upload_time": "2024-12-18T23:09:16",
            "upload_time_iso_8601": "2024-12-18T23:09:16.289382Z",
            "url": "https://files.pythonhosted.org/packages/3b/fe/b272017a85ad8cdcfff42845a189ad92f897d328591bec6f707ce36498b6/drgn-0.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d2e02863ebcc69e7f8163d29d20bec06b61f80b3744c85a327f06750756a698",
                "md5": "2b2f20954382e6f7500b150360144d0a",
                "sha256": "55f00faa60b4ec421c5975cea428eeafcb5b8bb93fd05b51dc42f75d1a9cbd6e"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2b2f20954382e6f7500b150360144d0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 4869376,
            "upload_time": "2024-12-18T23:09:19",
            "upload_time_iso_8601": "2024-12-18T23:09:19.635072Z",
            "url": "https://files.pythonhosted.org/packages/5d/2e/02863ebcc69e7f8163d29d20bec06b61f80b3744c85a327f06750756a698/drgn-0.0.30-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d8bc79aa41094e545b59eac5f8b56ebe9292b342496691151b74be9cb98528da",
                "md5": "4001e3e00c09b1d09015565a6e1f9f91",
                "sha256": "0faf67aa4fb01ed01327f6785a02a9c8d0d456405fedaaa5046d51ccb1ea68bd"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4001e3e00c09b1d09015565a6e1f9f91",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6",
            "size": 4946172,
            "upload_time": "2024-12-18T23:09:23",
            "upload_time_iso_8601": "2024-12-18T23:09:23.884939Z",
            "url": "https://files.pythonhosted.org/packages/d8/bc/79aa41094e545b59eac5f8b56ebe9292b342496691151b74be9cb98528da/drgn-0.0.30-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec039ce5a443a493e4c23ad9cfd9ebedd20fd4485c36b6e26d73d01efb55cb68",
                "md5": "0e7c377ef3fd00749d7c3163ed19c4ef",
                "sha256": "b751d6adc17256d24f06e9f2c1bf8f0c68bff4c4a249baa146191181ebea048d"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0e7c377ef3fd00749d7c3163ed19c4ef",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 4812439,
            "upload_time": "2024-12-18T23:09:26",
            "upload_time_iso_8601": "2024-12-18T23:09:26.888580Z",
            "url": "https://files.pythonhosted.org/packages/ec/03/9ce5a443a493e4c23ad9cfd9ebedd20fd4485c36b6e26d73d01efb55cb68/drgn-0.0.30-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8b530745c27a546bb02229487d4cf48d29b8d61b52137a7b1f097bec2969a24",
                "md5": "8375777e0f65fa3422c75b678dd961bc",
                "sha256": "92315d3233eb44151768da573174b91546173ea9eb18d1dc4b49b72b548322db"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8375777e0f65fa3422c75b678dd961bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 4818773,
            "upload_time": "2024-12-18T23:09:30",
            "upload_time_iso_8601": "2024-12-18T23:09:30.771678Z",
            "url": "https://files.pythonhosted.org/packages/b8/b5/30745c27a546bb02229487d4cf48d29b8d61b52137a7b1f097bec2969a24/drgn-0.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "37c82290cf9b13448f1c72ab59513ec3bed542c7191fc1f9b342e7c231d1218c",
                "md5": "d5ea1516d75d3e5bcbac7da30ad4d3cf",
                "sha256": "581edd55361ec9d5a2d432d08b260a40ef099ce6dea03a57aa9a46995e1406d2"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d5ea1516d75d3e5bcbac7da30ad4d3cf",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 4842294,
            "upload_time": "2024-12-18T23:09:34",
            "upload_time_iso_8601": "2024-12-18T23:09:34.690962Z",
            "url": "https://files.pythonhosted.org/packages/37/c8/2290cf9b13448f1c72ab59513ec3bed542c7191fc1f9b342e7c231d1218c/drgn-0.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bb539adf7c5905b57e3593d2ed42f063f9d306bdb287a3b45888cfb4cf47a3b2",
                "md5": "9b0dcbd19f4cde295fa0775ffa922d4d",
                "sha256": "57e8f9dd925d623d8010c99c88faaa1eec387e5c9a308f12c1fd707900866de1"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b0dcbd19f4cde295fa0775ffa922d4d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 4847030,
            "upload_time": "2024-12-18T23:09:36",
            "upload_time_iso_8601": "2024-12-18T23:09:36.971194Z",
            "url": "https://files.pythonhosted.org/packages/bb/53/9adf7c5905b57e3593d2ed42f063f9d306bdb287a3b45888cfb4cf47a3b2/drgn-0.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7db5d601dc9bfc4393a03e9b3bd8fd79fb04fdc7bb2d88dcc095cbadc779aec6",
                "md5": "800de3a17c1fe522190ffe0f3c597db5",
                "sha256": "3594ca8095c846f7acd9d723a2304f0171fd740250804633b791b15223b44eed"
            },
            "downloads": -1,
            "filename": "drgn-0.0.30.tar.gz",
            "has_sig": false,
            "md5_digest": "800de3a17c1fe522190ffe0f3c597db5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 1268753,
            "upload_time": "2024-12-18T23:09:40",
            "upload_time_iso_8601": "2024-12-18T23:09:40.817428Z",
            "url": "https://files.pythonhosted.org/packages/7d/b5/d601dc9bfc4393a03e9b3bd8fd79fb04fdc7bb2d88dcc095cbadc779aec6/drgn-0.0.30.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-18 23:09:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "osandov",
    "github_project": "drgn",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "drgn"
}
        
Elapsed time: 0.56531s