{ "info": { "author": "Chad Smith", "author_email": "grassfedcode@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "

\npygdbmi - Get Structured Output from GDB's Machine Interface\n

\n\n

\n\n\n\n\n\n\n\n\n\n\"Code\n

\n\n**Documentation** https://cs01.github.io/pygdbmi\n\n**Source Code** https://github.com/cs01/pygdbmi\n\n---\n\nPython (**py**) [**gdb**](https://www.gnu.org/software/gdb/) machine interface [(**mi**)](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html)\n\n> GDB/MI is a line based machine oriented text interface to GDB and is activated by specifying using the --interpreter command line option (see Mode Options). It is specifically intended to support the development of systems which use the debugger as just one small component of a larger system.\n\n## What's in the box?\n\n1. A function to parse gdb machine interface string output and return structured data types (Python dicts) that are JSON serializable. Useful for writing the backend to a gdb frontend. For example, [gdbgui](https://github.com/cs01/gdbgui) uses pygdbmi on the backend.\n2. A Python class to control and interact with gdb as a subprocess\n\nTo get [machine interface](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html) output from gdb, run gdb with the `--interpreter=mi2` flag like so:\n\n```\ngdb --interpreter=mi2\n```\n\n## Installation\n\n pip install pygdbmi\n\n## Compatibility\n\n### Operating Systems\n\nCross platform support for Linux, macOS and Windows\n\n- Linux/Unix\n\n Ubuntu 14.04 and 16.04 have been tested to work. Other versions likely work as well.\n\n- macOS\n\n Note: the error `please check gdb is codesigned - see taskgated(8)` can be fixed by codesigning gdb with [these instructions](http://andresabino.com/2015/04/14/codesign-gdb-on-mac-os-x-yosemite-10-10-2/). If the error is not fixed, please [create an issue in github](https://github.com/cs01/pygdbmi/issues).\n\n- Windows\n\n Windows 10 has been tested to work with MinGW and cygwin.\n\n### gdb versions\n\n- gdb 7.6+ has been tested. Older versions may work as well.\n\n## Examples\n\ngdb mi defines a syntax for its output that is suitable for machine readability and scripting: [example output](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Simple-Examples.html#GDB_002fMI-Simple-Examples):\n\n```\n-> -break-insert main\n<- ^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",\nenabled=\"y\",addr=\"0x08048564\",func=\"main\",file=\"myprog.c\",\nfullname=\"/home/myprog.c\",line=\"68\",thread-groups=[\"i1\"],\ntimes=\"0\"}\n<- (gdb)\n```\n\nUse `pygdbmi.gdbmiparser.parse_response` to turn that string output into a JSON serializable dictionary\n\n```python\nfrom pygdbmi import gdbmiparser\nfrom pprint import pprint\nresponse = gdbmiparser.parse_response('^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\", enabled=\"y\",addr=\"0x08048564\",func=\"main\",file=\"myprog.c\",fullname=\"/home/myprog.c\",line=\"68\",thread-groups=[\"i1\"],times=\"0\"')\npprint(response)\n> {'message': 'done',\n'payload': {'bkpt': {'addr': '0x08048564',\n 'disp': 'keep',\n 'enabled': 'y',\n 'file': 'myprog.c',\n 'fullname': '/home/myprog.c',\n 'func': 'main',\n 'line': '68',\n 'number': '1',\n 'thread-groups': ['i1'],\n 'times': '0',\n 'type': 'breakpoint'}},\n 'type': 'result'}\n```\n\n## Programmatic Control Over gdb\n\nBut how do you get the gdb output into Python in the first place? If you want, `pygdbmi` also has a class to control gdb as subprocess. You can write commands, and get structured output back:\n\n```python\nfrom pygdbmi.gdbcontroller import GdbController\nfrom pprint import pprint\n\n# Start gdb process\ngdbmi = GdbController()\nprint(gdbmi.get_subprocess_cmd()) # print actual command run as subprocess\n\n# Load binary a.out and get structured response\nresponse = gdbmi.write('-file-exec-file a.out')\npprint(response)\n[{'message': u'thread-group-added',\n 'payload': {u'id': u'i1'},\n 'type': 'notify'},\n {'message': u'done', 'payload': None, 'type': 'result'}]\n```\n\nNow do whatever you want with gdb. All gdb commands, as well as gdb [machine interface commands](<(https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Input-Syntax.html#GDB_002fMI-Input-Syntax)>) are acceptable. gdb mi commands give better structured output that is machine readable, rather than gdb console output. mi commands begin with a `-`.\n\n```python\nresponse = gdbmi.write('-break-insert main') # machine interface (MI) commands start with a '-'\nresponse = gdbmi.write('break main') # normal gdb commands work too, but the return value is slightly different\nresponse = gdbmi.write('-exec-run')\nresponse = gdbmi.write('run')\nresponse = gdbmi.write('-exec-next', timeout_sec=0.1) # the wait time can be modified from the default of 1 second\nresponse = gdbmi.write('next')\nresponse = gdbmi.write('next', raise_error_on_timeout=False)\nresponse = gdbmi.write('next', raise_error_on_timeout=True, timeout_sec=0.01)\nresponse = gdbmi.write('-exec-continue')\nresponse = gdbmi.send_signal_to_gdb('SIGKILL') # name of signal is okay\nresponse = gdbmi.send_signal_to_gdb(2) # value of signal is okay too\nresponse = gdbmi.interrupt_gdb() # sends SIGINT to gdb\nresponse = gdbmi.write('continue')\nresponse = gdbmi.exit()\n```\n\n## Parsed Output Format\n\nEach parsed gdb response consists of a list of dictionaries. Each dictionary has keys `message`, `payload`, `token`, and `type`.\n\n- `message` contains a textual message from gdb, which is not always present. When missing, this is `None`.\n- `payload` contains the content of gdb's output, which can contain any of the following: `dictionary`, `list`, `string`. This too is not always present, and can be `None` depending on the response.\n- `token` If an input command was prefixed with a (optional) token then the corresponding output for that command will also be prefixed by that same token. This field is only present for pygdbmi output types `nofity` and `result`. When missing, this is `None`.\n\nThe `type` is defined based on gdb's various [mi output record types](<(https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Output-Records.html#GDB_002fMI-Output-Records)>), and can be\n\n- `result` - the result of a gdb command, such as `done`, `running`, `error`, etc.\n- `notify` - additional async changes that have occurred, such as breakpoint modified\n- `console` - textual responses to cli commands\n- `log` - debugging messages from gdb's internals\n- `output` - output from target\n- `target` - output from remote target\n- `done` - when gdb has finished its output\n\n## Contributing\n\nDocumentation fixes, bug fixes, performance improvements, and functional improvements are welcome. You may want to create an issue before beginning work to make sure I am interested in merging it to the master branch.\n\nTo develop, set up a new virtual environment, then clone this repo and run `pip install -e .[dev]`.\n\nConfirm unit tests are working with `make test`, then begin development.\n\nUpdate unit tests as necessary at `pygdbmi/tests/test_app.py`.\n\n## Projects Using pygdbmi\n\n- [gdbgui](https://github.com/cs01/gdbgui) implements a browser-based frontend to gdb, using pygdbmi on the backend\n- [PINCE](https://github.com/korcankaraokcu/PINCE) is a gdb frontend that aims to provide a reverse engineering tool and a reusable library focused on games. It uses pygdbmi to parse gdb/mi based output for some functions\n- [avatar\u00b2](https://github.com/avatartwo/avatar2) is an orchestration framework for reversing and analysing firmware of embedded devices. It utilizes pygdbmi for internal communication to different analysis targets.\n- Know of another project? Create a PR and add it here.\n\n## Authors\n\n`pygdbmi` was written by [Chad Smith](https://grassfedcode.com) with [contributions from the community](https://github.com/cs01/pygdbmi/graphs/contributors) for which the author is very grateful. Thanks especially to @mariusmue, @bobthekingofegypt, @mouuff, and @felipesere.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cs01/pygdbmi", "keywords": "gdb,python,machine-interface,parse,frontend", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pygdbmi", "package_url": "https://pypi.org/project/pygdbmi/", "platform": "", "project_url": "https://pypi.org/project/pygdbmi/", "project_urls": { "Homepage": "https://github.com/cs01/pygdbmi" }, "release_url": "https://pypi.org/project/pygdbmi/0.9.0.2/", "requires_dist": [ "flake8 (==3.5.0) ; extra == 'dev'", "collective.checkdocs (==0.2) ; extra == 'dev'", "black ; (python_version >= \"3.6\") and extra == 'dev'", "pdoc ; (python_version >= \"3.6\") and extra == 'dev'", "pdoc3 ; (python_version >= \"3.6\") and extra == 'dev'" ], "requires_python": "", "summary": "Parse gdb machine interface output with Python", "version": "0.9.0.2" }, "last_serial": 5402476, "releases": { "0.7": [ { "comment_text": "", "digests": { "md5": "5d0caef9f08341154f6aabdc704a32a0", "sha256": "0a68f6ee702c63c334b26bd1a92826ff4515462e4d8f7503c077a4862021ed00" }, "downloads": -1, "filename": "pygdbmi-0.7.tar.gz", "has_sig": false, "md5_digest": "5d0caef9f08341154f6aabdc704a32a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8111, "upload_time": "2017-01-16T19:50:42", "url": "https://files.pythonhosted.org/packages/da/c8/5ea5f4a476a0479c18285b99e036a8f73398f3930e1d7f7aa6f96af7a858/pygdbmi-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "ef4712f831b54c504a895ca844e65169", "sha256": "aa367cdd1ae59e6619b7491c31ca21d29177a896ea8112d427c50d917867b089" }, "downloads": -1, "filename": "pygdbmi-0.7.1.tar.gz", "has_sig": false, "md5_digest": "ef4712f831b54c504a895ca844e65169", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8901, "upload_time": "2017-01-25T05:42:22", "url": "https://files.pythonhosted.org/packages/0c/3c/5f0cafe5d3f798347c5714204a3bc55999b24e24191fb350db39362bc98b/pygdbmi-0.7.1.tar.gz" } ], "0.7.2.0": [ { "comment_text": "", "digests": { "md5": "a01e6bd116c5b2f9894c4cfa5423b68f", "sha256": "1a0fc6ee5abd978d4932a4c2e6bc44712d8b1b1fc76d5adce75220bc6e2ee2a2" }, "downloads": -1, "filename": "pygdbmi-0.7.2.0.tar.gz", "has_sig": false, "md5_digest": "a01e6bd116c5b2f9894c4cfa5423b68f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13147, "upload_time": "2017-02-02T21:21:05", "url": "https://files.pythonhosted.org/packages/21/d8/9d4ed35936397af9932dd06cc352f2201e67d781d9da414398683f584ec4/pygdbmi-0.7.2.0.tar.gz" } ], "0.7.2.1": [ { "comment_text": "", "digests": { "md5": "3bb11855f29e21fb809496bd37f8a626", "sha256": "4051e3b0dce1e8be123ac76961c56dfa957a453c12dedfa8b377b1cdd2b45b2f" }, "downloads": -1, "filename": "pygdbmi-0.7.2.1.tar.gz", "has_sig": false, "md5_digest": "3bb11855f29e21fb809496bd37f8a626", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13766, "upload_time": "2017-02-03T05:52:53", "url": "https://files.pythonhosted.org/packages/6f/4c/cbc00bd3c69f0a65168e3af90df9f71427ee362d70fe14afd595906644dd/pygdbmi-0.7.2.1.tar.gz" } ], "0.7.3.0": [ { "comment_text": "", "digests": { "md5": "e232a84fd8d2a8f59474f0d5b4e3e35a", "sha256": "75730eafda4f53b0c804af52cc1e1ec06a26e420a2bd7e691ccd579b2568c74f" }, "downloads": -1, "filename": "pygdbmi-0.7.3.0.tar.gz", "has_sig": false, "md5_digest": "e232a84fd8d2a8f59474f0d5b4e3e35a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13549, "upload_time": "2017-02-23T01:03:14", "url": "https://files.pythonhosted.org/packages/b9/39/535111b8de46999524fbb0cd33b3eff11d0cbc4f5a626e56ae16cd9816dc/pygdbmi-0.7.3.0.tar.gz" } ], "0.7.3.1": [ { "comment_text": "", "digests": { "md5": "6a90db7971e7162fa3bd5e968c4e6f95", "sha256": "abe2ba2a53f01d2c9a45b466e05f247105958c2fb0f9f080dc277cfa743359d8" }, "downloads": -1, "filename": "pygdbmi-0.7.3.1.tar.gz", "has_sig": false, "md5_digest": "6a90db7971e7162fa3bd5e968c4e6f95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13553, "upload_time": "2017-02-23T01:12:35", "url": "https://files.pythonhosted.org/packages/51/b2/c2eb8ea43fb92007fb3bdb6f91382e361675f28937f5cfc28902b354c5a6/pygdbmi-0.7.3.1.tar.gz" } ], "0.7.3.2": [ { "comment_text": "", "digests": { "md5": "acd0ca14819d24372abfcd0be0a7bf4d", "sha256": "a1ee52377b7417fa4e30a80fca9d0cd99ff9f487a282cb315cd352212f787746" }, "downloads": -1, "filename": "pygdbmi-0.7.3.2.tar.gz", "has_sig": false, "md5_digest": "acd0ca14819d24372abfcd0be0a7bf4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13497, "upload_time": "2017-03-02T20:19:26", "url": "https://files.pythonhosted.org/packages/fa/69/78af270f1d40248626ca621aa57b1891873abb0b4a0b20f00695360291b3/pygdbmi-0.7.3.2.tar.gz" } ], "0.7.3.3": [ { "comment_text": "", "digests": { "md5": "79454d4c0cf0e1d38dab75e29e69fcaf", "sha256": "15a8c46a0ad0290757641e89c5cd0650ee8c9d981b86cff1ed889a9c6e848588" }, "downloads": -1, "filename": "pygdbmi-0.7.3.3.tar.gz", "has_sig": false, "md5_digest": "79454d4c0cf0e1d38dab75e29e69fcaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15087, "upload_time": "2017-03-11T19:08:54", "url": "https://files.pythonhosted.org/packages/9e/fc/d0a929ab70374b92d72c9d4ea07488fec118a935faa1c5e3f5fe9ac9e3e1/pygdbmi-0.7.3.3.tar.gz" } ], "0.7.4.0": [ { "comment_text": "", "digests": { "md5": "d65e823c65b0100c57a3bd25eb30d8fb", "sha256": "7a72ac4802b335b7b967aa219fa75066a6721b036d562db70d6f16ccc84f804c" }, "downloads": -1, "filename": "pygdbmi-0.7.4.0.tar.gz", "has_sig": false, "md5_digest": "d65e823c65b0100c57a3bd25eb30d8fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14620, "upload_time": "2017-04-10T20:36:14", "url": "https://files.pythonhosted.org/packages/05/e6/d1802079dd4052071491078b3adc2769afaaf9299232f05142d545dde138/pygdbmi-0.7.4.0.tar.gz" } ], "0.7.4.1": [ { "comment_text": "", "digests": { "md5": "74219acda6221f51268f5b4ab0be711e", "sha256": "f5b01ae0b57fe19ee72dd3a8644e5cb73f3e6bcff0d4de28dd93a96e34d64904" }, "downloads": -1, "filename": "pygdbmi-0.7.4.1.tar.gz", "has_sig": false, "md5_digest": "74219acda6221f51268f5b4ab0be711e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15721, "upload_time": "2017-08-20T05:30:40", "url": "https://files.pythonhosted.org/packages/7a/85/494b6a8a0602b47b221f5d132500fd88d53a33678b818f35a7e7cc595a82/pygdbmi-0.7.4.1.tar.gz" } ], "0.7.4.2": [ { "comment_text": "", "digests": { "md5": "6d5303b4250597649efa2accd3b0db93", "sha256": "ae5b4d1eab80068f6e35c4f3b2c5689803408505ec3c7fe06a7c3f0c1b54ea46" }, "downloads": -1, "filename": "pygdbmi-0.7.4.2.tar.gz", "has_sig": false, "md5_digest": "6d5303b4250597649efa2accd3b0db93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16597, "upload_time": "2017-09-06T04:28:27", "url": "https://files.pythonhosted.org/packages/10/aa/1e0dee276b406e077d05454e09d609dcfbc63d3e1be10717b79e6fb4ead3/pygdbmi-0.7.4.2.tar.gz" } ], "0.7.4.3": [ { "comment_text": "", "digests": { "md5": "5ef8c4b4b1b4b4122b16c4f18a8e378b", "sha256": "d41c928b9d1f89ae931dae65e98fb2b985e9e07f1861c34853cbe8c2bedfc0e2" }, "downloads": -1, "filename": "pygdbmi-0.7.4.3.tar.gz", "has_sig": false, "md5_digest": "5ef8c4b4b1b4b4122b16c4f18a8e378b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16571, "upload_time": "2017-10-26T00:40:58", "url": "https://files.pythonhosted.org/packages/d2/87/73aa3c335b7978d78c4074714e25420706d9de9e0aa08240ecfb34d0a025/pygdbmi-0.7.4.3.tar.gz" } ], "0.7.4.4": [ { "comment_text": "", "digests": { "md5": "7deefc291275592b081d8193b58e8114", "sha256": "34cd00925ca98aed87decb6a0451fa094cf31386dc457b47a62bcbf8d905a3d3" }, "downloads": -1, "filename": "pygdbmi-0.7.4.4.tar.gz", "has_sig": false, "md5_digest": "7deefc291275592b081d8193b58e8114", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16563, "upload_time": "2017-11-18T16:24:51", "url": "https://files.pythonhosted.org/packages/bb/1c/8c8cbd0bb5cf513a905e3ca461cfad578e708a74417182f2a00943136f83/pygdbmi-0.7.4.4.tar.gz" } ], "0.7.4.5": [ { "comment_text": "", "digests": { "md5": "cd3c3d29bd6bd85d01d317ce92658628", "sha256": "223fcd8dc6f04ada0fb4fbeeb78eca07e7ac355d3a543c1f699ad0fd281d9474" }, "downloads": -1, "filename": "pygdbmi-0.7.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cd3c3d29bd6bd85d01d317ce92658628", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19745, "upload_time": "2017-11-26T20:08:41", "url": "https://files.pythonhosted.org/packages/ed/ba/9326eaf06ec62e454c5d5dd8c7fc145403972108c19b0e0d9a2c0ee60755/pygdbmi-0.7.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bca1f3d36c5461d4800ef804977851d2", "sha256": "2b69faeebff795a45d031a62cc441144b679e7a31c351ad15d9f685d30603572" }, "downloads": -1, "filename": "pygdbmi-0.7.4.5.tar.gz", "has_sig": false, "md5_digest": "bca1f3d36c5461d4800ef804977851d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16928, "upload_time": "2017-11-26T20:08:43", "url": "https://files.pythonhosted.org/packages/89/50/6e537f25c6c2f4eb1f9c1106a5177262a1352e6ce198add7b20d11f70209/pygdbmi-0.7.4.5.tar.gz" } ], "0.8.0.0": [ { "comment_text": "", "digests": { "md5": "ae0aa99ec132952e6e4fb8c714a3174e", "sha256": "290a01deefcbc006a61e4173e66355f2f5728a2def40fc3f18b3df5a8acb822d" }, "downloads": -1, "filename": "pygdbmi-0.8.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae0aa99ec132952e6e4fb8c714a3174e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22255, "upload_time": "2017-12-19T04:32:54", "url": "https://files.pythonhosted.org/packages/73/f3/5757b10d57d483f8396c538b4660407c4df006c1ee8c46b63715b3297fce/pygdbmi-0.8.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28f87e84eaa82221dd6ababb6f1af8be", "sha256": "eb81670ca19d4ada507f04a1c2549ca39e9961ac58a49facf30e4fd520466a95" }, "downloads": -1, "filename": "pygdbmi-0.8.0.0.tar.gz", "has_sig": false, "md5_digest": "28f87e84eaa82221dd6ababb6f1af8be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19596, "upload_time": "2017-12-19T04:32:55", "url": "https://files.pythonhosted.org/packages/17/13/923fe0fd81820e2b0ed96933c82df22c3f6b50c8c3be3b015d91f11f8ffc/pygdbmi-0.8.0.0.tar.gz" } ], "0.8.1.0": [ { "comment_text": "", "digests": { "md5": "136c12ee2f39bc0d7c5441e959d40151", "sha256": "8da87e0a0f7a8f12c4569ad21627749e37bffbf3b5a6c7d66240ef67419d684c" }, "downloads": -1, "filename": "pygdbmi-0.8.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "136c12ee2f39bc0d7c5441e959d40151", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23082, "upload_time": "2018-01-03T18:39:48", "url": "https://files.pythonhosted.org/packages/23/75/3ab0f58046687e8f7ca1e0901e3fb0fafd949a67c8feb4fad937dcad904a/pygdbmi-0.8.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09ca07fcc436a154d278914fedbd688a", "sha256": "ebeb5d2345af202e7f5f6ca0e5d78f84bd49b6f22defabbe0e0646e26e38f635" }, "downloads": -1, "filename": "pygdbmi-0.8.1.0.tar.gz", "has_sig": false, "md5_digest": "09ca07fcc436a154d278914fedbd688a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20184, "upload_time": "2018-01-03T18:39:50", "url": "https://files.pythonhosted.org/packages/3f/fe/c7ebd8d779988a069f43905a799696054d644a05dd9b24a065703ddfe6de/pygdbmi-0.8.1.0.tar.gz" } ], "0.8.1.1": [ { "comment_text": "", "digests": { "md5": "6a393443923afb0dfda5e549df78932a", "sha256": "8eb7445679ebb8746b0ac7767a7e8341d5033ba9c9863596ddc9555d351f6eb5" }, "downloads": -1, "filename": "pygdbmi-0.8.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a393443923afb0dfda5e549df78932a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23289, "upload_time": "2018-01-07T15:33:59", "url": "https://files.pythonhosted.org/packages/24/fc/904a5bef4c4f9cf719cf248902d297e839e7f6f3fd6cbf0e0558dca9e584/pygdbmi-0.8.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e0e41ae01b8dda3fc8f9459db375b95", "sha256": "4ff7d457d3b62f83b689b2899555e95127918b0ec86514c3644640b6f91caafb" }, "downloads": -1, "filename": "pygdbmi-0.8.1.1.tar.gz", "has_sig": false, "md5_digest": "8e0e41ae01b8dda3fc8f9459db375b95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20050, "upload_time": "2018-01-07T15:34:00", "url": "https://files.pythonhosted.org/packages/6e/52/2bc234c995eac03978013e0dcddb396af748d618dff35d42531dc9fbdbf5/pygdbmi-0.8.1.1.tar.gz" } ], "0.8.2.0": [ { "comment_text": "", "digests": { "md5": "649bae297b43978ade2c94141fcde075", "sha256": "7fade18e5dea97d5802a3889bf0865745cb3a3f0001663586a78037cd8012efa" }, "downloads": -1, "filename": "pygdbmi-0.8.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "649bae297b43978ade2c94141fcde075", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23578, "upload_time": "2018-01-08T20:30:38", "url": "https://files.pythonhosted.org/packages/86/0a/c4f136bd3f9196781efffecae9674d1d5b27a9c704aface720acc1221d3d/pygdbmi-0.8.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e74d3d02fa5eef1223b5dedb13f9bbad", "sha256": "47cece65808ca42edf6966ac48e2aedca7ae1c675c4d2f0d001c7f3a7fa245fe" }, "downloads": -1, "filename": "pygdbmi-0.8.2.0.tar.gz", "has_sig": false, "md5_digest": "e74d3d02fa5eef1223b5dedb13f9bbad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20293, "upload_time": "2018-01-08T20:30:41", "url": "https://files.pythonhosted.org/packages/4e/34/a8c86d85e0d3d8df2c289657a55c19408dbdbf0b1468859e7f1a745ae8ff/pygdbmi-0.8.2.0.tar.gz" } ], "0.8.3.0": [ { "comment_text": "", "digests": { "md5": "1f45256c52fb4b842aa39ec6ec4d9ba0", "sha256": "fa8b8ab7d5cc98823c3e91e12622e38343359395b18d22b272e5739607eecb70" }, "downloads": -1, "filename": "pygdbmi-0.8.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1f45256c52fb4b842aa39ec6ec4d9ba0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20055, "upload_time": "2018-05-27T04:08:29", "url": "https://files.pythonhosted.org/packages/78/17/fc1390378e5e6d185de0730fcc264e347b02be27a89697054bdec6b910b4/pygdbmi-0.8.3.0-py2.py3-none-any.whl" } ], "0.8.4.0": [ { "comment_text": "", "digests": { "md5": "36b50c18544e0c3f09ad739d5aebd3ea", "sha256": "4e0650f904ab135d965b829c54e05d0fb5eb377eddefe5c7248f4a3af9d15366" }, "downloads": -1, "filename": "pygdbmi-0.8.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "36b50c18544e0c3f09ad739d5aebd3ea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23612, "upload_time": "2018-09-30T03:27:16", "url": "https://files.pythonhosted.org/packages/7c/3c/00f6fc6c8ea79f5f730252911055d4372bb4ab7b2486187fff3f128f1a3a/pygdbmi-0.8.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9df30280e6da78568d3d1660ec2e657", "sha256": "165f23b1b9dd310ac9922ab60eb236b163ea5a74c873540ed15c059b62781acb" }, "downloads": -1, "filename": "pygdbmi-0.8.4.0.tar.gz", "has_sig": false, "md5_digest": "f9df30280e6da78568d3d1660ec2e657", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21178, "upload_time": "2018-09-30T03:27:18", "url": "https://files.pythonhosted.org/packages/35/00/a3b8de1e5065d4d4c727e5b47881b720a036a5a9979db834573f8f41f7c8/pygdbmi-0.8.4.0.tar.gz" } ], "0.9.0.0": [ { "comment_text": "", "digests": { "md5": "b45595f509a7e0ba105b243715eb6e02", "sha256": "273219c8a51b3a7ffed204c75ca100fcea54c45b5eb2775cee57869113fb7e7f" }, "downloads": -1, "filename": "pygdbmi-0.9.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b45595f509a7e0ba105b243715eb6e02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21051, "upload_time": "2018-11-02T00:20:50", "url": "https://files.pythonhosted.org/packages/ff/cd/d5327fea13fd14c815572447a5e30fd4e49faa6dd6e5e383ebb69965eefe/pygdbmi-0.9.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59d35d329d20c435008d54842fdb096d", "sha256": "f9ba2873fe2222a4e62652652a9186ed5d2c30389197a5f90f912383e906cf3d" }, "downloads": -1, "filename": "pygdbmi-0.9.0.0.tar.gz", "has_sig": false, "md5_digest": "59d35d329d20c435008d54842fdb096d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21396, "upload_time": "2018-11-02T00:20:53", "url": "https://files.pythonhosted.org/packages/7e/5d/7bd1e99a5347197f864af93837f5e54eb01657ac88ede8e968a08f98c112/pygdbmi-0.9.0.0.tar.gz" } ], "0.9.0.1": [ { "comment_text": "", "digests": { "md5": "09aa8754e84ee75856e1a241f01cfc93", "sha256": "789c43cd057572746fb9c8f6075f47f422f49aafd71ecd65d6330268c4c0137d" }, "downloads": -1, "filename": "pygdbmi-0.9.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "09aa8754e84ee75856e1a241f01cfc93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16076, "upload_time": "2019-03-26T23:52:17", "url": "https://files.pythonhosted.org/packages/d6/35/dbc1d0ed11fd4e7faaa7b34db9d5f18628b0dae4950881dc90a6db6d8bb2/pygdbmi-0.9.0.1-py3-none-any.whl" } ], "0.9.0.2": [ { "comment_text": "", "digests": { "md5": "513336018330e143c49017cc604fdc8d", "sha256": "91e6a84b52994a64945aec98ea50189ff4f4cc1082947cc4850eb419044021c3" }, "downloads": -1, "filename": "pygdbmi-0.9.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "513336018330e143c49017cc604fdc8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16219, "upload_time": "2019-06-14T22:52:18", "url": "https://files.pythonhosted.org/packages/dc/ad/ed056528e80a58fd326adcb48c72c5e310bfed2625e06703233f0a931782/pygdbmi-0.9.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c91762ac1493d77d1b65d9612dfe1ba", "sha256": "52a95fc53bf52f570c74d77dccc3202c9bb9c89e6cb14f6bffde8528835d4a4b" }, "downloads": -1, "filename": "pygdbmi-0.9.0.2.tar.gz", "has_sig": false, "md5_digest": "1c91762ac1493d77d1b65d9612dfe1ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17920, "upload_time": "2019-06-14T22:52:20", "url": "https://files.pythonhosted.org/packages/82/93/649a6c22d21679aaabe44a232ffac96103b450e3e587cd99c7d70f1451e3/pygdbmi-0.9.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "513336018330e143c49017cc604fdc8d", "sha256": "91e6a84b52994a64945aec98ea50189ff4f4cc1082947cc4850eb419044021c3" }, "downloads": -1, "filename": "pygdbmi-0.9.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "513336018330e143c49017cc604fdc8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16219, "upload_time": "2019-06-14T22:52:18", "url": "https://files.pythonhosted.org/packages/dc/ad/ed056528e80a58fd326adcb48c72c5e310bfed2625e06703233f0a931782/pygdbmi-0.9.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c91762ac1493d77d1b65d9612dfe1ba", "sha256": "52a95fc53bf52f570c74d77dccc3202c9bb9c89e6cb14f6bffde8528835d4a4b" }, "downloads": -1, "filename": "pygdbmi-0.9.0.2.tar.gz", "has_sig": false, "md5_digest": "1c91762ac1493d77d1b65d9612dfe1ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17920, "upload_time": "2019-06-14T22:52:20", "url": "https://files.pythonhosted.org/packages/82/93/649a6c22d21679aaabe44a232ffac96103b450e3e587cd99c7d70f1451e3/pygdbmi-0.9.0.2.tar.gz" } ] }