diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 05:42:22 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 05:42:22 +0000 |
| commit | 3cb5b22a3d689adad1da452a4ebdb6216bbde1bc (patch) | |
| tree | 5e9e9cacab350b0db26f838bb3a54dfcfbd7d7de | |
| parent | ab6c3e02d05d728cdda8e0552406a6b9bce2eaaf (diff) | |
automatic import of python-appmetricsopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-appmetrics.spec | 219 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 221 insertions, 0 deletions
@@ -0,0 +1 @@ +/AppMetrics-0.5.0.tar.gz diff --git a/python-appmetrics.spec b/python-appmetrics.spec new file mode 100644 index 0000000..72c0097 --- /dev/null +++ b/python-appmetrics.spec @@ -0,0 +1,219 @@ +%global _empty_manifest_terminate_build 0 +Name: python-AppMetrics +Version: 0.5.0 +Release: 1 +Summary: Application metrics collector +License: Apache 2.0 +URL: https://github.com/avalente/appmetrics +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ec/67/36b09c8845d2a83f4746626a0ad90907d96e8e215bd0276cd1b87d5c53ad/AppMetrics-0.5.0.tar.gz +BuildArch: noarch + + +%description +Install ``AppMetrics`` into your python environment:: + pip install appmetrics +or, if you don't use ``pip``, download and unpack the package an then:: + python setup.py install +Once you have installed ``AppMetrics`` you can access it by the ``metrics`` module:: + >>> from appmetrics import metrics + >>> histogram = metrics.new_histogram("test") + >>> histogram.notify(1.0) + True + >>> histogram.notify(2.0) + True + >>> histogram.notify(3.0) + True + >>> histogram.get() + {'arithmetic_mean': 2.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 1.6363636363636365, 'min': 1.0, 'standard_deviation': 1.0, 'median': 2.0, 'histogram': [(3.0, 3), (5.0, 0)], 'percentile': [(50, 2.0), (75, 2.0), (90, 3.0), (95, 3.0), (99, 3.0), (99.9, 3.0)], 'n': 3, 'max': 3.0, 'variance': 1.0, 'geometric_mean': 1.8171205928321397, 'kurtosis': -2.3333333333333335} +Basically you create a new metric by using one of the ``metrics.new_*`` functions. The metric will be stored into +an internal registry, so you can access it in different places in your application:: + >>> test_histogram = metrics.metric("test") + >>> test_histogram.notify(4.0) + True +The ``metrics`` registry is thread-safe, you can safely use it in multi-threaded web servers. +Using the ``with_histogram`` decorator we can time a function:: + >>> import time, random + >>> @metrics.with_histogram("test") + >>> my_worker() + >>> my_worker() + >>> my_worker() +and let's see the results:: + >>> metrics.get("test") + {'arithmetic_mean': 0.41326093673706055, 'kind': 'histogram', 'skewness': 0.2739718270714368, 'harmonic_mean': 0.14326954591313346, 'min': 0.0613858699798584, 'standard_deviation': 0.4319169569113129, 'median': 0.2831099033355713, 'histogram': [(1.0613858699798584, 3), (2.0613858699798584, 0)], 'percentile': [(50, 0.2831099033355713), (75, 0.2831099033355713), (90, 0.895287036895752), (95, 0.895287036895752), (99, 0.895287036895752), (99.9, 0.895287036895752)], 'n': 3, 'max': 0.895287036895752, 'variance': 0.18655225766752892, 'geometric_mean': 0.24964828731906127, 'kurtosis': -2.3333333333333335} +It is also possible to time specific sections of the code by using the ``timer`` context manager:: + >>> import time, random +Let's print the metrics data on the screen every 5 seconds:: + >>> from appmetrics import reporter + >>> def stdout_report(metrics): + >>> reporter.register(stdout_report, reporter.fixed_interval_scheduler(5)) + '5680173c-0279-46ec-bd88-b318f8058ef4' + >>> {'test': {'arithmetic_mean': 0.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.0, 'min': 0, 'standard_deviation': 0.0, 'median': 0.0, 'histogram': [(0, 0)], 'percentile': [(50, 0.0), (75, 0.0), (90, 0.0), (95, 0.0), (99, 0.0), (99.9, 0.0)], 'n': 0, 'max': 0, 'variance': 0.0, 'geometric_mean': 0.0, 'kurtosis': 0.0}} + >>> my_worker() + >>> my_worker() + >>> {'test': {'arithmetic_mean': 0.5028266906738281, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.2534044030939462, 'min': 0.14868521690368652, 'standard_deviation': 0.50083167520453, 'median': 0.5028266906738281, 'histogram': [(1.1486852169036865, 2), (2.1486852169036865, 0)], 'percentile': [(50, 0.14868521690368652), (75, 0.8569681644439697), (90, 0.8569681644439697), (95, 0.8569681644439697), (99, 0.8569681644439697), (99.9, 0.8569681644439697)], 'n': 2, 'max': 0.8569681644439697, 'variance': 0.2508323668881758, 'geometric_mean': 0.35695727672917066, 'kurtosis': -2.75}} + >>> reporter.remove('5680173c-0279-46ec-bd88-b318f8058ef4') + <Timer(Thread-1, started daemon 4555313152)> +Decorators +********** +The ``metrics`` module also provides a couple of decorators: ``with_histogram`` and ``with_meter`` which are +an easy and fast way to use ``AppMetrics``: just decorate your functions/methods and you will have metrics +collected for them. You can decorate multiple functions with the same metric's name, as long as the decorator's +type and parameters are the same, or a ``DuplicateMetricError`` will be raised. +See the documentation for `Histograms`_ and `Meters`_ for more details. + +%package -n python3-AppMetrics +Summary: Application metrics collector +Provides: python-AppMetrics +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-AppMetrics +Install ``AppMetrics`` into your python environment:: + pip install appmetrics +or, if you don't use ``pip``, download and unpack the package an then:: + python setup.py install +Once you have installed ``AppMetrics`` you can access it by the ``metrics`` module:: + >>> from appmetrics import metrics + >>> histogram = metrics.new_histogram("test") + >>> histogram.notify(1.0) + True + >>> histogram.notify(2.0) + True + >>> histogram.notify(3.0) + True + >>> histogram.get() + {'arithmetic_mean': 2.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 1.6363636363636365, 'min': 1.0, 'standard_deviation': 1.0, 'median': 2.0, 'histogram': [(3.0, 3), (5.0, 0)], 'percentile': [(50, 2.0), (75, 2.0), (90, 3.0), (95, 3.0), (99, 3.0), (99.9, 3.0)], 'n': 3, 'max': 3.0, 'variance': 1.0, 'geometric_mean': 1.8171205928321397, 'kurtosis': -2.3333333333333335} +Basically you create a new metric by using one of the ``metrics.new_*`` functions. The metric will be stored into +an internal registry, so you can access it in different places in your application:: + >>> test_histogram = metrics.metric("test") + >>> test_histogram.notify(4.0) + True +The ``metrics`` registry is thread-safe, you can safely use it in multi-threaded web servers. +Using the ``with_histogram`` decorator we can time a function:: + >>> import time, random + >>> @metrics.with_histogram("test") + >>> my_worker() + >>> my_worker() + >>> my_worker() +and let's see the results:: + >>> metrics.get("test") + {'arithmetic_mean': 0.41326093673706055, 'kind': 'histogram', 'skewness': 0.2739718270714368, 'harmonic_mean': 0.14326954591313346, 'min': 0.0613858699798584, 'standard_deviation': 0.4319169569113129, 'median': 0.2831099033355713, 'histogram': [(1.0613858699798584, 3), (2.0613858699798584, 0)], 'percentile': [(50, 0.2831099033355713), (75, 0.2831099033355713), (90, 0.895287036895752), (95, 0.895287036895752), (99, 0.895287036895752), (99.9, 0.895287036895752)], 'n': 3, 'max': 0.895287036895752, 'variance': 0.18655225766752892, 'geometric_mean': 0.24964828731906127, 'kurtosis': -2.3333333333333335} +It is also possible to time specific sections of the code by using the ``timer`` context manager:: + >>> import time, random +Let's print the metrics data on the screen every 5 seconds:: + >>> from appmetrics import reporter + >>> def stdout_report(metrics): + >>> reporter.register(stdout_report, reporter.fixed_interval_scheduler(5)) + '5680173c-0279-46ec-bd88-b318f8058ef4' + >>> {'test': {'arithmetic_mean': 0.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.0, 'min': 0, 'standard_deviation': 0.0, 'median': 0.0, 'histogram': [(0, 0)], 'percentile': [(50, 0.0), (75, 0.0), (90, 0.0), (95, 0.0), (99, 0.0), (99.9, 0.0)], 'n': 0, 'max': 0, 'variance': 0.0, 'geometric_mean': 0.0, 'kurtosis': 0.0}} + >>> my_worker() + >>> my_worker() + >>> {'test': {'arithmetic_mean': 0.5028266906738281, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.2534044030939462, 'min': 0.14868521690368652, 'standard_deviation': 0.50083167520453, 'median': 0.5028266906738281, 'histogram': [(1.1486852169036865, 2), (2.1486852169036865, 0)], 'percentile': [(50, 0.14868521690368652), (75, 0.8569681644439697), (90, 0.8569681644439697), (95, 0.8569681644439697), (99, 0.8569681644439697), (99.9, 0.8569681644439697)], 'n': 2, 'max': 0.8569681644439697, 'variance': 0.2508323668881758, 'geometric_mean': 0.35695727672917066, 'kurtosis': -2.75}} + >>> reporter.remove('5680173c-0279-46ec-bd88-b318f8058ef4') + <Timer(Thread-1, started daemon 4555313152)> +Decorators +********** +The ``metrics`` module also provides a couple of decorators: ``with_histogram`` and ``with_meter`` which are +an easy and fast way to use ``AppMetrics``: just decorate your functions/methods and you will have metrics +collected for them. You can decorate multiple functions with the same metric's name, as long as the decorator's +type and parameters are the same, or a ``DuplicateMetricError`` will be raised. +See the documentation for `Histograms`_ and `Meters`_ for more details. + +%package help +Summary: Development documents and examples for AppMetrics +Provides: python3-AppMetrics-doc +%description help +Install ``AppMetrics`` into your python environment:: + pip install appmetrics +or, if you don't use ``pip``, download and unpack the package an then:: + python setup.py install +Once you have installed ``AppMetrics`` you can access it by the ``metrics`` module:: + >>> from appmetrics import metrics + >>> histogram = metrics.new_histogram("test") + >>> histogram.notify(1.0) + True + >>> histogram.notify(2.0) + True + >>> histogram.notify(3.0) + True + >>> histogram.get() + {'arithmetic_mean': 2.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 1.6363636363636365, 'min': 1.0, 'standard_deviation': 1.0, 'median': 2.0, 'histogram': [(3.0, 3), (5.0, 0)], 'percentile': [(50, 2.0), (75, 2.0), (90, 3.0), (95, 3.0), (99, 3.0), (99.9, 3.0)], 'n': 3, 'max': 3.0, 'variance': 1.0, 'geometric_mean': 1.8171205928321397, 'kurtosis': -2.3333333333333335} +Basically you create a new metric by using one of the ``metrics.new_*`` functions. The metric will be stored into +an internal registry, so you can access it in different places in your application:: + >>> test_histogram = metrics.metric("test") + >>> test_histogram.notify(4.0) + True +The ``metrics`` registry is thread-safe, you can safely use it in multi-threaded web servers. +Using the ``with_histogram`` decorator we can time a function:: + >>> import time, random + >>> @metrics.with_histogram("test") + >>> my_worker() + >>> my_worker() + >>> my_worker() +and let's see the results:: + >>> metrics.get("test") + {'arithmetic_mean': 0.41326093673706055, 'kind': 'histogram', 'skewness': 0.2739718270714368, 'harmonic_mean': 0.14326954591313346, 'min': 0.0613858699798584, 'standard_deviation': 0.4319169569113129, 'median': 0.2831099033355713, 'histogram': [(1.0613858699798584, 3), (2.0613858699798584, 0)], 'percentile': [(50, 0.2831099033355713), (75, 0.2831099033355713), (90, 0.895287036895752), (95, 0.895287036895752), (99, 0.895287036895752), (99.9, 0.895287036895752)], 'n': 3, 'max': 0.895287036895752, 'variance': 0.18655225766752892, 'geometric_mean': 0.24964828731906127, 'kurtosis': -2.3333333333333335} +It is also possible to time specific sections of the code by using the ``timer`` context manager:: + >>> import time, random +Let's print the metrics data on the screen every 5 seconds:: + >>> from appmetrics import reporter + >>> def stdout_report(metrics): + >>> reporter.register(stdout_report, reporter.fixed_interval_scheduler(5)) + '5680173c-0279-46ec-bd88-b318f8058ef4' + >>> {'test': {'arithmetic_mean': 0.0, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.0, 'min': 0, 'standard_deviation': 0.0, 'median': 0.0, 'histogram': [(0, 0)], 'percentile': [(50, 0.0), (75, 0.0), (90, 0.0), (95, 0.0), (99, 0.0), (99.9, 0.0)], 'n': 0, 'max': 0, 'variance': 0.0, 'geometric_mean': 0.0, 'kurtosis': 0.0}} + >>> my_worker() + >>> my_worker() + >>> {'test': {'arithmetic_mean': 0.5028266906738281, 'kind': 'histogram', 'skewness': 0.0, 'harmonic_mean': 0.2534044030939462, 'min': 0.14868521690368652, 'standard_deviation': 0.50083167520453, 'median': 0.5028266906738281, 'histogram': [(1.1486852169036865, 2), (2.1486852169036865, 0)], 'percentile': [(50, 0.14868521690368652), (75, 0.8569681644439697), (90, 0.8569681644439697), (95, 0.8569681644439697), (99, 0.8569681644439697), (99.9, 0.8569681644439697)], 'n': 2, 'max': 0.8569681644439697, 'variance': 0.2508323668881758, 'geometric_mean': 0.35695727672917066, 'kurtosis': -2.75}} + >>> reporter.remove('5680173c-0279-46ec-bd88-b318f8058ef4') + <Timer(Thread-1, started daemon 4555313152)> +Decorators +********** +The ``metrics`` module also provides a couple of decorators: ``with_histogram`` and ``with_meter`` which are +an easy and fast way to use ``AppMetrics``: just decorate your functions/methods and you will have metrics +collected for them. You can decorate multiple functions with the same metric's name, as long as the decorator's +type and parameters are the same, or a ``DuplicateMetricError`` will be raised. +See the documentation for `Histograms`_ and `Meters`_ for more details. + +%prep +%autosetup -n AppMetrics-0.5.0 + +%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-AppMetrics -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.0-1 +- Package Spec generated @@ -0,0 +1 @@ +6fea728a7ea6068b18f613a3a152e3cd AppMetrics-0.5.0.tar.gz |
