{"id":13929928,"url":"https://github.com/bwohlberg/jonga","last_synced_at":"2025-04-06T22:07:13.293Z","repository":{"id":18610644,"uuid":"84750020","full_name":"bwohlberg/jonga","owner":"bwohlberg","description":"Jonga: Python function call graph visualization","archived":false,"fork":false,"pushed_at":"2025-01-04T15:57:13.000Z","size":1287,"stargazers_count":54,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T21:06:43.842Z","etag":null,"topics":["call-graph","call-graph-analysis","code-visualization","dependency-graph","documentation-tool"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bwohlberg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-12T19:08:33.000Z","updated_at":"2025-01-04T15:57:16.000Z","dependencies_parsed_at":"2024-05-14T01:29:24.191Z","dependency_job_id":"036f000c-5c42-43d3-a6f9-7ad3195c066d","html_url":"https://github.com/bwohlberg/jonga","commit_stats":{"total_commits":92,"total_committers":4,"mean_commits":23.0,"dds":"0.40217391304347827","last_synced_commit":"b561c4d07725d54994ca06dcc5bd7bba7a98eed1"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwohlberg%2Fjonga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwohlberg%2Fjonga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwohlberg%2Fjonga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwohlberg%2Fjonga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bwohlberg","download_url":"https://codeload.github.com/bwohlberg/jonga/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247557767,"owners_count":20958047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["call-graph","call-graph-analysis","code-visualization","dependency-graph","documentation-tool"],"created_at":"2024-08-07T18:02:37.538Z","updated_at":"2025-04-06T22:07:13.276Z","avatar_url":"https://github.com/bwohlberg.png","language":"Python","readme":"[![Documentation Status](https://readthedocs.org/projects/jonga/badge/?version=latest)](http://jonga.readthedocs.io/en/latest/?badge=latest)\n[![PyPi Release](https://badge.fury.io/py/jonga.svg)](https://badge.fury.io/py/jonga)\n[![PyPi Downloads](https://static.pepy.tech/personalized-badge/jonga?period=total\u0026left_color=grey\u0026right_color=brightgreen\u0026left_text=downloads)](https://pepy.tech/project/jonga)\n[![Conda Forge Release](https://img.shields.io/conda/vn/conda-forge/jonga.svg)](https://anaconda.org/conda-forge/jonga)\n[![Conda Forge Downloads](https://img.shields.io/conda/dn/conda-forge/jonga.svg)](https://anaconda.org/conda-forge/jonga)\n[![Supported Python Versions](https://img.shields.io/badge/python-3.3+-green.svg)](https://github.com/bwohlberg/jonga)\n[![Package License](https://img.shields.io/pypi/l/jonga.svg)](https://github.com/bwohlberg/jonga)\n[![Binder](http://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/bwohlberg/jonga/master?filepath=examples/index.ipynb)\n\n\n# Jonga\n\nJonga is a Python package that generates a directed graph representing\nfunction calls within a block of Python code, intended for inclusion in\nSphinx package documentation. There are a number of alternative packages\nwith similar goals, including\n\n-   [pycallgraph](https://github.com/gak/pycallgraph)\n-   [pyan](https://github.com/davidfraser/pyan)\n-   [snakefood](https://github.com/blais/snakefood)\n\nbut none of them is entirely suitable for generating function/method\ncall vizualizations for inclusion within package documentation. In\nparticular, none of these other packages correctly identifies method\nclasses within a hierarchy of derived classes.\n\n\n## Requirements\n\nThe primary requirement is Python 3.3 or greater (this packages is *not*\ncompatible with Python 2), imposed by the use of the `__qualname__`\nfunction attribute and\n[inspect.getclosurevars](https://docs.python.org/3/library/inspect.html#inspect.getclosurevars).\nThe `__qualname__` attribute could be replaced in earlier versions of\nPython by [qualname](https://github.com/wbolster/qualname), but there is\nno obvious replacement for\n[inspect.getclosurevars](https://docs.python.org/3/library/inspect.html#inspect.getclosurevars),\nwhich was introduced in Python 3.3.\n\nThe other major requirement is\n[pygraphviz](https://pygraphviz.github.io/).\n\n\n### Optional\n\nPackage [matplotlib](http://matplotlib.org) is required to run the\nincluded [Jupyter Notebook](http://jupyter.org/) examples.\n\nPackage [pytest](https://github.com/pytest-dev/pytest) is\nrequired to run the tests (`pytest` in the repository root directory).\n\nPackages [sphinx](http://www.sphinx-doc.org/en/stable),\n[sphinx-bootstrap-theme](http://ryan-roemer.github.io/sphinx-bootstrap-theme/README.html),\nand [numpydoc](https://github.com/numpy/numpydoc) are required to build\nthe documentation (`make html` in the `docs` directory).\n\n\n## Usage\n\nScripts illustrating usage of the package can be found in the `examples`\ndirectory of the source distribution. These examples can be run from the\nroot directory of the package by, for example\n\n    python examples/example1.py\n\nTo run these scripts prior to installing the package it will be\nnecessary to first set the `PYTHONPATH` environment variable to include\nthe root directory of the package. For example, in a `bash` shell\n\n    export PYTHONPATH=$PYTHONPATH:`pwd`\n\nfrom the root directory of the package.\n\n[Jupyter Notebook](http://jupyter.org/) versions of the example scripts\nare also included in the `examples` directory, and can be viewed online\nvia\n[nbviewer](http://nbviewer.jupyter.org/github/bwohlberg/jonga/blob/master/examples/index.ipynb),\nor run interactively at\n[binder](https://mybinder.org/v2/gh/bwohlberg/jonga/master?filepath=examples/index.ipynb).\n\n\n## Documentation\n\nDocumentation is available online at [Read the\nDocs](http://jonga.rtfd.io/), or can be built from the `docs` directory of\nthe source distribution by the command\n\n    make html\n\nin which case the HTML documentation can be found in the\n`build/sphinx/html` directory (the top-level document is `index.html`).\n\n\n## Contact\n\nPlease submit bug reports, comments, etc. via the [GitHub Issues\ninterface](https://github.com/bwohlberg/jonga/issues).\n\n\n## License\n\nThis package is made available under the terms of the GNU General Public\nLicense as published by the Free Software Foundation; either version 2\nof the License (see the included `LICENSE` file), or (at your option)\nany later version.\n","funding_links":[],"categories":["others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwohlberg%2Fjonga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbwohlberg%2Fjonga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbwohlberg%2Fjonga/lists"}