# Flameshow
[![tests](https://github.com/laixintao/flameshow/actions/workflows/pytest.yaml/badge.svg?branch=main)](https://github.com/laixintao/flameshow/actions/workflows/pytest.yaml)
[![codecov](https://codecov.io/gh/laixintao/flameshow/graph/badge.svg?token=XQCGN9GBL4)](https://codecov.io/gh/laixintao/flameshow)
[![PyPI](https://img.shields.io/pypi/v/flameshow.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/flameshow/)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flameshow?logo=python&logoColor=gold)
![PyPI - Downloads](https://img.shields.io/pypi/dm/flameshow)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
Flameshow is a terminal Flamegraph viewer.
![](./docs/flameshow.gif)
## Features
- Renders Flamegraphs in your terminal
- Supports zooming in and displaying percentages
- Keyboard input is prioritized
- All operations can also be performed using the mouse.
- Can switch to different sample types
## Install
Flameshow is written in pure Python, so you can install via `pip`:
```shell
pip install flameshow
```
## Usage
View golang's goroutine dump:
```shell
$ curl http://localhost:9100/debug/pprof/goroutine -o goroutine.out
$ flameshow goroutine.out
```
After entering the TUI, the available actions are listed on Footer:
- <kbd>q</kbd> for quit
- <kbd>j</kbd> <kbd>i</kbd> <kbd>j</kbd> <kbd>k</kbd> or <kbd>←</kbd>
<kbd>↓</kbd> <kbd>↑</kbd> <kbd>→</kbd> for moving around, and <kbd>Enter</kbd>
for zoom in, then <kbd>Esc</kbd> for zoom out.
- You can also use a mouse, hover on a span will show it details, and click will
zoom it.
## Supported Formats
As far as I know, there is no standard specification for profiles. Different
languages or tools might generate varying profile formats. I'm actively working
on supporting more formats. Admittedly, I might not be familiar with every tool
and its specific format. So, if you'd like Flameshow to integrate with a tool
you love, please feel free to reach out and submit an issue.
- Golang pprof
- [Brendan Gregg's Flamegraph](https://www.brendangregg.com/flamegraphs.html)
## Development
If you want to dive into the code and make some changes, start with:
```shell
git clone git@github.com:laixintao/flameshow.git
cd flameshow
pip install poetry
poetry install
```
---
This project is proudly powered by
[textual](https://github.com/Textualize/textual).
Raw data
{
"_id": null,
"home_page": "https://github.com/laixintao/flameshow",
"name": "flameshow",
"maintainer": "laixintao",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "laixintaoo@gmail.com",
"keywords": "terminal,golang,pprof,flamegraph",
"author": "laixintao",
"author_email": "laixintaoo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/15/72/727012085ebc3f96c21ec6ca3766d3789099a9a38cecf318b4231cba43ab/flameshow-1.1.2.tar.gz",
"platform": null,
"description": "# Flameshow\n\n[![tests](https://github.com/laixintao/flameshow/actions/workflows/pytest.yaml/badge.svg?branch=main)](https://github.com/laixintao/flameshow/actions/workflows/pytest.yaml)\n[![codecov](https://codecov.io/gh/laixintao/flameshow/graph/badge.svg?token=XQCGN9GBL4)](https://codecov.io/gh/laixintao/flameshow)\n[![PyPI](https://img.shields.io/pypi/v/flameshow.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/flameshow/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flameshow?logo=python&logoColor=gold)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/flameshow)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nFlameshow is a terminal Flamegraph viewer.\n\n![](./docs/flameshow.gif)\n\n## Features\n\n- Renders Flamegraphs in your terminal\n- Supports zooming in and displaying percentages\n- Keyboard input is prioritized\n- All operations can also be performed using the mouse.\n- Can switch to different sample types\n\n## Install\n\nFlameshow is written in pure Python, so you can install via `pip`:\n\n```shell\npip install flameshow\n```\n\n## Usage\n\nView golang's goroutine dump:\n\n```shell\n$ curl http://localhost:9100/debug/pprof/goroutine -o goroutine.out\n$ flameshow goroutine.out\n```\n\nAfter entering the TUI, the available actions are listed on Footer:\n\n- <kbd>q</kbd> for quit\n- <kbd>j</kbd> <kbd>i</kbd> <kbd>j</kbd> <kbd>k</kbd> or <kbd>\u2190</kbd>\n <kbd>\u2193</kbd> <kbd>\u2191</kbd> <kbd>\u2192</kbd> for moving around, and <kbd>Enter</kbd>\n for zoom in, then <kbd>Esc</kbd> for zoom out.\n- You can also use a mouse, hover on a span will show it details, and click will\n zoom it.\n\n## Supported Formats\n\nAs far as I know, there is no standard specification for profiles. Different\nlanguages or tools might generate varying profile formats. I'm actively working\non supporting more formats. Admittedly, I might not be familiar with every tool\nand its specific format. So, if you'd like Flameshow to integrate with a tool\nyou love, please feel free to reach out and submit an issue.\n\n- Golang pprof\n- [Brendan Gregg's Flamegraph](https://www.brendangregg.com/flamegraphs.html)\n\n## Development\n\nIf you want to dive into the code and make some changes, start with:\n\n```shell\ngit clone git@github.com:laixintao/flameshow.git\ncd flameshow\npip install poetry\npoetry install\n```\n\n---\n\nThis project is proudly powered by\n[textual](https://github.com/Textualize/textual).\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "A Terminal Flamegraph Viewer",
"version": "1.1.2",
"project_urls": {
"Bug Tracker": "https://github.com/laixintao/flameshow/issues",
"Homepage": "https://github.com/laixintao/flameshow"
},
"split_keywords": [
"terminal",
"golang",
"pprof",
"flamegraph"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cd657bdb67258ede0dcd5fc0a555a1bf24bb5118d3d48dd37487ee1193a1beb8",
"md5": "7d7c3dc5570e684aad060ddc0d4d7413",
"sha256": "fe6891fb8bde309b61237ece9702ddef79e17a4d477dd6c7ee87b049096056fd"
},
"downloads": -1,
"filename": "flameshow-1.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7d7c3dc5570e684aad060ddc0d4d7413",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 24076,
"upload_time": "2024-01-08T08:00:18",
"upload_time_iso_8601": "2024-01-08T08:00:18.325062Z",
"url": "https://files.pythonhosted.org/packages/cd/65/7bdb67258ede0dcd5fc0a555a1bf24bb5118d3d48dd37487ee1193a1beb8/flameshow-1.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1572727012085ebc3f96c21ec6ca3766d3789099a9a38cecf318b4231cba43ab",
"md5": "8a0f7e758b34ca04c89f24f4c9debe44",
"sha256": "416289a8dfe331fcc33972e4e62c2d5c24b7a33bb666becaea7d00bc833db6aa"
},
"downloads": -1,
"filename": "flameshow-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "8a0f7e758b34ca04c89f24f4c9debe44",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 2294852,
"upload_time": "2024-01-08T08:00:20",
"upload_time_iso_8601": "2024-01-08T08:00:20.521770Z",
"url": "https://files.pythonhosted.org/packages/15/72/727012085ebc3f96c21ec6ca3766d3789099a9a38cecf318b4231cba43ab/flameshow-1.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-08 08:00:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "laixintao",
"github_project": "flameshow",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "flameshow"
}