diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-29 11:15:17 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 11:15:17 +0000 |
| commit | d919e32208d4b7abd01e8152a9ae8cdea03ade69 (patch) | |
| tree | e0d08b98a8c88346fa512351037c6405197e2865 | |
| parent | 8845762c4fc42abc56d3e34aa352b05ac4742742 (diff) | |
automatic import of python-pptop
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pptop.spec | 480 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 482 insertions, 0 deletions
@@ -0,0 +1 @@ +/pptop-0.6.15.tar.gz diff --git a/python-pptop.spec b/python-pptop.spec new file mode 100644 index 0000000..b49215b --- /dev/null +++ b/python-pptop.spec @@ -0,0 +1,480 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pptop +Version: 0.6.15 +Release: 1 +Summary: Open, extensible Python injector/profiler/analyzer +License: MIT +URL: https://pptop.bma.ai/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1e/2b/ce8f10cd8d7d7e892aa56a4e0e78cbcebe8a160c363825192a7f1f6f3e0a/pptop-0.6.15.tar.gz +BuildArch: noarch + + +%description +# ppTOP + +Project home: https://pptop.bma.ai/ + +<img src="https://github.com/alttch/pptop/blob/master/media/logo.png?raw=true" align="right" width="200" /> ppTOP is open, extensible Python injector/profiler/analyzer. + +The main idea is to inject a custom code inside Python process (already running +or going to be launched) and analyze its behavior with no any code +modifications. + +<img src="https://img.shields.io/pypi/v/pptop.svg" /> <img src="https://img.shields.io/badge/license-MIT-green" /> <img src="https://img.shields.io/badge/python-3.5%20%7C%203.6%20%7C%203.7-blue.svg" /> <img src="https://img.shields.io/badge/-beta-orange.svg" /> + +Say no to "prints" and garbage in debug logs - now you have ppTOP. A modern MRI +scanner for Python. + +## Installation + +``` + pip3 install pptop +``` + +* Python: 3.5+ is required, as ppTOP uses asyncio +* Can be injected into any Python version (tested: 2.7+) +* Injection into running processes requires *gdb* (present in almost + all Linux distributions) +* Only Linux systems are currently supported + +<img src="https://github.com/alttch/pptop/blob/master/media/demo.gif?raw=true" width="750" /> + +## Features + +ppTOP can be injected into any running Python process + +[](https://asciinema.org/a/265309) + +or you can load Python program manually and profile its launch + +[](https://asciinema.org/a/265310) + +To launch a program, press *Ctrl+L* or specify *-w sec* param in command line +args to start it automatically after the specified delay. + +Data from connected process is collected in real-time and displayed in +table-based console UI, which can be easily extended with custom plugins. + +All data tables can be scrolled, filtered, new data collection can be paused. +In case of problems, any plugin can be re-injected at any time. + +## Usage + +To start ppTOP, type + +```shell + pptop +``` + +and then select Python process you want to inject to from the list. + +Alternatively, you can start it with + +```shell + pptop PID + # or + pptop PID-FILE +``` + +and specify the process from the command line. + +If you want to analyze program startup, just type + +```shell + pptop /path/to/program.py +``` + +The program will be loaded in waiting state, press *Ctrl+L* when you are ready. + +To get a help for the current plugin, press *F1* to display module +documentation. + +## Configuration + +Plugins and keyboard shortcuts are configured by default in +*~/.pptop/pptop.yml* file (created automatically at first launch). + +## Standard plugins + +* **asyncio** asyncio loop monitor +* **atasker** [atasker](https://github.com/alttch/atasker) monitor +* **env** view process OS environment variables +* **log** inject into all Python loggers and collect log messages +* **malloc** trace object memory allocations +* **neotasker** [neotasker](https://github.com/alttch/neotasker) monitor +* **open_files** view process open files +* **script_runner** launch a custom scripts inside process +* **threads** view process threads +* **vars** variable/function watcher +* **yappi** [yappi](https://github.com/sumerc/yappi) profiler plugin + +Most of plugins contain 2 parts of code: one collects data inside profiling +process, other display it in ppTOP UI. For the profiling process all plug-ins +are invisible, safe and unloadable (at least they try their best :) + +## Console mode + +With "`" button, remote Python console can be opened. It has no full +functionality like a standard Python console, but supports all frequently used +features, like importing modules, defining functions and variables, +executing functions and loops etc. + +[](https://asciinema.org/a/265307) + +Console has own remote *globals*, which are preserved until ppTOP quit and +injected server is terminated. + +## Grab stdout/stderr + +If launched with "-g" option, ppTOP will grab stdout/stderr of injected process +and print it to local console. You can view local console without entering +console mode, by pressing *Ctrl+O*. + +## Documentation + +Configuration, troubleshooting, advanced usage, plugin development: +https://pptop.bma.ai/doc/ + +## TODO + +* [ ] More plugins +* [ ] Advanced filtering +* [ ] Data snapshots +* [ ] Step-by-step debugger +* [ ] JSON API, web interface +* [ ] Charts + +Enjoy! :) + +p.s. Code in **master** can be completely broken, install with *pip* only. + +%package -n python3-pptop +Summary: Open, extensible Python injector/profiler/analyzer +Provides: python-pptop +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pptop +# ppTOP + +Project home: https://pptop.bma.ai/ + +<img src="https://github.com/alttch/pptop/blob/master/media/logo.png?raw=true" align="right" width="200" /> ppTOP is open, extensible Python injector/profiler/analyzer. + +The main idea is to inject a custom code inside Python process (already running +or going to be launched) and analyze its behavior with no any code +modifications. + +<img src="https://img.shields.io/pypi/v/pptop.svg" /> <img src="https://img.shields.io/badge/license-MIT-green" /> <img src="https://img.shields.io/badge/python-3.5%20%7C%203.6%20%7C%203.7-blue.svg" /> <img src="https://img.shields.io/badge/-beta-orange.svg" /> + +Say no to "prints" and garbage in debug logs - now you have ppTOP. A modern MRI +scanner for Python. + +## Installation + +``` + pip3 install pptop +``` + +* Python: 3.5+ is required, as ppTOP uses asyncio +* Can be injected into any Python version (tested: 2.7+) +* Injection into running processes requires *gdb* (present in almost + all Linux distributions) +* Only Linux systems are currently supported + +<img src="https://github.com/alttch/pptop/blob/master/media/demo.gif?raw=true" width="750" /> + +## Features + +ppTOP can be injected into any running Python process + +[](https://asciinema.org/a/265309) + +or you can load Python program manually and profile its launch + +[](https://asciinema.org/a/265310) + +To launch a program, press *Ctrl+L* or specify *-w sec* param in command line +args to start it automatically after the specified delay. + +Data from connected process is collected in real-time and displayed in +table-based console UI, which can be easily extended with custom plugins. + +All data tables can be scrolled, filtered, new data collection can be paused. +In case of problems, any plugin can be re-injected at any time. + +## Usage + +To start ppTOP, type + +```shell + pptop +``` + +and then select Python process you want to inject to from the list. + +Alternatively, you can start it with + +```shell + pptop PID + # or + pptop PID-FILE +``` + +and specify the process from the command line. + +If you want to analyze program startup, just type + +```shell + pptop /path/to/program.py +``` + +The program will be loaded in waiting state, press *Ctrl+L* when you are ready. + +To get a help for the current plugin, press *F1* to display module +documentation. + +## Configuration + +Plugins and keyboard shortcuts are configured by default in +*~/.pptop/pptop.yml* file (created automatically at first launch). + +## Standard plugins + +* **asyncio** asyncio loop monitor +* **atasker** [atasker](https://github.com/alttch/atasker) monitor +* **env** view process OS environment variables +* **log** inject into all Python loggers and collect log messages +* **malloc** trace object memory allocations +* **neotasker** [neotasker](https://github.com/alttch/neotasker) monitor +* **open_files** view process open files +* **script_runner** launch a custom scripts inside process +* **threads** view process threads +* **vars** variable/function watcher +* **yappi** [yappi](https://github.com/sumerc/yappi) profiler plugin + +Most of plugins contain 2 parts of code: one collects data inside profiling +process, other display it in ppTOP UI. For the profiling process all plug-ins +are invisible, safe and unloadable (at least they try their best :) + +## Console mode + +With "`" button, remote Python console can be opened. It has no full +functionality like a standard Python console, but supports all frequently used +features, like importing modules, defining functions and variables, +executing functions and loops etc. + +[](https://asciinema.org/a/265307) + +Console has own remote *globals*, which are preserved until ppTOP quit and +injected server is terminated. + +## Grab stdout/stderr + +If launched with "-g" option, ppTOP will grab stdout/stderr of injected process +and print it to local console. You can view local console without entering +console mode, by pressing *Ctrl+O*. + +## Documentation + +Configuration, troubleshooting, advanced usage, plugin development: +https://pptop.bma.ai/doc/ + +## TODO + +* [ ] More plugins +* [ ] Advanced filtering +* [ ] Data snapshots +* [ ] Step-by-step debugger +* [ ] JSON API, web interface +* [ ] Charts + +Enjoy! :) + +p.s. Code in **master** can be completely broken, install with *pip* only. + +%package help +Summary: Development documents and examples for pptop +Provides: python3-pptop-doc +%description help +# ppTOP + +Project home: https://pptop.bma.ai/ + +<img src="https://github.com/alttch/pptop/blob/master/media/logo.png?raw=true" align="right" width="200" /> ppTOP is open, extensible Python injector/profiler/analyzer. + +The main idea is to inject a custom code inside Python process (already running +or going to be launched) and analyze its behavior with no any code +modifications. + +<img src="https://img.shields.io/pypi/v/pptop.svg" /> <img src="https://img.shields.io/badge/license-MIT-green" /> <img src="https://img.shields.io/badge/python-3.5%20%7C%203.6%20%7C%203.7-blue.svg" /> <img src="https://img.shields.io/badge/-beta-orange.svg" /> + +Say no to "prints" and garbage in debug logs - now you have ppTOP. A modern MRI +scanner for Python. + +## Installation + +``` + pip3 install pptop +``` + +* Python: 3.5+ is required, as ppTOP uses asyncio +* Can be injected into any Python version (tested: 2.7+) +* Injection into running processes requires *gdb* (present in almost + all Linux distributions) +* Only Linux systems are currently supported + +<img src="https://github.com/alttch/pptop/blob/master/media/demo.gif?raw=true" width="750" /> + +## Features + +ppTOP can be injected into any running Python process + +[](https://asciinema.org/a/265309) + +or you can load Python program manually and profile its launch + +[](https://asciinema.org/a/265310) + +To launch a program, press *Ctrl+L* or specify *-w sec* param in command line +args to start it automatically after the specified delay. + +Data from connected process is collected in real-time and displayed in +table-based console UI, which can be easily extended with custom plugins. + +All data tables can be scrolled, filtered, new data collection can be paused. +In case of problems, any plugin can be re-injected at any time. + +## Usage + +To start ppTOP, type + +```shell + pptop +``` + +and then select Python process you want to inject to from the list. + +Alternatively, you can start it with + +```shell + pptop PID + # or + pptop PID-FILE +``` + +and specify the process from the command line. + +If you want to analyze program startup, just type + +```shell + pptop /path/to/program.py +``` + +The program will be loaded in waiting state, press *Ctrl+L* when you are ready. + +To get a help for the current plugin, press *F1* to display module +documentation. + +## Configuration + +Plugins and keyboard shortcuts are configured by default in +*~/.pptop/pptop.yml* file (created automatically at first launch). + +## Standard plugins + +* **asyncio** asyncio loop monitor +* **atasker** [atasker](https://github.com/alttch/atasker) monitor +* **env** view process OS environment variables +* **log** inject into all Python loggers and collect log messages +* **malloc** trace object memory allocations +* **neotasker** [neotasker](https://github.com/alttch/neotasker) monitor +* **open_files** view process open files +* **script_runner** launch a custom scripts inside process +* **threads** view process threads +* **vars** variable/function watcher +* **yappi** [yappi](https://github.com/sumerc/yappi) profiler plugin + +Most of plugins contain 2 parts of code: one collects data inside profiling +process, other display it in ppTOP UI. For the profiling process all plug-ins +are invisible, safe and unloadable (at least they try their best :) + +## Console mode + +With "`" button, remote Python console can be opened. It has no full +functionality like a standard Python console, but supports all frequently used +features, like importing modules, defining functions and variables, +executing functions and loops etc. + +[](https://asciinema.org/a/265307) + +Console has own remote *globals*, which are preserved until ppTOP quit and +injected server is terminated. + +## Grab stdout/stderr + +If launched with "-g" option, ppTOP will grab stdout/stderr of injected process +and print it to local console. You can view local console without entering +console mode, by pressing *Ctrl+O*. + +## Documentation + +Configuration, troubleshooting, advanced usage, plugin development: +https://pptop.bma.ai/doc/ + +## TODO + +* [ ] More plugins +* [ ] Advanced filtering +* [ ] Data snapshots +* [ ] Step-by-step debugger +* [ ] JSON API, web interface +* [ ] Charts + +Enjoy! :) + +p.s. Code in **master** can be completely broken, install with *pip* only. + +%prep +%autosetup -n pptop-0.6.15 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pptop -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.15-1 +- Package Spec generated @@ -0,0 +1 @@ +dfcfd6bc5ef2c5bc4c5bb831c4e3f03e pptop-0.6.15.tar.gz |
