summaryrefslogtreecommitdiff
path: root/python-pylaprof.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-pylaprof.spec')
-rw-r--r--python-pylaprof.spec309
1 files changed, 309 insertions, 0 deletions
diff --git a/python-pylaprof.spec b/python-pylaprof.spec
new file mode 100644
index 0000000..38b9027
--- /dev/null
+++ b/python-pylaprof.spec
@@ -0,0 +1,309 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pylaprof
+Version: 0.4.6
+Release: 1
+Summary: A Python sampling profiler for AWS Lambda functions (and not only).
+License: MIT
+URL: https://github.com/glumia/pylaprof
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/cd/46/256bc2e69ece84b0b75253a240df54cbce17bffaeea035952e2a620eec1b/pylaprof-0.4.6.tar.gz
+BuildArch: noarch
+
+
+%description
+# pylaprof
+pylaprof is a Python library that allows you to profile functions or sections of code.
+
+As a decorator:
+```python
+from pylaprof import profile
+
+@profile()
+def handler(event, context):
+ ...
+```
+
+As a context manager:
+```python
+from pylaprof import Profiler
+
+def main():
+ ...
+ with Profiler():
+ # Only code inside this context will be profiled.
+ ...
+```
+
+It is built around three main abstractions: the *profiler*, the *sampler*, and
+the *storer*.
+
+The profiler is the main component of pylaprof, it takes care of taking
+snapshots of your program's stack at regular intervals and feeding them
+to the *sampler* for processing; at the end of the profiling session, it will
+then ask the *sampler* for a report and provide it to the *storer*.
+
+Take a look at the [source](./pylaprof/__init__.py) for more documentation
+and some pre-implemented samplers and storers or [here](./examples) for some
+usage examples.
+
+## Features
+- Accessible: pylaprof's code is thoroughly documented and written to be read and
+ understood by other humans.
+
+- Extensible: you can write your own sampler or storer to generate reports in the format
+ you like and store them where and how you want.
+
+- Zero external dependencies[^1].
+
+- Close to zero impact on performances (check [benchmark](./benchmark) for
+ more details).
+
+- Reliable: pylaprof was built with the context of long-running
+ applications or continuously invoked lambda functions in mind.
+ It will never break your code or pollute your standard output or error
+ with unwanted messages.
+
+- Turn on/off profiling with an environment variable.
+
+- Store the profiling report only if execution takes longer than a threshold.
+
+[^1]: boto3 is optional and required only if you want to use the S3 storer.
+
+### pylaprof-merge
+`pylaprof-merge` is a CLI tool to merge multiple stackcollapse reports into a
+single one. This might come in handy if you want to get an aggregated overview
+of a function or piece of code that is executed frequently for short periods.
+It is installed automatically if you get pylaprof with pip.
+
+
+## Installation
+```
+pip install pylaprof
+```
+
+Or just copy-paste the pylaprof directory where you need it.
+
+
+## Credits
+- This library is heavily inspired to [pprofile](
+ https://github.com/vpelletier/pprofile): thanks to its authors for writing such
+ accessible and well-documented code.
+- Thanks to @jvns for writing and distributing some of her *wizard zines* for free:
+ that's what got me into the rabbit hole of profiling in the first place.
+
+
+%package -n python3-pylaprof
+Summary: A Python sampling profiler for AWS Lambda functions (and not only).
+Provides: python-pylaprof
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pylaprof
+# pylaprof
+pylaprof is a Python library that allows you to profile functions or sections of code.
+
+As a decorator:
+```python
+from pylaprof import profile
+
+@profile()
+def handler(event, context):
+ ...
+```
+
+As a context manager:
+```python
+from pylaprof import Profiler
+
+def main():
+ ...
+ with Profiler():
+ # Only code inside this context will be profiled.
+ ...
+```
+
+It is built around three main abstractions: the *profiler*, the *sampler*, and
+the *storer*.
+
+The profiler is the main component of pylaprof, it takes care of taking
+snapshots of your program's stack at regular intervals and feeding them
+to the *sampler* for processing; at the end of the profiling session, it will
+then ask the *sampler* for a report and provide it to the *storer*.
+
+Take a look at the [source](./pylaprof/__init__.py) for more documentation
+and some pre-implemented samplers and storers or [here](./examples) for some
+usage examples.
+
+## Features
+- Accessible: pylaprof's code is thoroughly documented and written to be read and
+ understood by other humans.
+
+- Extensible: you can write your own sampler or storer to generate reports in the format
+ you like and store them where and how you want.
+
+- Zero external dependencies[^1].
+
+- Close to zero impact on performances (check [benchmark](./benchmark) for
+ more details).
+
+- Reliable: pylaprof was built with the context of long-running
+ applications or continuously invoked lambda functions in mind.
+ It will never break your code or pollute your standard output or error
+ with unwanted messages.
+
+- Turn on/off profiling with an environment variable.
+
+- Store the profiling report only if execution takes longer than a threshold.
+
+[^1]: boto3 is optional and required only if you want to use the S3 storer.
+
+### pylaprof-merge
+`pylaprof-merge` is a CLI tool to merge multiple stackcollapse reports into a
+single one. This might come in handy if you want to get an aggregated overview
+of a function or piece of code that is executed frequently for short periods.
+It is installed automatically if you get pylaprof with pip.
+
+
+## Installation
+```
+pip install pylaprof
+```
+
+Or just copy-paste the pylaprof directory where you need it.
+
+
+## Credits
+- This library is heavily inspired to [pprofile](
+ https://github.com/vpelletier/pprofile): thanks to its authors for writing such
+ accessible and well-documented code.
+- Thanks to @jvns for writing and distributing some of her *wizard zines* for free:
+ that's what got me into the rabbit hole of profiling in the first place.
+
+
+%package help
+Summary: Development documents and examples for pylaprof
+Provides: python3-pylaprof-doc
+%description help
+# pylaprof
+pylaprof is a Python library that allows you to profile functions or sections of code.
+
+As a decorator:
+```python
+from pylaprof import profile
+
+@profile()
+def handler(event, context):
+ ...
+```
+
+As a context manager:
+```python
+from pylaprof import Profiler
+
+def main():
+ ...
+ with Profiler():
+ # Only code inside this context will be profiled.
+ ...
+```
+
+It is built around three main abstractions: the *profiler*, the *sampler*, and
+the *storer*.
+
+The profiler is the main component of pylaprof, it takes care of taking
+snapshots of your program's stack at regular intervals and feeding them
+to the *sampler* for processing; at the end of the profiling session, it will
+then ask the *sampler* for a report and provide it to the *storer*.
+
+Take a look at the [source](./pylaprof/__init__.py) for more documentation
+and some pre-implemented samplers and storers or [here](./examples) for some
+usage examples.
+
+## Features
+- Accessible: pylaprof's code is thoroughly documented and written to be read and
+ understood by other humans.
+
+- Extensible: you can write your own sampler or storer to generate reports in the format
+ you like and store them where and how you want.
+
+- Zero external dependencies[^1].
+
+- Close to zero impact on performances (check [benchmark](./benchmark) for
+ more details).
+
+- Reliable: pylaprof was built with the context of long-running
+ applications or continuously invoked lambda functions in mind.
+ It will never break your code or pollute your standard output or error
+ with unwanted messages.
+
+- Turn on/off profiling with an environment variable.
+
+- Store the profiling report only if execution takes longer than a threshold.
+
+[^1]: boto3 is optional and required only if you want to use the S3 storer.
+
+### pylaprof-merge
+`pylaprof-merge` is a CLI tool to merge multiple stackcollapse reports into a
+single one. This might come in handy if you want to get an aggregated overview
+of a function or piece of code that is executed frequently for short periods.
+It is installed automatically if you get pylaprof with pip.
+
+
+## Installation
+```
+pip install pylaprof
+```
+
+Or just copy-paste the pylaprof directory where you need it.
+
+
+## Credits
+- This library is heavily inspired to [pprofile](
+ https://github.com/vpelletier/pprofile): thanks to its authors for writing such
+ accessible and well-documented code.
+- Thanks to @jvns for writing and distributing some of her *wizard zines* for free:
+ that's what got me into the rabbit hole of profiling in the first place.
+
+
+%prep
+%autosetup -n pylaprof-0.4.6
+
+%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-pylaprof -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.6-1
+- Package Spec generated