summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 05:42:22 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 05:42:22 +0000
commit3cb5b22a3d689adad1da452a4ebdb6216bbde1bc (patch)
tree5e9e9cacab350b0db26f838bb3a54dfcfbd7d7de
parentab6c3e02d05d728cdda8e0552406a6b9bce2eaaf (diff)
automatic import of python-appmetricsopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-appmetrics.spec219
-rw-r--r--sources1
3 files changed, 221 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..c733ac2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..95f9eb3
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+6fea728a7ea6068b18f613a3a152e3cd AppMetrics-0.5.0.tar.gz