hdrhistogram


Namehdrhistogram JSON
Version 0.10.3 PyPI version JSON
download
home_pagehttps://github.com/HdrHistogram/HdrHistogram_py
SummaryHigh Dynamic Range histogram in native python
upload_time2023-08-11 04:00:36
maintainer
docs_urlNone
authorAlec Hothan
requires_python
license
keywords hdrhistogram hdr histogram high dynamic range
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ========
Overview
========

High Dynamic Range Histogram python implementation

.. image:: https://badges.gitter.im/Join Chat.svg
   :target: https://gitter.im/HdrHistogram/HdrHistogram

.. image:: https://travis-ci.org/HdrHistogram/HdrHistogram_py.svg?branch=master
   :target: https://travis-ci.org/HdrHistogram/HdrHistogram_py


This repository contains a port to python of most of the original Java HDR Histogram
library:

- Basic histogram value recording
    - record value
    - record value with correction for coordinated omission
- Supports 16-bit, 32-bit and 64-bit counters
- All histogram basic query APIs
    - get value at percentile
    - get total count
    - get min value, max value, mean, standard deviation
- All iterators are implemented: all values, recorded, percentile, linear, logarithmic
- Text file histogram log writer and log reader (.hlog file)
- Dump histogram in plot-friendly percentile table (.hgrm format)
- Encoding and decoding Hdr Histogram "histoblobs" (HdrHistogram V2 format only, V1 and V0 not supported)
- supports python 3.x (0.9.2 is the latest release supporting python 2.7)


Histogram V2 format encoding inter-operability with Java and C versions verified through unit test code.

Python API
----------
Users of this library can generally play one of 2 roles (sometimes both):

- record values into 1 or more histograms (histogram provisioning)
- analyze and display histogram content and characteristics (histogram query)

In distributed cases, histogram provisioning can be be done remotely (and possibly in multiple locations) then
aggregated in a central place for analysis.

A histogram instance can be created using the HdrHistogram class and specifying the
minimum and maximum trackable value and the number of precision digits desired.
For example to create a histogram that can count values in the [1..3600000] range and
1% precision (this could be for example to track latencies in the range [1 msec..1 hour]):

.. code::

     histogram = HdrHistogram(1, 60 * 60 * 1000, 2)

By default counters are 64-bit while 16 or 32-bit counters can be specified (word_size
option set to 2 or 4 bytes).
Note that counter overflow is not tested in this version so be careful when using
smaller counter sizes.

Once created it is easy to add values to a histogram:

.. code::

     histogram.record_value(latency)

If the code that generates the values is subject to Coordinated Omission,
use the corrected version of that method (example when the expected interval is
10 msec):

.. code::

     histogram.record_corrected_value(latency, 10)

At any time, the histogram can be queried to return any property, such as getting
the total number of values recorded or the value at a given percentile:

.. code::

     count = histogram.get_total_count()
     value = histogram.get_value_at_percentile(99.9)

Recorded values can be iterated over using the recorded iterator:

.. code::

    for item in histogram.get_recorded_iterator():
        print('value=%f count=%d percentile=%f' %
                item.value_iterated_to,
                item.count_added_in_this_iter_step,
                item.percentile)


A histoblob (base64 encoded/compressed histogram) is a convenient way to serialize and store a histogram instance
without losing precision (lossless). The resulting base 64 string can then be stored inside a standard
container such as a JSON document, XML, CSV...

The histoblob for a histogram instance can be generated by calling the compress method:

.. code::

     histoblob = histogram.encode()

A histoblob can be decoded into a histogram instance with the decode method:

.. code::

     decoded_histogram = HdrHistogram.decode(histoblob)
     count = decoded_histogram.get_total_count()

In the case of aggregation, the decode_and_add method can be used:

.. code::

     aggregation_histogram.decode_and_add(histoblob)

If you want to print the histogram in a plotter-friendly percentile tabular format (.hgrm):

.. code::

    histogram.output_percentile_distribution(file, scaling_ratio)
    
For additional help on how to use the API:

- browse through the python code and check the API documentation in the comment section for each method (where available)
- the best documentation is by looking at the test code under the test directory

The test code (https://github.com/HdrHistogram/HdrHistogram_py/blob/master/test/test_hdrhistogram.py) pretty much covers every API.

Installation
------------
Pre-requisites:

Make sure you have python 3.x, and pip installed

Binary installation
^^^^^^^^^^^^^^^^^^^
This is the preferred method for most installations where you only need to use this library.
Use a python virtual environment if needed.

.. code::

    pip install hdrhistogram


Note that this will require a C compiler to compile small C plugins (related to low level encoding/decoding).
Wheel binary packages are not available yet in PyPI (work in progress) but can be built using the python setuptools procedure from the
git source code (see below).


Source code installation Package build and Unit Testing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This is the method to use for any development work with this library or if you
want to read or run the test code.

Install the unit test automation harness tox and hdrhistogram from github:

.. code::

    pip install tox
    # cd to the proper location to clone the repository
    git clone https://github.com/HdrHistogram/HdrHistogram_py.git
    cd HdrHistogram_py

Running tox will execute the following targets:

- pep8/flake8 for syntax and indentation checking
- python unit test code
- pylint

Just run tox without any argument (the first run will take more time as tox will setup the execution environment and download the necessary packages):

.. code::

    $ tox
    GLOB sdist-make: /openstack/pyhdr/HdrHistogram_py/setup.py
    31 passed, 2 skipped in 5.14 seconds
    py3 inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip
    py3 runtests: PYTHONHASHSEED='4015036329'
    py3 runtests: commands[0] | py.test -q -s --basetemp=/openstack/pyhdr/HdrHistogram_py/.tox/py3/tmp
    s......................ss.........
    31 passed, 3 skipped in 5.11 seconds
    pep8 inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip
    pep8 runtests: PYTHONHASHSEED='4015036329'
    pep8 runtests: commands[0] | flake8 hdrh test
    lint inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip
    lint installed: astroid==1.5.3,backports.functools-lru-cache==1.4,configparser==3.5.0,enum34==1.1.6,flake8==3.3.0,hdrhistogram==0.5.2,isort==4.2.15,lazy-object-proxy==1.3.1,mccabe==0.6.1,pbr==3.1.1,py==1.4.34,pycodestyle==2.3.1,pyflakes==1.5.0,pylint==1.7.1,pytest==3.1.2,singledispatch==3.4.0.3,six==1.10.0,wrapt==1.10.10
    lint runtests: PYTHONHASHSEED='4015036329'
    lint runtests: commands[0] | pylint --rcfile pylint.rc hdrh test

    --------------------------------------------------------------------
    Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

    ________________________________________________________________ summary ________________________________________________________________
      py3: commands succeeded
      pep8: commands succeeded
      lint: commands succeeded
      congratulations :)

Display percentile table (.hgrm) from a histoblob  (dump_hdrh)
--------------------------------------------------------------

To print the .hgrm percentile table of any histoblob, use the dump_hdrh tool (installed along with the package).

.. code::

   $ dump_hdrh

   Usage: dump_hdrh [<string encoded hdr histogram>]*

You can pass one or more histoblobs to the tool:

.. code::

   $ dump_hdrh 'HISTFAAAACl4nJNpmSzMwMDAxQABzFCaEUzOmNZg/wEi0NzIyPSYlWmpGBMAh4gG4A=='

   Dumping histogram: HISTFAAAACl4nJNpmSzMwMDAxQABzFCaEUzOmNZg/wEi0NzIyPSYlWmpGBMAh4gG4A==

         Value     Percentile TotalCount 1/(1-Percentile)

   139647.000 0.000000000000          1           1.00
   139647.000 0.100000000000          1           1.11
   139647.000 0.190000000000          1           1.23
   139647.000 0.271000000000          1           1.37
   187135.000 0.343900000000          2           1.52
   187135.000 0.409510000000          2           1.69
   187135.000 0.468559000000          2           1.88
   187135.000 0.521703100000          2           2.09
   187135.000 0.569532790000          2           2.32
   187135.000 0.612579511000          2           2.58
   187135.000 0.651321559900          2           2.87
   477695.000 0.686189403910          3           3.19
   477695.000 1.000000000000          3
   #[Mean    =   268074.667, StdDeviation   =   149397.390]
   #[Max     =   477695.000, TotalCount     =        3.000]
   #[Buckets =           14, SubBuckets     =         2048]


Aggregation of Distributed Histograms
-------------------------------------

Aggregation of multiple histograms into 1 is useful in cases where tools
that generate these individual histograms have to run in a distributed way in
order to scale sufficiently.
As an example, the wrk2 tool (https://github.com/giltene/wrk2.git) is a great
tool for measuring the latency of HTTP requests with a large number of
connections. Although this tool can support thousands of connections per
process, some setups require massive scale in the order of hundreds of
thousands of connections which require running a large number of instances of
wrk processes, possibly on a large number of servers.
Given that each instance of wrk can generate a separate histogram, assessing
the scale of the entire system requires aggregating all these histograms
into 1 in a way that does not impact the accuracy of the results.
So there are 2 problems to solve:

- find a way to properly aggregate multiple histograms without losing any detail

- find a way to transport all these histograms into a central place

This library provides a solution for the aggregation part of the problem:

- reuse the HDR histogram compression format version 1 to encode and compress a complete histogram that can be sent over the wire to the aggregator

- provide python APIs to easily and efficiently:

  * compress an histogram instance into a transportable string
  * decompress a compressed histogram and add it to an existing histogram

Refer to the unit test code (test/test_hdrhistogram.py) to see how these APIs can be used.

Histogram wire encoding and size
--------------------------------
Histograms are encoded using the HdrHistogram V2 format which is based on an adapted ZigZag LEB128 encoding where:

- consecutive zero counters are encoded as a negative number representing the count of consecutive zeros
- non zero counter values are encoded as a positive number

An empty histogram (all zeros counters) is encoded in exactly 48 bytes regardless of the counter size.
A typical histogram (2 digits precision 1 usec to 1 day range) can be encoded in less than the typical MTU size of 1500 bytes.

This format is compatible with the HdrHistogram Java and C implementations.

Performance
-----------
Histogram value recording has the same cost characteristics than the original Java version
since it is a direct port (fixed cost for CPU and reduced memory usage).
Encoding and decoding in the python version is very fast and close to native performance thanks to the use of:

- integrated C extensions (native C code called from python) that have been developed to handle the low-level byte encoding/decoding/addition work at native speed
- native compression library (zlib and base64)

On a macbook pro (2019 Intel Core i7 @ 2.6GHz) and Linux server (Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz):

+---------------------------+-----------+--------+
| Operation Time in usec    |   Macbook |  Linux |
+===========================+===========+========+
| record a single value     |        1  |    1   |
+---------------------------+-----------+--------+
| encode typical histogram  |       75  |   68   |
+---------------------------+-----------+--------+
| decode and add            |      100  |  110   |
+---------------------------+-----------+--------+


The typical histogram is defined as one that has 30% of 64-bit buckets filled with
sequential values starting at 20% of the array, for a range of 1 usec to 24 hours
and 2 digits precision. This represents a total of 3968 buckets, of which
the first 793 are zeros, the next 1190 buckets have a sequential/unique value and all
remaining buckets are zeros, for an encoded length of 3116 bytes. Most real-world histograms
have a much sparser pattern that will yield a lower encoding and decoding time.
Decode and add will decode the encoded histogram and add its content to an existing histogram.

To measure the performance of encoding and decoding and get the profiling, you must clone the
github repository with git, install it (in a virtual environment if needed) and call pytest with the
--runperf option. The 2 profiling functions will provide the profiling information
for encoding and decoding the typical histogram 1000 times (so the time values shown
are seconds for 1000 decodes/decodes).

Example of run on Linux:

.. code::

   # pytest -s -k test_cod_perf --runperf
   =============================================================================== test session starts ================================================================================
   platform linux -- Python 3.6.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
   rootdir: /root/HdrHistogram_py, configfile: tox.ini
   collected 39 items / 38 deselected / 1 selected

   test_hdrhistogram.py 0:00:00.061559
            35305 function calls in 0.068 seconds

      Ordered by: standard name

      ncalls  tottime  percall  cumtime  percall filename:lineno(function)
         1    0.000    0.000    0.068    0.068 <string>:1(<module>)
      2000    0.002    0.000    0.002    0.000 __init__.py:483(string_at)
      1000    0.000    0.000    0.004    0.000 base64.py:51(b64encode)
         1    0.000    0.000    0.000    0.000 codec.py:119(__init__)
         1    0.000    0.000    0.000    0.000 codec.py:154(_init_counts)
         1    0.000    0.000    0.000    0.000 codec.py:172(get_counts)
      1000    0.004    0.000    0.050    0.000 codec.py:214(compress)
         1    0.000    0.000    0.000    0.000 codec.py:256(__init__)
         1    0.000    0.000    0.000    0.000 codec.py:285(get_counts)
      1000    0.002    0.000    0.061    0.000 codec.py:291(encode)
         1    0.000    0.000    0.000    0.000 codec.py:65(get_encoding_cookie)
         1    0.000    0.000    0.000    0.000 codec.py:69(get_compression_cookie)
      2190    0.001    0.000    0.001    0.000 histogram.py:142(_clz)
      2190    0.002    0.000    0.003    0.000 histogram.py:153(_get_bucket_index)
      2190    0.001    0.000    0.001    0.000 histogram.py:159(_get_sub_bucket_index)
      1190    0.000    0.000    0.000    0.000 histogram.py:162(_counts_index)
      1190    0.001    0.000    0.003    0.000 histogram.py:172(_counts_index_for)
      1190    0.001    0.000    0.005    0.000 histogram.py:177(record_value)
      1190    0.000    0.000    0.000    0.000 histogram.py:232(get_value_from_sub_bucket)
      1190    0.001    0.000    0.001    0.000 histogram.py:235(get_value_from_index)
         1    0.000    0.000    0.000    0.000 histogram.py:34(get_bucket_count)
      1000    0.000    0.000    0.061    0.000 histogram.py:419(encode)
      1000    0.001    0.000    0.003    0.000 histogram.py:462(get_counts_array_index)
         1    0.000    0.000    0.000    0.000 histogram.py:65(__init__)
         1    0.001    0.001    0.006    0.006 test_hdrhistogram.py:408(fill_hist_counts)
         1    0.000    0.000    0.068    0.068 test_hdrhistogram.py:526(check_cod_perf)
      5000    0.000    0.000    0.000    0.000 {built-in method _ctypes.addressof}
      1000    0.004    0.000    0.004    0.000 {built-in method binascii.b2a_base64}
      2190    0.000    0.000    0.000    0.000 {built-in method builtins.bin}
         1    0.000    0.000    0.068    0.068 {built-in method builtins.exec}
      3190    0.000    0.000    0.000    0.000 {built-in method builtins.len}
      1190    0.000    0.000    0.000    0.000 {built-in method builtins.max}
      1190    0.000    0.000    0.000    0.000 {built-in method builtins.min}
         1    0.000    0.000    0.000    0.000 {built-in method builtins.print}
         1    0.000    0.000    0.000    0.000 {built-in method math.ceil}
         1    0.000    0.000    0.000    0.000 {built-in method math.floor}
         4    0.000    0.000    0.000    0.000 {built-in method math.log}
         2    0.000    0.000    0.000    0.000 {built-in method math.pow}
         2    0.000    0.000    0.000    0.000 {built-in method now}
      1000    0.006    0.000    0.006    0.000 {built-in method pyhdrh.encode}
      1000    0.039    0.000    0.039    0.000 {built-in method zlib.compress}
         1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

And for decoding:

.. code::

   # pytest -s -k test_dec_perf --runperf
   =============================================================================== test session starts ================================================================================
   platform linux -- Python 3.6.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
   rootdir: /root/HdrHistogram_py, configfile: tox.ini
   collected 39 items / 38 deselected / 1 selected

   test_hdrhistogram.py 0:00:00.106705
            118327 function calls in 0.113 seconds

      Ordered by: standard name

      ncalls  tottime  percall  cumtime  percall filename:lineno(function)
         1    0.000    0.000    0.113    0.113 <string>:1(<module>)
         2    0.000    0.000    0.000    0.000 __init__.py:483(string_at)
      1000    0.001    0.000    0.001    0.000 base64.py:34(_bytes_from_decode_data)
         1    0.000    0.000    0.000    0.000 base64.py:51(b64encode)
      1000    0.001    0.000    0.010    0.000 base64.py:65(b64decode)
      1001    0.001    0.000    0.019    0.000 codec.py:119(__init__)
      1001    0.004    0.000    0.004    0.000 codec.py:154(_init_counts)
      1000    0.002    0.000    0.012    0.000 codec.py:157(init_counts)
      3001    0.000    0.000    0.000    0.000 codec.py:172(get_counts)
      1000    0.002    0.000    0.018    0.000 codec.py:175(_decompress)
         1    0.000    0.000    0.000    0.000 codec.py:214(compress)
      1001    0.002    0.000    0.002    0.000 codec.py:256(__init__)
      3001    0.001    0.000    0.001    0.000 codec.py:285(get_counts)
         1    0.000    0.000    0.000    0.000 codec.py:291(encode)
      1000    0.003    0.000    0.032    0.000 codec.py:313(decode)
      1000    0.001    0.000    0.011    0.000 codec.py:359(add)
      3000    0.001    0.000    0.001    0.000 codec.py:56(get_cookie_base)
      1000    0.000    0.000    0.001    0.000 codec.py:59(get_word_size_in_bytes_from_cookie)
         1    0.000    0.000    0.000    0.000 codec.py:65(get_encoding_cookie)
      1001    0.000    0.000    0.000    0.000 codec.py:69(get_compression_cookie)
         1    0.000    0.000    0.000    0.000 expression.py:81(lex)
      7191    0.003    0.000    0.005    0.000 histogram.py:142(_clz)
      7191    0.006    0.000    0.011    0.000 histogram.py:153(_get_bucket_index)
      7191    0.002    0.000    0.002    0.000 histogram.py:159(_get_sub_bucket_index)
      1190    0.000    0.000    0.000    0.000 histogram.py:162(_counts_index)
      1190    0.001    0.000    0.003    0.000 histogram.py:172(_counts_index_for)
      1190    0.001    0.000    0.005    0.000 histogram.py:177(record_value)
      10190   0.002    0.000    0.002    0.000 histogram.py:232(get_value_from_sub_bucket)
      4190    0.002    0.000    0.003    0.000 histogram.py:235(get_value_from_index)
      2000    0.002    0.000    0.005    0.000 histogram.py:244(get_lowest_equivalent_value)
      4000    0.004    0.000    0.013    0.000 histogram.py:252(get_highest_equivalent_value)
      1000    0.000    0.000    0.000    0.000 histogram.py:330(get_total_count)
      1001    0.007    0.000    0.007    0.000 histogram.py:34(get_bucket_count)
      2000    0.001    0.000    0.007    0.000 histogram.py:346(get_max_value)
      2000    0.001    0.000    0.007    0.000 histogram.py:351(get_min_value)
         1    0.000    0.000    0.000    0.000 histogram.py:419(encode)
      1000    0.001    0.000    0.006    0.000 histogram.py:445(set_internal_tacking_values)
         1    0.000    0.000    0.000    0.000 histogram.py:462(get_counts_array_index)
      1000    0.005    0.000    0.035    0.000 histogram.py:513(add)
      1000    0.001    0.000    0.106    0.000 histogram.py:544(decode_and_add)
      1000    0.002    0.000    0.071    0.000 histogram.py:563(decode)
      1001    0.008    0.000    0.037    0.000 histogram.py:65(__init__)
         1    0.001    0.001    0.006    0.006 test_hdrhistogram.py:408(fill_hist_counts)
         1    0.000    0.000    0.113    0.113 test_hdrhistogram.py:539(check_dec_perf)
      3005    0.000    0.000    0.000    0.000 {built-in method _ctypes.addressof}
      1000    0.008    0.000    0.008    0.000 {built-in method binascii.a2b_base64}
         1    0.000    0.000    0.000    0.000 {built-in method binascii.b2a_base64}
      7191    0.001    0.000    0.001    0.000 {built-in method builtins.bin}
         1    0.000    0.000    0.113    0.113 {built-in method builtins.exec}
      2000    0.000    0.000    0.000    0.000 {built-in method builtins.isinstance}
      9192    0.001    0.000    0.001    0.000 {built-in method builtins.len}
      3190    0.001    0.000    0.001    0.000 {built-in method builtins.max}
      3190    0.001    0.000    0.001    0.000 {built-in method builtins.min}
         1    0.000    0.000    0.000    0.000 {built-in method builtins.print}
      1001    0.000    0.000    0.000    0.000 {built-in method math.ceil}
      1001    0.000    0.000    0.000    0.000 {built-in method math.floor}
      4004    0.001    0.000    0.001    0.000 {built-in method math.log}
      2002    0.000    0.000    0.000    0.000 {built-in method math.pow}
         2    0.000    0.000    0.000    0.000 {built-in method now}
      1000    0.008    0.000    0.008    0.000 {built-in method pyhdrh.add_array}
      1000    0.007    0.000    0.007    0.000 {built-in method pyhdrh.decode}
         1    0.000    0.000    0.000    0.000 {built-in method pyhdrh.encode}
         1    0.000    0.000    0.000    0.000 {built-in method zlib.compress}
      1000    0.014    0.000    0.014    0.000 {built-in method zlib.decompress}
         1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
      2000    0.001    0.000    0.001    0.000 {method 'from_buffer_copy' of '_ctypes.PyCStructType' objects}


      
Limitations, Caveats and Known Issues
-------------------------------------

The latest features and bug fixes of the original HDR histogram library may not be available in this python port.
Examples of notable features/APIs not implemented:

- concurrency support (AtomicHistogram, ConcurrentHistogram...)
- DoubleHistogram
- histogram auto-resize
- recorder function

This implementation has byte endianess encoding issues when used with PyPy
due to a limitation of the PyPy code
(see https://github.com/HdrHistogram/HdrHistogram_py/issues/13).

The current implementation has issues running on Windows 32-bit systems (library crashing during decode).

Dependencies
------------
The only dependency (outside of using pytest and tox for the unit testing) is the
small pbr python package which takes care of the versioning (among other things).

Publishing a New Release to PyPI
--------------------------------

To create a new release, apply a new release tag then create a new Release using github (this requires right permission). 
The github CI will build the distributions and push to PyPI.


Licensing
---------

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contribution
------------
External contribution, forks and GitHub pull requests are welcome.
For any discussion, head to the gitter HdrHistogram space at 
https://gitter.im/HdrHistogram/HdrHistogram


Acknowledgements
----------------

The python code was directly ported from the original HDR Histogram Java and C libraries:

* https://github.com/HdrHistogram/HdrHistogram.git
* https://github.com/HdrHistogram/HdrHistogram_c.git


Links
-----

* Source: https://github.com/HdrHistogram/HdrHistogram_py.git


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/HdrHistogram/HdrHistogram_py",
    "name": "hdrhistogram",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "hdrhistogram hdr histogram high dynamic range",
    "author": "Alec Hothan",
    "author_email": "ahothan@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c2/79/674aad5279dd1a77b85efa1cbf8dcead209dc5f38f55cbbfd75bc20cc65b/hdrhistogram-0.10.3.tar.gz",
    "platform": null,
    "description": "========\nOverview\n========\n\nHigh Dynamic Range Histogram python implementation\n\n.. image:: https://badges.gitter.im/Join Chat.svg\n   :target: https://gitter.im/HdrHistogram/HdrHistogram\n\n.. image:: https://travis-ci.org/HdrHistogram/HdrHistogram_py.svg?branch=master\n   :target: https://travis-ci.org/HdrHistogram/HdrHistogram_py\n\n\nThis repository contains a port to python of most of the original Java HDR Histogram\nlibrary:\n\n- Basic histogram value recording\n    - record value\n    - record value with correction for coordinated omission\n- Supports 16-bit, 32-bit and 64-bit counters\n- All histogram basic query APIs\n    - get value at percentile\n    - get total count\n    - get min value, max value, mean, standard deviation\n- All iterators are implemented: all values, recorded, percentile, linear, logarithmic\n- Text file histogram log writer and log reader (.hlog file)\n- Dump histogram in plot-friendly percentile table (.hgrm format)\n- Encoding and decoding Hdr Histogram \"histoblobs\" (HdrHistogram V2 format only, V1 and V0 not supported)\n- supports python 3.x (0.9.2 is the latest release supporting python 2.7)\n\n\nHistogram V2 format encoding inter-operability with Java and C versions verified through unit test code.\n\nPython API\n----------\nUsers of this library can generally play one of 2 roles (sometimes both):\n\n- record values into 1 or more histograms (histogram provisioning)\n- analyze and display histogram content and characteristics (histogram query)\n\nIn distributed cases, histogram provisioning can be be done remotely (and possibly in multiple locations) then\naggregated in a central place for analysis.\n\nA histogram instance can be created using the HdrHistogram class and specifying the\nminimum and maximum trackable value and the number of precision digits desired.\nFor example to create a histogram that can count values in the [1..3600000] range and\n1% precision (this could be for example to track latencies in the range [1 msec..1 hour]):\n\n.. code::\n\n     histogram = HdrHistogram(1, 60 * 60 * 1000, 2)\n\nBy default counters are 64-bit while 16 or 32-bit counters can be specified (word_size\noption set to 2 or 4 bytes).\nNote that counter overflow is not tested in this version so be careful when using\nsmaller counter sizes.\n\nOnce created it is easy to add values to a histogram:\n\n.. code::\n\n     histogram.record_value(latency)\n\nIf the code that generates the values is subject to Coordinated Omission,\nuse the corrected version of that method (example when the expected interval is\n10 msec):\n\n.. code::\n\n     histogram.record_corrected_value(latency, 10)\n\nAt any time, the histogram can be queried to return any property, such as getting\nthe total number of values recorded or the value at a given percentile:\n\n.. code::\n\n     count = histogram.get_total_count()\n     value = histogram.get_value_at_percentile(99.9)\n\nRecorded values can be iterated over using the recorded iterator:\n\n.. code::\n\n    for item in histogram.get_recorded_iterator():\n        print('value=%f count=%d percentile=%f' %\n                item.value_iterated_to,\n                item.count_added_in_this_iter_step,\n                item.percentile)\n\n\nA histoblob (base64 encoded/compressed histogram) is a convenient way to serialize and store a histogram instance\nwithout losing precision (lossless). The resulting base 64 string can then be stored inside a standard\ncontainer such as a JSON document, XML, CSV...\n\nThe histoblob for a histogram instance can be generated by calling the compress method:\n\n.. code::\n\n     histoblob = histogram.encode()\n\nA histoblob can be decoded into a histogram instance with the decode method:\n\n.. code::\n\n     decoded_histogram = HdrHistogram.decode(histoblob)\n     count = decoded_histogram.get_total_count()\n\nIn the case of aggregation, the decode_and_add method can be used:\n\n.. code::\n\n     aggregation_histogram.decode_and_add(histoblob)\n\nIf you want to print the histogram in a plotter-friendly percentile tabular format (.hgrm):\n\n.. code::\n\n    histogram.output_percentile_distribution(file, scaling_ratio)\n    \nFor additional help on how to use the API:\n\n- browse through the python code and check the API documentation in the comment section for each method (where available)\n- the best documentation is by looking at the test code under the test directory\n\nThe test code (https://github.com/HdrHistogram/HdrHistogram_py/blob/master/test/test_hdrhistogram.py) pretty much covers every API.\n\nInstallation\n------------\nPre-requisites:\n\nMake sure you have python 3.x, and pip installed\n\nBinary installation\n^^^^^^^^^^^^^^^^^^^\nThis is the preferred method for most installations where you only need to use this library.\nUse a python virtual environment if needed.\n\n.. code::\n\n    pip install hdrhistogram\n\n\nNote that this will require a C compiler to compile small C plugins (related to low level encoding/decoding).\nWheel binary packages are not available yet in PyPI (work in progress) but can be built using the python setuptools procedure from the\ngit source code (see below).\n\n\nSource code installation Package build and Unit Testing\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis is the method to use for any development work with this library or if you\nwant to read or run the test code.\n\nInstall the unit test automation harness tox and hdrhistogram from github:\n\n.. code::\n\n    pip install tox\n    # cd to the proper location to clone the repository\n    git clone https://github.com/HdrHistogram/HdrHistogram_py.git\n    cd HdrHistogram_py\n\nRunning tox will execute the following targets:\n\n- pep8/flake8 for syntax and indentation checking\n- python unit test code\n- pylint\n\nJust run tox without any argument (the first run will take more time as tox will setup the execution environment and download the necessary packages):\n\n.. code::\n\n    $ tox\n    GLOB sdist-make: /openstack/pyhdr/HdrHistogram_py/setup.py\n    31 passed, 2 skipped in 5.14 seconds\n    py3 inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip\n    py3 runtests: PYTHONHASHSEED='4015036329'\n    py3 runtests: commands[0] | py.test -q -s --basetemp=/openstack/pyhdr/HdrHistogram_py/.tox/py3/tmp\n    s......................ss.........\n    31 passed, 3 skipped in 5.11 seconds\n    pep8 inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip\n    pep8 runtests: PYTHONHASHSEED='4015036329'\n    pep8 runtests: commands[0] | flake8 hdrh test\n    lint inst-nodeps: /openstack/pyhdr/HdrHistogram_py/.tox/dist/hdrhistogram-0.5.2.zip\n    lint installed: astroid==1.5.3,backports.functools-lru-cache==1.4,configparser==3.5.0,enum34==1.1.6,flake8==3.3.0,hdrhistogram==0.5.2,isort==4.2.15,lazy-object-proxy==1.3.1,mccabe==0.6.1,pbr==3.1.1,py==1.4.34,pycodestyle==2.3.1,pyflakes==1.5.0,pylint==1.7.1,pytest==3.1.2,singledispatch==3.4.0.3,six==1.10.0,wrapt==1.10.10\n    lint runtests: PYTHONHASHSEED='4015036329'\n    lint runtests: commands[0] | pylint --rcfile pylint.rc hdrh test\n\n    --------------------------------------------------------------------\n    Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)\n\n    ________________________________________________________________ summary ________________________________________________________________\n      py3: commands succeeded\n      pep8: commands succeeded\n      lint: commands succeeded\n      congratulations :)\n\nDisplay percentile table (.hgrm) from a histoblob  (dump_hdrh)\n--------------------------------------------------------------\n\nTo print the .hgrm percentile table of any histoblob, use the dump_hdrh tool (installed along with the package).\n\n.. code::\n\n   $ dump_hdrh\n\n   Usage: dump_hdrh [<string encoded hdr histogram>]*\n\nYou can pass one or more histoblobs to the tool:\n\n.. code::\n\n   $ dump_hdrh 'HISTFAAAACl4nJNpmSzMwMDAxQABzFCaEUzOmNZg/wEi0NzIyPSYlWmpGBMAh4gG4A=='\n\n   Dumping histogram: HISTFAAAACl4nJNpmSzMwMDAxQABzFCaEUzOmNZg/wEi0NzIyPSYlWmpGBMAh4gG4A==\n\n         Value     Percentile TotalCount 1/(1-Percentile)\n\n   139647.000 0.000000000000          1           1.00\n   139647.000 0.100000000000          1           1.11\n   139647.000 0.190000000000          1           1.23\n   139647.000 0.271000000000          1           1.37\n   187135.000 0.343900000000          2           1.52\n   187135.000 0.409510000000          2           1.69\n   187135.000 0.468559000000          2           1.88\n   187135.000 0.521703100000          2           2.09\n   187135.000 0.569532790000          2           2.32\n   187135.000 0.612579511000          2           2.58\n   187135.000 0.651321559900          2           2.87\n   477695.000 0.686189403910          3           3.19\n   477695.000 1.000000000000          3\n   #[Mean    =   268074.667, StdDeviation   =   149397.390]\n   #[Max     =   477695.000, TotalCount     =        3.000]\n   #[Buckets =           14, SubBuckets     =         2048]\n\n\nAggregation of Distributed Histograms\n-------------------------------------\n\nAggregation of multiple histograms into 1 is useful in cases where tools\nthat generate these individual histograms have to run in a distributed way in\norder to scale sufficiently.\nAs an example, the wrk2 tool (https://github.com/giltene/wrk2.git) is a great\ntool for measuring the latency of HTTP requests with a large number of\nconnections. Although this tool can support thousands of connections per\nprocess, some setups require massive scale in the order of hundreds of\nthousands of connections which require running a large number of instances of\nwrk processes, possibly on a large number of servers.\nGiven that each instance of wrk can generate a separate histogram, assessing\nthe scale of the entire system requires aggregating all these histograms\ninto 1 in a way that does not impact the accuracy of the results.\nSo there are 2 problems to solve:\n\n- find a way to properly aggregate multiple histograms without losing any detail\n\n- find a way to transport all these histograms into a central place\n\nThis library provides a solution for the aggregation part of the problem:\n\n- reuse the HDR histogram compression format version 1 to encode and compress a complete histogram that can be sent over the wire to the aggregator\n\n- provide python APIs to easily and efficiently:\n\n  * compress an histogram instance into a transportable string\n  * decompress a compressed histogram and add it to an existing histogram\n\nRefer to the unit test code (test/test_hdrhistogram.py) to see how these APIs can be used.\n\nHistogram wire encoding and size\n--------------------------------\nHistograms are encoded using the HdrHistogram V2 format which is based on an adapted ZigZag LEB128 encoding where:\n\n- consecutive zero counters are encoded as a negative number representing the count of consecutive zeros\n- non zero counter values are encoded as a positive number\n\nAn empty histogram (all zeros counters) is encoded in exactly 48 bytes regardless of the counter size.\nA typical histogram (2 digits precision 1 usec to 1 day range) can be encoded in less than the typical MTU size of 1500 bytes.\n\nThis format is compatible with the HdrHistogram Java and C implementations.\n\nPerformance\n-----------\nHistogram value recording has the same cost characteristics than the original Java version\nsince it is a direct port (fixed cost for CPU and reduced memory usage).\nEncoding and decoding in the python version is very fast and close to native performance thanks to the use of:\n\n- integrated C extensions (native C code called from python) that have been developed to handle the low-level byte encoding/decoding/addition work at native speed\n- native compression library (zlib and base64)\n\nOn a macbook pro (2019 Intel Core i7 @ 2.6GHz) and Linux server (Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz):\n\n+---------------------------+-----------+--------+\n| Operation Time in usec    |   Macbook |  Linux |\n+===========================+===========+========+\n| record a single value     |        1  |    1   |\n+---------------------------+-----------+--------+\n| encode typical histogram  |       75  |   68   |\n+---------------------------+-----------+--------+\n| decode and add            |      100  |  110   |\n+---------------------------+-----------+--------+\n\n\nThe typical histogram is defined as one that has 30% of 64-bit buckets filled with\nsequential values starting at 20% of the array, for a range of 1 usec to 24 hours\nand 2 digits precision. This represents a total of 3968 buckets, of which\nthe first 793 are zeros, the next 1190 buckets have a sequential/unique value and all\nremaining buckets are zeros, for an encoded length of 3116 bytes. Most real-world histograms\nhave a much sparser pattern that will yield a lower encoding and decoding time.\nDecode and add will decode the encoded histogram and add its content to an existing histogram.\n\nTo measure the performance of encoding and decoding and get the profiling, you must clone the\ngithub repository with git, install it (in a virtual environment if needed) and call pytest with the\n--runperf option. The 2 profiling functions will provide the profiling information\nfor encoding and decoding the typical histogram 1000 times (so the time values shown\nare seconds for 1000 decodes/decodes).\n\nExample of run on Linux:\n\n.. code::\n\n   # pytest -s -k test_cod_perf --runperf\n   =============================================================================== test session starts ================================================================================\n   platform linux -- Python 3.6.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1\n   rootdir: /root/HdrHistogram_py, configfile: tox.ini\n   collected 39 items / 38 deselected / 1 selected\n\n   test_hdrhistogram.py 0:00:00.061559\n            35305 function calls in 0.068 seconds\n\n      Ordered by: standard name\n\n      ncalls  tottime  percall  cumtime  percall filename:lineno(function)\n         1    0.000    0.000    0.068    0.068 <string>:1(<module>)\n      2000    0.002    0.000    0.002    0.000 __init__.py:483(string_at)\n      1000    0.000    0.000    0.004    0.000 base64.py:51(b64encode)\n         1    0.000    0.000    0.000    0.000 codec.py:119(__init__)\n         1    0.000    0.000    0.000    0.000 codec.py:154(_init_counts)\n         1    0.000    0.000    0.000    0.000 codec.py:172(get_counts)\n      1000    0.004    0.000    0.050    0.000 codec.py:214(compress)\n         1    0.000    0.000    0.000    0.000 codec.py:256(__init__)\n         1    0.000    0.000    0.000    0.000 codec.py:285(get_counts)\n      1000    0.002    0.000    0.061    0.000 codec.py:291(encode)\n         1    0.000    0.000    0.000    0.000 codec.py:65(get_encoding_cookie)\n         1    0.000    0.000    0.000    0.000 codec.py:69(get_compression_cookie)\n      2190    0.001    0.000    0.001    0.000 histogram.py:142(_clz)\n      2190    0.002    0.000    0.003    0.000 histogram.py:153(_get_bucket_index)\n      2190    0.001    0.000    0.001    0.000 histogram.py:159(_get_sub_bucket_index)\n      1190    0.000    0.000    0.000    0.000 histogram.py:162(_counts_index)\n      1190    0.001    0.000    0.003    0.000 histogram.py:172(_counts_index_for)\n      1190    0.001    0.000    0.005    0.000 histogram.py:177(record_value)\n      1190    0.000    0.000    0.000    0.000 histogram.py:232(get_value_from_sub_bucket)\n      1190    0.001    0.000    0.001    0.000 histogram.py:235(get_value_from_index)\n         1    0.000    0.000    0.000    0.000 histogram.py:34(get_bucket_count)\n      1000    0.000    0.000    0.061    0.000 histogram.py:419(encode)\n      1000    0.001    0.000    0.003    0.000 histogram.py:462(get_counts_array_index)\n         1    0.000    0.000    0.000    0.000 histogram.py:65(__init__)\n         1    0.001    0.001    0.006    0.006 test_hdrhistogram.py:408(fill_hist_counts)\n         1    0.000    0.000    0.068    0.068 test_hdrhistogram.py:526(check_cod_perf)\n      5000    0.000    0.000    0.000    0.000 {built-in method _ctypes.addressof}\n      1000    0.004    0.000    0.004    0.000 {built-in method binascii.b2a_base64}\n      2190    0.000    0.000    0.000    0.000 {built-in method builtins.bin}\n         1    0.000    0.000    0.068    0.068 {built-in method builtins.exec}\n      3190    0.000    0.000    0.000    0.000 {built-in method builtins.len}\n      1190    0.000    0.000    0.000    0.000 {built-in method builtins.max}\n      1190    0.000    0.000    0.000    0.000 {built-in method builtins.min}\n         1    0.000    0.000    0.000    0.000 {built-in method builtins.print}\n         1    0.000    0.000    0.000    0.000 {built-in method math.ceil}\n         1    0.000    0.000    0.000    0.000 {built-in method math.floor}\n         4    0.000    0.000    0.000    0.000 {built-in method math.log}\n         2    0.000    0.000    0.000    0.000 {built-in method math.pow}\n         2    0.000    0.000    0.000    0.000 {built-in method now}\n      1000    0.006    0.000    0.006    0.000 {built-in method pyhdrh.encode}\n      1000    0.039    0.000    0.039    0.000 {built-in method zlib.compress}\n         1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}\n\nAnd for decoding:\n\n.. code::\n\n   # pytest -s -k test_dec_perf --runperf\n   =============================================================================== test session starts ================================================================================\n   platform linux -- Python 3.6.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1\n   rootdir: /root/HdrHistogram_py, configfile: tox.ini\n   collected 39 items / 38 deselected / 1 selected\n\n   test_hdrhistogram.py 0:00:00.106705\n            118327 function calls in 0.113 seconds\n\n      Ordered by: standard name\n\n      ncalls  tottime  percall  cumtime  percall filename:lineno(function)\n         1    0.000    0.000    0.113    0.113 <string>:1(<module>)\n         2    0.000    0.000    0.000    0.000 __init__.py:483(string_at)\n      1000    0.001    0.000    0.001    0.000 base64.py:34(_bytes_from_decode_data)\n         1    0.000    0.000    0.000    0.000 base64.py:51(b64encode)\n      1000    0.001    0.000    0.010    0.000 base64.py:65(b64decode)\n      1001    0.001    0.000    0.019    0.000 codec.py:119(__init__)\n      1001    0.004    0.000    0.004    0.000 codec.py:154(_init_counts)\n      1000    0.002    0.000    0.012    0.000 codec.py:157(init_counts)\n      3001    0.000    0.000    0.000    0.000 codec.py:172(get_counts)\n      1000    0.002    0.000    0.018    0.000 codec.py:175(_decompress)\n         1    0.000    0.000    0.000    0.000 codec.py:214(compress)\n      1001    0.002    0.000    0.002    0.000 codec.py:256(__init__)\n      3001    0.001    0.000    0.001    0.000 codec.py:285(get_counts)\n         1    0.000    0.000    0.000    0.000 codec.py:291(encode)\n      1000    0.003    0.000    0.032    0.000 codec.py:313(decode)\n      1000    0.001    0.000    0.011    0.000 codec.py:359(add)\n      3000    0.001    0.000    0.001    0.000 codec.py:56(get_cookie_base)\n      1000    0.000    0.000    0.001    0.000 codec.py:59(get_word_size_in_bytes_from_cookie)\n         1    0.000    0.000    0.000    0.000 codec.py:65(get_encoding_cookie)\n      1001    0.000    0.000    0.000    0.000 codec.py:69(get_compression_cookie)\n         1    0.000    0.000    0.000    0.000 expression.py:81(lex)\n      7191    0.003    0.000    0.005    0.000 histogram.py:142(_clz)\n      7191    0.006    0.000    0.011    0.000 histogram.py:153(_get_bucket_index)\n      7191    0.002    0.000    0.002    0.000 histogram.py:159(_get_sub_bucket_index)\n      1190    0.000    0.000    0.000    0.000 histogram.py:162(_counts_index)\n      1190    0.001    0.000    0.003    0.000 histogram.py:172(_counts_index_for)\n      1190    0.001    0.000    0.005    0.000 histogram.py:177(record_value)\n      10190   0.002    0.000    0.002    0.000 histogram.py:232(get_value_from_sub_bucket)\n      4190    0.002    0.000    0.003    0.000 histogram.py:235(get_value_from_index)\n      2000    0.002    0.000    0.005    0.000 histogram.py:244(get_lowest_equivalent_value)\n      4000    0.004    0.000    0.013    0.000 histogram.py:252(get_highest_equivalent_value)\n      1000    0.000    0.000    0.000    0.000 histogram.py:330(get_total_count)\n      1001    0.007    0.000    0.007    0.000 histogram.py:34(get_bucket_count)\n      2000    0.001    0.000    0.007    0.000 histogram.py:346(get_max_value)\n      2000    0.001    0.000    0.007    0.000 histogram.py:351(get_min_value)\n         1    0.000    0.000    0.000    0.000 histogram.py:419(encode)\n      1000    0.001    0.000    0.006    0.000 histogram.py:445(set_internal_tacking_values)\n         1    0.000    0.000    0.000    0.000 histogram.py:462(get_counts_array_index)\n      1000    0.005    0.000    0.035    0.000 histogram.py:513(add)\n      1000    0.001    0.000    0.106    0.000 histogram.py:544(decode_and_add)\n      1000    0.002    0.000    0.071    0.000 histogram.py:563(decode)\n      1001    0.008    0.000    0.037    0.000 histogram.py:65(__init__)\n         1    0.001    0.001    0.006    0.006 test_hdrhistogram.py:408(fill_hist_counts)\n         1    0.000    0.000    0.113    0.113 test_hdrhistogram.py:539(check_dec_perf)\n      3005    0.000    0.000    0.000    0.000 {built-in method _ctypes.addressof}\n      1000    0.008    0.000    0.008    0.000 {built-in method binascii.a2b_base64}\n         1    0.000    0.000    0.000    0.000 {built-in method binascii.b2a_base64}\n      7191    0.001    0.000    0.001    0.000 {built-in method builtins.bin}\n         1    0.000    0.000    0.113    0.113 {built-in method builtins.exec}\n      2000    0.000    0.000    0.000    0.000 {built-in method builtins.isinstance}\n      9192    0.001    0.000    0.001    0.000 {built-in method builtins.len}\n      3190    0.001    0.000    0.001    0.000 {built-in method builtins.max}\n      3190    0.001    0.000    0.001    0.000 {built-in method builtins.min}\n         1    0.000    0.000    0.000    0.000 {built-in method builtins.print}\n      1001    0.000    0.000    0.000    0.000 {built-in method math.ceil}\n      1001    0.000    0.000    0.000    0.000 {built-in method math.floor}\n      4004    0.001    0.000    0.001    0.000 {built-in method math.log}\n      2002    0.000    0.000    0.000    0.000 {built-in method math.pow}\n         2    0.000    0.000    0.000    0.000 {built-in method now}\n      1000    0.008    0.000    0.008    0.000 {built-in method pyhdrh.add_array}\n      1000    0.007    0.000    0.007    0.000 {built-in method pyhdrh.decode}\n         1    0.000    0.000    0.000    0.000 {built-in method pyhdrh.encode}\n         1    0.000    0.000    0.000    0.000 {built-in method zlib.compress}\n      1000    0.014    0.000    0.014    0.000 {built-in method zlib.decompress}\n         1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}\n      2000    0.001    0.000    0.001    0.000 {method 'from_buffer_copy' of '_ctypes.PyCStructType' objects}\n\n\n      \nLimitations, Caveats and Known Issues\n-------------------------------------\n\nThe latest features and bug fixes of the original HDR histogram library may not be available in this python port.\nExamples of notable features/APIs not implemented:\n\n- concurrency support (AtomicHistogram, ConcurrentHistogram...)\n- DoubleHistogram\n- histogram auto-resize\n- recorder function\n\nThis implementation has byte endianess encoding issues when used with PyPy\ndue to a limitation of the PyPy code\n(see https://github.com/HdrHistogram/HdrHistogram_py/issues/13).\n\nThe current implementation has issues running on Windows 32-bit systems (library crashing during decode).\n\nDependencies\n------------\nThe only dependency (outside of using pytest and tox for the unit testing) is the\nsmall pbr python package which takes care of the versioning (among other things).\n\nPublishing a New Release to PyPI\n--------------------------------\n\nTo create a new release, apply a new release tag then create a new Release using github (this requires right permission). \nThe github CI will build the distributions and push to PyPI.\n\n\nLicensing\n---------\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nContribution\n------------\nExternal contribution, forks and GitHub pull requests are welcome.\nFor any discussion, head to the gitter HdrHistogram space at \nhttps://gitter.im/HdrHistogram/HdrHistogram\n\n\nAcknowledgements\n----------------\n\nThe python code was directly ported from the original HDR Histogram Java and C libraries:\n\n* https://github.com/HdrHistogram/HdrHistogram.git\n* https://github.com/HdrHistogram/HdrHistogram_c.git\n\n\nLinks\n-----\n\n* Source: https://github.com/HdrHistogram/HdrHistogram_py.git\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "High Dynamic Range histogram in native python",
    "version": "0.10.3",
    "project_urls": {
        "Homepage": "https://github.com/HdrHistogram/HdrHistogram_py"
    },
    "split_keywords": [
        "hdrhistogram",
        "hdr",
        "histogram",
        "high",
        "dynamic",
        "range"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce5635dc91e2280df0896aed090f65223d6423378995f127f5b75e72548c9ae8",
                "md5": "6553675be0d19c616af8e240c6de61b7",
                "sha256": "5ca99b4ea5c4a94fff9ed9e76fe308273376f630c461379671fcbdd2c9934b0b"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6553675be0d19c616af8e240c6de61b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 36663,
            "upload_time": "2023-08-11T03:59:10",
            "upload_time_iso_8601": "2023-08-11T03:59:10.344765Z",
            "url": "https://files.pythonhosted.org/packages/ce/56/35dc91e2280df0896aed090f65223d6423378995f127f5b75e72548c9ae8/hdrhistogram-0.10.3-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0fb04d6cbf8d6329eb95eb29360588957862581bd0637e1e9aa62e7cb830e4af",
                "md5": "7060c799c5a4be9a567048352cddbca3",
                "sha256": "a52d892b093e7906c91d577dafe75c2d8864a8e113e98d6f88848f9ce40a952f"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "7060c799c5a4be9a567048352cddbca3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 48572,
            "upload_time": "2023-08-11T03:59:12",
            "upload_time_iso_8601": "2023-08-11T03:59:12.090833Z",
            "url": "https://files.pythonhosted.org/packages/0f/b0/4d6cbf8d6329eb95eb29360588957862581bd0637e1e9aa62e7cb830e4af/hdrhistogram-0.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dfabeea37d70ab77c8b966be7243fd1b97c44c4b1fc44e7045fbea078df86087",
                "md5": "3fde9fd8a8d4575bb8551e9f56772e50",
                "sha256": "7b12d915dab421f269a50e3831510f11fece8268c4a4543b5a2dca21fcdfb6aa"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3fde9fd8a8d4575bb8551e9f56772e50",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 47844,
            "upload_time": "2023-08-11T03:59:13",
            "upload_time_iso_8601": "2023-08-11T03:59:13.709308Z",
            "url": "https://files.pythonhosted.org/packages/df/ab/eea37d70ab77c8b966be7243fd1b97c44c4b1fc44e7045fbea078df86087/hdrhistogram-0.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d157db938fefb817848c33b0ec89821973fcf5c12593ea793e4a8fc9fdd8b512",
                "md5": "76121d11c383c935e3b6ded3956c1181",
                "sha256": "b58256f9f8a47aee37b1fec6a3f069212b6174162f7cd814e1dcd3afbef389b2"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "76121d11c383c935e3b6ded3956c1181",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 52976,
            "upload_time": "2023-08-11T03:59:15",
            "upload_time_iso_8601": "2023-08-11T03:59:15.282269Z",
            "url": "https://files.pythonhosted.org/packages/d1/57/db938fefb817848c33b0ec89821973fcf5c12593ea793e4a8fc9fdd8b512/hdrhistogram-0.10.3-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "83fef1993d6348b19ea196ec44460c09368f0a073d5ea74af9d95753b533bbcd",
                "md5": "c2ee74ae025c6e4a7d7b200f1c6162ec",
                "sha256": "38f1b5c45e71e2a3b982fb1b25c17ad9eaed2f0b014ea6637373630b18644945"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c2ee74ae025c6e4a7d7b200f1c6162ec",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 52006,
            "upload_time": "2023-08-11T03:59:16",
            "upload_time_iso_8601": "2023-08-11T03:59:16.334499Z",
            "url": "https://files.pythonhosted.org/packages/83/fe/f1993d6348b19ea196ec44460c09368f0a073d5ea74af9d95753b533bbcd/hdrhistogram-0.10.3-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb75c10f54832caef244dff1bb12b30b535707ab8ef90962e202375eb499b2fa",
                "md5": "6b481efda785274306ceb3e8870db692",
                "sha256": "19c5fff0cdf22a12fe68d3e09f928c0fc7873adb235f98a214222fb7b2249a3e"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "6b481efda785274306ceb3e8870db692",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 39609,
            "upload_time": "2023-08-11T03:59:17",
            "upload_time_iso_8601": "2023-08-11T03:59:17.697554Z",
            "url": "https://files.pythonhosted.org/packages/fb/75/c10f54832caef244dff1bb12b30b535707ab8ef90962e202375eb499b2fa/hdrhistogram-0.10.3-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "33a08b92bcf409e4904c6e9b7fe4be5649688250087a5a9642f8a74b0992e274",
                "md5": "dd54e678dd640d3a33c8e2a4abf50b44",
                "sha256": "bbe025f00445c842440c5c1cf3b7665a1a37e7d954142bcbf0838a7bb307b9ef"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "dd54e678dd640d3a33c8e2a4abf50b44",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 40075,
            "upload_time": "2023-08-11T03:59:19",
            "upload_time_iso_8601": "2023-08-11T03:59:19.217533Z",
            "url": "https://files.pythonhosted.org/packages/33/a0/8b92bcf409e4904c6e9b7fe4be5649688250087a5a9642f8a74b0992e274/hdrhistogram-0.10.3-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5458bdd5df067445478013f7a21b378181b206cc0aaf31024366ac813e0d9a96",
                "md5": "d0eec4cd2b84b151023ad7d4a49163f4",
                "sha256": "d5748a22ec68a5390f9d493aca933a6871788e34df91da4cc0a6ee19e336dc6d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d0eec4cd2b84b151023ad7d4a49163f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 36664,
            "upload_time": "2023-08-11T03:59:20",
            "upload_time_iso_8601": "2023-08-11T03:59:20.743939Z",
            "url": "https://files.pythonhosted.org/packages/54/58/bdd5df067445478013f7a21b378181b206cc0aaf31024366ac813e0d9a96/hdrhistogram-0.10.3-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a8ba37b9144c0372b1f48b9310a8e4fc77a4d4f8949190b0e56ebc2dd17c9e54",
                "md5": "eb3b5d06eeba371e64b5a537c5f1deaf",
                "sha256": "f6d7e402365ced65309c3ffb060b6bcf7d1265bfba293509076f18b5d9ec260d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "eb3b5d06eeba371e64b5a537c5f1deaf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 48573,
            "upload_time": "2023-08-11T03:59:22",
            "upload_time_iso_8601": "2023-08-11T03:59:22.259493Z",
            "url": "https://files.pythonhosted.org/packages/a8/ba/37b9144c0372b1f48b9310a8e4fc77a4d4f8949190b0e56ebc2dd17c9e54/hdrhistogram-0.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a9228f1f52f3fa3291d7c1693d9266d31753be5f27b907c97ce4db495de169fa",
                "md5": "9b9466335916cb71f3f2315806899f1a",
                "sha256": "3f55fcbd39953b8989344cfb56cfa06094dbffc3fd4df1ff05d4b15658e1bf6d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b9466335916cb71f3f2315806899f1a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 47855,
            "upload_time": "2023-08-11T03:59:23",
            "upload_time_iso_8601": "2023-08-11T03:59:23.328350Z",
            "url": "https://files.pythonhosted.org/packages/a9/22/8f1f52f3fa3291d7c1693d9266d31753be5f27b907c97ce4db495de169fa/hdrhistogram-0.10.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "931420cb3a638284a5903492eecb5b5d1303aa1ec9606b9e2296ca1753df1f0c",
                "md5": "d3596b39b0c8f3a41e613b6ae079e5b2",
                "sha256": "d814811d52e699426a8b54f2448ab5e49fee3519a200cd887fd3faaaa6f4a35d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "d3596b39b0c8f3a41e613b6ae079e5b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 53807,
            "upload_time": "2023-08-11T03:59:24",
            "upload_time_iso_8601": "2023-08-11T03:59:24.441130Z",
            "url": "https://files.pythonhosted.org/packages/93/14/20cb3a638284a5903492eecb5b5d1303aa1ec9606b9e2296ca1753df1f0c/hdrhistogram-0.10.3-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d699a26df64d5069984e38305a6d6462534722f09c7f7578e5303903192f7a6a",
                "md5": "8f0d24f2d8f41d0a81f4b5476cfc0a50",
                "sha256": "bfd6ad77c1f7806aaeb6b340866a6bb38a1f0fe94d8f5a5f74372c33a094913f"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8f0d24f2d8f41d0a81f4b5476cfc0a50",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 52854,
            "upload_time": "2023-08-11T03:59:26",
            "upload_time_iso_8601": "2023-08-11T03:59:26.420019Z",
            "url": "https://files.pythonhosted.org/packages/d6/99/a26df64d5069984e38305a6d6462534722f09c7f7578e5303903192f7a6a/hdrhistogram-0.10.3-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "46d97e9b72f217014fe9863b84b326af6d8ef4e559493f93ca10d81e53cbf2e2",
                "md5": "dfb4b9b6e14e4a8fca998d254dda590a",
                "sha256": "28950b3ffaa97e859f76a08932a6c2a5baeca2a140804e0fd03b3b1d622a6c92"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "dfb4b9b6e14e4a8fca998d254dda590a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 39609,
            "upload_time": "2023-08-11T03:59:27",
            "upload_time_iso_8601": "2023-08-11T03:59:27.985406Z",
            "url": "https://files.pythonhosted.org/packages/46/d9/7e9b72f217014fe9863b84b326af6d8ef4e559493f93ca10d81e53cbf2e2/hdrhistogram-0.10.3-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d15472918ace22fbb247eae9cd61648c1a4142539e216764327721deb281d0de",
                "md5": "04d0336b39b4d3f95302d88424b4c1cf",
                "sha256": "e07dc9d667c71b061cc56a721f0005d8d77cf1a7f383902657703ac3ecd026f6"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "04d0336b39b4d3f95302d88424b4c1cf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 40076,
            "upload_time": "2023-08-11T03:59:29",
            "upload_time_iso_8601": "2023-08-11T03:59:29.547285Z",
            "url": "https://files.pythonhosted.org/packages/d1/54/72918ace22fbb247eae9cd61648c1a4142539e216764327721deb281d0de/hdrhistogram-0.10.3-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "05604d12ce18d95c815553751ace3936bccc54d67f47c7a2ebcd94c7fc89ca7f",
                "md5": "0c5e383ddc70cd566bca42392593fd69",
                "sha256": "088d3ef64c2004fc3cd4b21c4292efe4648367a1ce98c554bf7c5730a0ba018e"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c5e383ddc70cd566bca42392593fd69",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 36661,
            "upload_time": "2023-08-11T03:59:31",
            "upload_time_iso_8601": "2023-08-11T03:59:31.173235Z",
            "url": "https://files.pythonhosted.org/packages/05/60/4d12ce18d95c815553751ace3936bccc54d67f47c7a2ebcd94c7fc89ca7f/hdrhistogram-0.10.3-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d02010edd9915fcad1bd87c062c5c049a536d9783ebadd4e7f606414bdb74ce5",
                "md5": "ae81db0d7a8fe0b025b5260dac5f347a",
                "sha256": "bda8ae7ab424e6f2221ae9daed20610becb5d59cae2d448a05077b00e864c9e7"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "ae81db0d7a8fe0b025b5260dac5f347a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 48686,
            "upload_time": "2023-08-11T03:59:32",
            "upload_time_iso_8601": "2023-08-11T03:59:32.294566Z",
            "url": "https://files.pythonhosted.org/packages/d0/20/10edd9915fcad1bd87c062c5c049a536d9783ebadd4e7f606414bdb74ce5/hdrhistogram-0.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b18aca7b687c70409aec9a524e3ce7c044274f5108fd9c33cc93635237279b70",
                "md5": "0f3ace88e45af2cc93c8de8cde9d6b0e",
                "sha256": "f2ba2550e8a392a543e727a4875f76f7131d1dd04ebe7c03d3cbe44b83fc130b"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0f3ace88e45af2cc93c8de8cde9d6b0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 47987,
            "upload_time": "2023-08-11T03:59:33",
            "upload_time_iso_8601": "2023-08-11T03:59:33.840097Z",
            "url": "https://files.pythonhosted.org/packages/b1/8a/ca7b687c70409aec9a524e3ce7c044274f5108fd9c33cc93635237279b70/hdrhistogram-0.10.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "54f51367cb6ef66d3d8c5e5091d8738d47a1f42414605b1638dd6785d23b9f99",
                "md5": "ed604bcfa5b5ec4360da162fb5bda610",
                "sha256": "57d61fd8378212d3d24149a331f770278766db541373d20a12f9399788ffde82"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "ed604bcfa5b5ec4360da162fb5bda610",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 53500,
            "upload_time": "2023-08-11T03:59:35",
            "upload_time_iso_8601": "2023-08-11T03:59:35.132955Z",
            "url": "https://files.pythonhosted.org/packages/54/f5/1367cb6ef66d3d8c5e5091d8738d47a1f42414605b1638dd6785d23b9f99/hdrhistogram-0.10.3-cp312-cp312-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a49dc3ba5788f3feed8b2198a8a5461706f174912bb59595af616595a7cefd98",
                "md5": "ace46261d550e3bfaf7f92d37b856088",
                "sha256": "ad6d3ca8bcec581b8cf936608f79f6dd619e2690d1135c1978d80b01318e19e3"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ace46261d550e3bfaf7f92d37b856088",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 52533,
            "upload_time": "2023-08-11T03:59:37",
            "upload_time_iso_8601": "2023-08-11T03:59:37.027694Z",
            "url": "https://files.pythonhosted.org/packages/a4/9d/c3ba5788f3feed8b2198a8a5461706f174912bb59595af616595a7cefd98/hdrhistogram-0.10.3-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bdeca41ade1c98bb4626f0ec95a5c56394b6e84b37e004338bd5b9cc24c61e29",
                "md5": "d7da0205a40eb944f5a9e45c9d12de71",
                "sha256": "90bf599703cd146b430fd4c111fb1290da902746ddea9c591c1cfb8313d37974"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "d7da0205a40eb944f5a9e45c9d12de71",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 39607,
            "upload_time": "2023-08-11T03:59:38",
            "upload_time_iso_8601": "2023-08-11T03:59:38.166721Z",
            "url": "https://files.pythonhosted.org/packages/bd/ec/a41ade1c98bb4626f0ec95a5c56394b6e84b37e004338bd5b9cc24c61e29/hdrhistogram-0.10.3-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b705f0e073f6ddabd71270135be8d1f5e7243e7c030f7468ef832d21c59eac54",
                "md5": "b81eb07d5ff280ed76c0b0cc42e96405",
                "sha256": "92f0a43d0918ee6c48c78097c6e51eced260d0ae459c00a8a3690fbd9a06dc78"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b81eb07d5ff280ed76c0b0cc42e96405",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 40070,
            "upload_time": "2023-08-11T03:59:39",
            "upload_time_iso_8601": "2023-08-11T03:59:39.167522Z",
            "url": "https://files.pythonhosted.org/packages/b7/05/f0e073f6ddabd71270135be8d1f5e7243e7c030f7468ef832d21c59eac54/hdrhistogram-0.10.3-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73ff61625b9097e093662a53c945f7eba33b72bb0b399f742953d9c5fb4b1793",
                "md5": "58de372a3cb8d1164b0bbc85e076063b",
                "sha256": "eb9a45365b4a52f16b1e53a3f431ee9ef65a978b5a62ede2be6e2654f43f338b"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "58de372a3cb8d1164b0bbc85e076063b",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 36666,
            "upload_time": "2023-08-11T03:59:40",
            "upload_time_iso_8601": "2023-08-11T03:59:40.572195Z",
            "url": "https://files.pythonhosted.org/packages/73/ff/61625b9097e093662a53c945f7eba33b72bb0b399f742953d9c5fb4b1793/hdrhistogram-0.10.3-cp36-cp36m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf6e9c529560d92abbb4b4a55d337f566ccc9d63554f19f3a01d4f244f2ee16b",
                "md5": "8d8999b40adc11095004ac6e914cc3b6",
                "sha256": "93eb769a67b27017926208a63914126cef684284a51a8c30126e83bf4cbc273c"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "8d8999b40adc11095004ac6e914cc3b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 48994,
            "upload_time": "2023-08-11T03:59:41",
            "upload_time_iso_8601": "2023-08-11T03:59:41.594154Z",
            "url": "https://files.pythonhosted.org/packages/bf/6e/9c529560d92abbb4b4a55d337f566ccc9d63554f19f3a01d4f244f2ee16b/hdrhistogram-0.10.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61b541c708faec570692ed40d7dbb2f6192841bc074373dd07d853c18b573f9a",
                "md5": "e29217d5027a049ee61043683053614e",
                "sha256": "058bcdd518d16d3ccb15d67e5f3dd6a3c9ab79970f474ecd5fa60d4dfa482e53"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e29217d5027a049ee61043683053614e",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 48254,
            "upload_time": "2023-08-11T03:59:42",
            "upload_time_iso_8601": "2023-08-11T03:59:42.594169Z",
            "url": "https://files.pythonhosted.org/packages/61/b5/41c708faec570692ed40d7dbb2f6192841bc074373dd07d853c18b573f9a/hdrhistogram-0.10.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b16b2f37147985c96b08461dab633231c11ade6708dcba825ff78e353cd8879a",
                "md5": "c757c751327f2c95ca10923b37d3b33d",
                "sha256": "f8d9d56aedd87aa2347188f5a3b24aaafeee154a92b1741e97a18f2135a18f5a"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "c757c751327f2c95ca10923b37d3b33d",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 53145,
            "upload_time": "2023-08-11T03:59:44",
            "upload_time_iso_8601": "2023-08-11T03:59:44.129377Z",
            "url": "https://files.pythonhosted.org/packages/b1/6b/2f37147985c96b08461dab633231c11ade6708dcba825ff78e353cd8879a/hdrhistogram-0.10.3-cp36-cp36m-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6da4a344ab2955dd558f534bbb146f4a6efd3cdd948bcd4e5345d0a63abdd5f0",
                "md5": "4b4afdb15d0f79b31f88d881bbc7fe32",
                "sha256": "da0b21803a80fbc395823b873825d188a587fb831ac32733f5bb1d1a67fca134"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4b4afdb15d0f79b31f88d881bbc7fe32",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 52163,
            "upload_time": "2023-08-11T03:59:45",
            "upload_time_iso_8601": "2023-08-11T03:59:45.207020Z",
            "url": "https://files.pythonhosted.org/packages/6d/a4/a344ab2955dd558f534bbb146f4a6efd3cdd948bcd4e5345d0a63abdd5f0/hdrhistogram-0.10.3-cp36-cp36m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0bce1ca436fb0ee6777f4677a68cc43e3d24e043dc163a12e0fb143cb00e96fd",
                "md5": "20fb9231864b33cf945359ebeba392e7",
                "sha256": "1f0ebec7b1aa970b4580623444711fa76f7c9f3ed2b702807a1dcbb513d8f50f"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-win32.whl",
            "has_sig": false,
            "md5_digest": "20fb9231864b33cf945359ebeba392e7",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 39647,
            "upload_time": "2023-08-11T03:59:46",
            "upload_time_iso_8601": "2023-08-11T03:59:46.556413Z",
            "url": "https://files.pythonhosted.org/packages/0b/ce/1ca436fb0ee6777f4677a68cc43e3d24e043dc163a12e0fb143cb00e96fd/hdrhistogram-0.10.3-cp36-cp36m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8349acf941b1a6d0800881e758a98558e1c1c974e1f242fba944bb604a0b3a0d",
                "md5": "3c0253708c38ef548ce3d99a041f98cb",
                "sha256": "1c93c0a00e824e298671f8942e2ffe8cd9a7083800594bebab2110ea948eb640"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3c0253708c38ef548ce3d99a041f98cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 40122,
            "upload_time": "2023-08-11T03:59:47",
            "upload_time_iso_8601": "2023-08-11T03:59:47.535663Z",
            "url": "https://files.pythonhosted.org/packages/83/49/acf941b1a6d0800881e758a98558e1c1c974e1f242fba944bb604a0b3a0d/hdrhistogram-0.10.3-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e40497143a096fe25ca4237ae14472de180104b7a1bd4c84b63f42b906c4bcc",
                "md5": "dc33c9538dab1eff6294a2a8ade7345e",
                "sha256": "c6714255d09e8618c5f335ea91fd945e4fcd7f165ac3e71a01354d0225e2cd8d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dc33c9538dab1eff6294a2a8ade7345e",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 36663,
            "upload_time": "2023-08-11T03:59:49",
            "upload_time_iso_8601": "2023-08-11T03:59:49.025539Z",
            "url": "https://files.pythonhosted.org/packages/5e/40/497143a096fe25ca4237ae14472de180104b7a1bd4c84b63f42b906c4bcc/hdrhistogram-0.10.3-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f3b27fa995a336abb1d1ef81bf64bc6ec488edc0da00310d7d0f7cee20c70ed",
                "md5": "15aa9f9f2d5eabfdf2635ba0c679a2ce",
                "sha256": "eedbb4940596404097057382a110160a0a861e926c11d22db2479ab1fdcacd26"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "15aa9f9f2d5eabfdf2635ba0c679a2ce",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 48988,
            "upload_time": "2023-08-11T03:59:50",
            "upload_time_iso_8601": "2023-08-11T03:59:50.136310Z",
            "url": "https://files.pythonhosted.org/packages/4f/3b/27fa995a336abb1d1ef81bf64bc6ec488edc0da00310d7d0f7cee20c70ed/hdrhistogram-0.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d0b8eb58bf9364380c7f36bf4f4a9c311926643206afb78fd091f880a6192aff",
                "md5": "ed3185a19d58930f7912bb322dd4b695",
                "sha256": "3f451c9d883abfdf73058b0863d43e4ee577504bd27bd46d257e354a3f21f22c"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ed3185a19d58930f7912bb322dd4b695",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 48266,
            "upload_time": "2023-08-11T03:59:51",
            "upload_time_iso_8601": "2023-08-11T03:59:51.691916Z",
            "url": "https://files.pythonhosted.org/packages/d0/b8/eb58bf9364380c7f36bf4f4a9c311926643206afb78fd091f880a6192aff/hdrhistogram-0.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d3126798ea464f92eef1cb7c999d0d11b3b74d25d58572dc51497b0220d7e03",
                "md5": "e188bd90d54dbd3d5dd8146c0d5b0d24",
                "sha256": "3ae3e69a5570812d76ddf647c75a61a321e351819768d8bdd36538ae912eafc1"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "e188bd90d54dbd3d5dd8146c0d5b0d24",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 54086,
            "upload_time": "2023-08-11T03:59:52",
            "upload_time_iso_8601": "2023-08-11T03:59:52.762421Z",
            "url": "https://files.pythonhosted.org/packages/4d/31/26798ea464f92eef1cb7c999d0d11b3b74d25d58572dc51497b0220d7e03/hdrhistogram-0.10.3-cp37-cp37m-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3956221f014898b577a051841b7882ac1bcdfc4aaf1e15441048c9568b5ffbdd",
                "md5": "419bf7b528c6feeec6167f73f1fe50cf",
                "sha256": "63739f63aa5e8fb57df66f020e438d52baa80af42809672a8cb5d655f489afc8"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "419bf7b528c6feeec6167f73f1fe50cf",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 53135,
            "upload_time": "2023-08-11T03:59:54",
            "upload_time_iso_8601": "2023-08-11T03:59:54.026630Z",
            "url": "https://files.pythonhosted.org/packages/39/56/221f014898b577a051841b7882ac1bcdfc4aaf1e15441048c9568b5ffbdd/hdrhistogram-0.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "592e8f1a7c69bed869417f193c2aaae6cb41d4dd79fb52f8e4c59fb66c7ded12",
                "md5": "c3500196f0b0ac41925f7c99c7db8cae",
                "sha256": "be1cc268d6cfcd7193d87310deb2b4bbf56f58dc5a84382c73c02f4058c0a743"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-win32.whl",
            "has_sig": false,
            "md5_digest": "c3500196f0b0ac41925f7c99c7db8cae",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 39607,
            "upload_time": "2023-08-11T03:59:55",
            "upload_time_iso_8601": "2023-08-11T03:59:55.253438Z",
            "url": "https://files.pythonhosted.org/packages/59/2e/8f1a7c69bed869417f193c2aaae6cb41d4dd79fb52f8e4c59fb66c7ded12/hdrhistogram-0.10.3-cp37-cp37m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cadb670c18eff5629bb6892280abcac2b8e3199b3fdefb71d024b685417befed",
                "md5": "e8f226ced17378c2fc51618b7e508641",
                "sha256": "24f6a42d31ece8beaf75d53480be6c6a0ce27e98440f3de1605229b360ef30b9"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e8f226ced17378c2fc51618b7e508641",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 40070,
            "upload_time": "2023-08-11T03:59:56",
            "upload_time_iso_8601": "2023-08-11T03:59:56.356367Z",
            "url": "https://files.pythonhosted.org/packages/ca/db/670c18eff5629bb6892280abcac2b8e3199b3fdefb71d024b685417befed/hdrhistogram-0.10.3-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c81d25e9d08f907e63789bed94129f027e2b4ef91bb59c42d16be98630dc66a",
                "md5": "b7f0dc04af4d87cb86965f78a237c4d1",
                "sha256": "e358a2112f9b687f8665dd0eab45eb61e2c21e607e6a13ba3831b019931720b3"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b7f0dc04af4d87cb86965f78a237c4d1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 36661,
            "upload_time": "2023-08-11T03:59:57",
            "upload_time_iso_8601": "2023-08-11T03:59:57.431644Z",
            "url": "https://files.pythonhosted.org/packages/7c/81/d25e9d08f907e63789bed94129f027e2b4ef91bb59c42d16be98630dc66a/hdrhistogram-0.10.3-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f6de86e5864805e7a48efb5e13391292d5b802643072ae1d7a8f292d970ebc4",
                "md5": "6c6769289b0aadf4df6b1cef46e00b2a",
                "sha256": "bdb7700f0f409056cf8147d80862fef7a1c6a2a6a410c31370ce6470600e239f"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "6c6769289b0aadf4df6b1cef46e00b2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 49003,
            "upload_time": "2023-08-11T03:59:58",
            "upload_time_iso_8601": "2023-08-11T03:59:58.542493Z",
            "url": "https://files.pythonhosted.org/packages/4f/6d/e86e5864805e7a48efb5e13391292d5b802643072ae1d7a8f292d970ebc4/hdrhistogram-0.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d8d92786ad03304aa3bb8999266040b4f7de4315ce4e91e0127d64f73767849c",
                "md5": "25bb9db6d605dd33afa26957ea8c5f7c",
                "sha256": "80be7a23c410e1a3c5f81ddfee4eec57788b8de8e0175e9043181dd839937c3e"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "25bb9db6d605dd33afa26957ea8c5f7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 48259,
            "upload_time": "2023-08-11T03:59:59",
            "upload_time_iso_8601": "2023-08-11T03:59:59.608398Z",
            "url": "https://files.pythonhosted.org/packages/d8/d9/2786ad03304aa3bb8999266040b4f7de4315ce4e91e0127d64f73767849c/hdrhistogram-0.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ea0fb4c57a5622e53e9f71053f869bfe5813cfa1a7368d09673aff35238b91c",
                "md5": "503ed59738c62a07788b4631d1ef590e",
                "sha256": "ee8db21d1b3a5bb561afb49ed5eded873629a1a77542eb06237af13f7d3dae97"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "503ed59738c62a07788b4631d1ef590e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 52998,
            "upload_time": "2023-08-11T04:00:00",
            "upload_time_iso_8601": "2023-08-11T04:00:00.723470Z",
            "url": "https://files.pythonhosted.org/packages/3e/a0/fb4c57a5622e53e9f71053f869bfe5813cfa1a7368d09673aff35238b91c/hdrhistogram-0.10.3-cp38-cp38-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d35f37c68db34a2492091add31e38919517eb65ca1b7f99c2a8cd5f901283da7",
                "md5": "d33c3284ea869dfa8f2f650881225a8a",
                "sha256": "ba7b1008820e6a705fec9169db99ff45b8e903fe1d15ae8f11d98cb25a327673"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d33c3284ea869dfa8f2f650881225a8a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 52040,
            "upload_time": "2023-08-11T04:00:02",
            "upload_time_iso_8601": "2023-08-11T04:00:02.324370Z",
            "url": "https://files.pythonhosted.org/packages/d3/5f/37c68db34a2492091add31e38919517eb65ca1b7f99c2a8cd5f901283da7/hdrhistogram-0.10.3-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e285e9b23b88a0ddb958b290844a38076f020d61a41f60286e959b6d117cc7f",
                "md5": "cda15d2f8f01b70bbaa671a1a7ddf970",
                "sha256": "20699699638297097104e02c55b1d83c02d123dda98ee25af41d56d6131b4daa"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "cda15d2f8f01b70bbaa671a1a7ddf970",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 39604,
            "upload_time": "2023-08-11T04:00:04",
            "upload_time_iso_8601": "2023-08-11T04:00:04.109559Z",
            "url": "https://files.pythonhosted.org/packages/6e/28/5e9b23b88a0ddb958b290844a38076f020d61a41f60286e959b6d117cc7f/hdrhistogram-0.10.3-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be0adc1dabd2819213e362a20b5794c18629c20b2682a61800142bdd27fdd5c9",
                "md5": "3fcc3f19c587baaf9378db13e35daa9d",
                "sha256": "56083c578657427693e4ea25770925a79e9c961198776f8205d9155d2096a710"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3fcc3f19c587baaf9378db13e35daa9d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 40065,
            "upload_time": "2023-08-11T04:00:05",
            "upload_time_iso_8601": "2023-08-11T04:00:05.628713Z",
            "url": "https://files.pythonhosted.org/packages/be/0a/dc1dabd2819213e362a20b5794c18629c20b2682a61800142bdd27fdd5c9/hdrhistogram-0.10.3-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca8a88930e2aa33638a906dbe630c937fe3103156a8b03dfcedf40fedce632be",
                "md5": "60c0de807d34e7852b8809d3ad12a6c0",
                "sha256": "35960a123b9eb175c52f009da4295624b3e195ecc8ea5e8e49fdb58016d4b4ce"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "60c0de807d34e7852b8809d3ad12a6c0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 36659,
            "upload_time": "2023-08-11T04:00:06",
            "upload_time_iso_8601": "2023-08-11T04:00:06.882464Z",
            "url": "https://files.pythonhosted.org/packages/ca/8a/88930e2aa33638a906dbe630c937fe3103156a8b03dfcedf40fedce632be/hdrhistogram-0.10.3-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85724f214c60c968ef2e2802b50062a22eb89eef9fcc3e38cb362c69440c7d55",
                "md5": "b86a9a5c5cde6bdb67ee9660be860ca5",
                "sha256": "a9bd5b71e013408068c3ed6151a81d2e9792edff37b3b66d0c30dd7f287a99d2"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "b86a9a5c5cde6bdb67ee9660be860ca5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 48419,
            "upload_time": "2023-08-11T04:00:08",
            "upload_time_iso_8601": "2023-08-11T04:00:08.614589Z",
            "url": "https://files.pythonhosted.org/packages/85/72/4f214c60c968ef2e2802b50062a22eb89eef9fcc3e38cb362c69440c7d55/hdrhistogram-0.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98171cde11872d27dfe014b115bb5076a711cc040bef2b2e457da968bee988f1",
                "md5": "d02244a2d47ed7fe156612a24a0cddc0",
                "sha256": "93c77a6366a3fea2dc6fc5a8f13c8d2ccbcc4fb34c2f033a2ed574fc5ca07ad5"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d02244a2d47ed7fe156612a24a0cddc0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 47687,
            "upload_time": "2023-08-11T04:00:10",
            "upload_time_iso_8601": "2023-08-11T04:00:10.330878Z",
            "url": "https://files.pythonhosted.org/packages/98/17/1cde11872d27dfe014b115bb5076a711cc040bef2b2e457da968bee988f1/hdrhistogram-0.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "81bc15cab8d6eef9558cbe2daf86b3e0cd34d85ced094e9d89a93a474205248e",
                "md5": "748dbc8fd4dfabaffe777226602d83a8",
                "sha256": "9e0765858fbd12ea25d1fd9081ff4524b25aa47fd6652d3413343e8a0e930ade"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "748dbc8fd4dfabaffe777226602d83a8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 52790,
            "upload_time": "2023-08-11T04:00:12",
            "upload_time_iso_8601": "2023-08-11T04:00:12.024730Z",
            "url": "https://files.pythonhosted.org/packages/81/bc/15cab8d6eef9558cbe2daf86b3e0cd34d85ced094e9d89a93a474205248e/hdrhistogram-0.10.3-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "118de57afa4ded8185b48b1fa29165e3ca6ef46c29b181afc5c3617c4353c2ef",
                "md5": "322914e483fdfea3a1cc8429f90a7f2f",
                "sha256": "51f90e682236532c96705e8b05ca9136911c1aa0a460e908738d7b618077cace"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "322914e483fdfea3a1cc8429f90a7f2f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 51797,
            "upload_time": "2023-08-11T04:00:13",
            "upload_time_iso_8601": "2023-08-11T04:00:13.174360Z",
            "url": "https://files.pythonhosted.org/packages/11/8d/e57afa4ded8185b48b1fa29165e3ca6ef46c29b181afc5c3617c4353c2ef/hdrhistogram-0.10.3-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f9298730e6b89ccc56ff7d55446e0acb3efd82e0ce30bed17b22fe28f8eee3f",
                "md5": "f95dab9796abc1fc4be6b9da6f118aad",
                "sha256": "0f0ecd6a4efcd4b86d460ac21e1a51702135e1378dac168b92521d780e725b90"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "f95dab9796abc1fc4be6b9da6f118aad",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 39604,
            "upload_time": "2023-08-11T04:00:14",
            "upload_time_iso_8601": "2023-08-11T04:00:14.293532Z",
            "url": "https://files.pythonhosted.org/packages/9f/92/98730e6b89ccc56ff7d55446e0acb3efd82e0ce30bed17b22fe28f8eee3f/hdrhistogram-0.10.3-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "05bc4d5672214517b30c6f9274605030d998f10f638bc5204a91e45f73818f67",
                "md5": "0d2dc5a177328b0db5bcaeb5aedef605",
                "sha256": "c5adccd90121badb70d1cf4f0f3618b21b86c240c30d8428228187af30e148ed"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0d2dc5a177328b0db5bcaeb5aedef605",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 40067,
            "upload_time": "2023-08-11T04:00:15",
            "upload_time_iso_8601": "2023-08-11T04:00:15.385225Z",
            "url": "https://files.pythonhosted.org/packages/05/bc/4d5672214517b30c6f9274605030d998f10f638bc5204a91e45f73818f67/hdrhistogram-0.10.3-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5104e51d89251dd2d760dc388a3f3af01367299225abaf8281c7f65fa456fe2a",
                "md5": "b9a2a48f5518879a9e29fdfd1894059d",
                "sha256": "75c725e3d424456114f5661d248d8d36dcd9378ca4ae9df6dd536fc8c7f974a5"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b9a2a48f5518879a9e29fdfd1894059d",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 36438,
            "upload_time": "2023-08-11T04:00:16",
            "upload_time_iso_8601": "2023-08-11T04:00:16.470486Z",
            "url": "https://files.pythonhosted.org/packages/51/04/e51d89251dd2d760dc388a3f3af01367299225abaf8281c7f65fa456fe2a/hdrhistogram-0.10.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "507ead7b067dd0ee2b970d413af65fd656ca9ae8c3f60ffc14e7286d1aa11afb",
                "md5": "97648e3df418b50041cde2f4d5fcbadf",
                "sha256": "749676fb15caecfd717fa5a2e9026f27c43ed17a127ed32ae15a2f4f4c5619ee"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "97648e3df418b50041cde2f4d5fcbadf",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 38866,
            "upload_time": "2023-08-11T04:00:17",
            "upload_time_iso_8601": "2023-08-11T04:00:17.494784Z",
            "url": "https://files.pythonhosted.org/packages/50/7e/ad7b067dd0ee2b970d413af65fd656ca9ae8c3f60ffc14e7286d1aa11afb/hdrhistogram-0.10.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c6b5492364b1d227669efda002fe8e6a4214a4f0619be5f87a863354372967d2",
                "md5": "79a7194097c348e85f3774e8f59edb2e",
                "sha256": "55771195cd438bdc39d4061a27daafb2c2b36d9842f9f54bf3bb1dec8be8c53a"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "79a7194097c348e85f3774e8f59edb2e",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 38151,
            "upload_time": "2023-08-11T04:00:18",
            "upload_time_iso_8601": "2023-08-11T04:00:18.575003Z",
            "url": "https://files.pythonhosted.org/packages/c6/b5/492364b1d227669efda002fe8e6a4214a4f0619be5f87a863354372967d2/hdrhistogram-0.10.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "687f5427a1bd0181226e9f393a3fdbc98ffcbb2216bebf092907217835ec7c7a",
                "md5": "ba652a047208667df0eb5cf8e53f42fd",
                "sha256": "f9ed261aa8b5467678356b778eab9f3f12a9003ee4b4b2f53783a343f2c4513c"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp310-pypy310_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ba652a047208667df0eb5cf8e53f42fd",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 40118,
            "upload_time": "2023-08-11T04:00:19",
            "upload_time_iso_8601": "2023-08-11T04:00:19.800480Z",
            "url": "https://files.pythonhosted.org/packages/68/7f/5427a1bd0181226e9f393a3fdbc98ffcbb2216bebf092907217835ec7c7a/hdrhistogram-0.10.3-pp310-pypy310_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98dd9f47d2c0e09b23ecfd94c7e35b2be978c1f2fb1f14fa74db0b487bf3883a",
                "md5": "289ca6e76b29518ddbc4489a0bde8aab",
                "sha256": "ce096f9d89dfe4ff9708593e0e5cb9e28c8dd9311c65acb2921530a91e3d043e"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "289ca6e76b29518ddbc4489a0bde8aab",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": null,
            "size": 36434,
            "upload_time": "2023-08-11T04:00:21",
            "upload_time_iso_8601": "2023-08-11T04:00:21.061627Z",
            "url": "https://files.pythonhosted.org/packages/98/dd/9f47d2c0e09b23ecfd94c7e35b2be978c1f2fb1f14fa74db0b487bf3883a/hdrhistogram-0.10.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b9b313823b1ad29f64bffaf92c1cc5a87e644bc8926b9da617771d91cf19e7b",
                "md5": "85fa2765557a0ad7831eed05b25efb24",
                "sha256": "9e76612d311ac233f184063fc55ac5097fc6dc1629dc4e25ebe4f18384d6d8ca"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "85fa2765557a0ad7831eed05b25efb24",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": null,
            "size": 38863,
            "upload_time": "2023-08-11T04:00:22",
            "upload_time_iso_8601": "2023-08-11T04:00:22.127992Z",
            "url": "https://files.pythonhosted.org/packages/2b/9b/313823b1ad29f64bffaf92c1cc5a87e644bc8926b9da617771d91cf19e7b/hdrhistogram-0.10.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "864c7f62783c192b518d0a72f08dcf63a229adffe0510e7395ffe82d4ec645d0",
                "md5": "1cc561deac602a4ad78e05b4dca35671",
                "sha256": "e1ca845e86a296d7efc8a3ff175a0dab614b57adb610b7b1aa4a312becf8319f"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1cc561deac602a4ad78e05b4dca35671",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": null,
            "size": 38146,
            "upload_time": "2023-08-11T04:00:23",
            "upload_time_iso_8601": "2023-08-11T04:00:23.316728Z",
            "url": "https://files.pythonhosted.org/packages/86/4c/7f62783c192b518d0a72f08dcf63a229adffe0510e7395ffe82d4ec645d0/hdrhistogram-0.10.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cabc47ca1f89cacf95c480081d41da94865984d9c2dfe715f0854317057bca8a",
                "md5": "2decd23064b3053defe4e3513aede4c0",
                "sha256": "36e49a657f47cf0c562372ca0e06334461f558ef29ed8a972210f2a879abf669"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp37-pypy37_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2decd23064b3053defe4e3513aede4c0",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": null,
            "size": 40108,
            "upload_time": "2023-08-11T04:00:24",
            "upload_time_iso_8601": "2023-08-11T04:00:24.685207Z",
            "url": "https://files.pythonhosted.org/packages/ca/bc/47ca1f89cacf95c480081d41da94865984d9c2dfe715f0854317057bca8a/hdrhistogram-0.10.3-pp37-pypy37_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97bec31b8527cdc01de65a86f006573cd7f247a2cedaa34aabbfc809477f0a9e",
                "md5": "2a2c4818e67bd5b6d7e5b8cebeec463e",
                "sha256": "c6fe0c64b902ce8ae94fef5f38710d2b51452521812191668b27b664878defd8"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2a2c4818e67bd5b6d7e5b8cebeec463e",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": null,
            "size": 36431,
            "upload_time": "2023-08-11T04:00:25",
            "upload_time_iso_8601": "2023-08-11T04:00:25.819464Z",
            "url": "https://files.pythonhosted.org/packages/97/be/c31b8527cdc01de65a86f006573cd7f247a2cedaa34aabbfc809477f0a9e/hdrhistogram-0.10.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "761cd57b3a5ab2645b4ecbdf53993d7657773e408031e0218e3a34b1c9fa7a3d",
                "md5": "f6e21b2c37aa5bf4d10d178206f4078b",
                "sha256": "fb56df2189655fc6b83275a2f6206842eeef3b45b633947ca8a63ad7866bf0d1"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "f6e21b2c37aa5bf4d10d178206f4078b",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": null,
            "size": 38862,
            "upload_time": "2023-08-11T04:00:27",
            "upload_time_iso_8601": "2023-08-11T04:00:27.093009Z",
            "url": "https://files.pythonhosted.org/packages/76/1c/d57b3a5ab2645b4ecbdf53993d7657773e408031e0218e3a34b1c9fa7a3d/hdrhistogram-0.10.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d6a54a16fe53c0ab5640b80474ec86f5587d038d659e1be182f4df55319a376",
                "md5": "20331d80e3038ea8fd91ea7302462647",
                "sha256": "0fbf9db500382a7f19b05708f327b94bea8e17c6a56e7359f9cc532f5afa2662"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "20331d80e3038ea8fd91ea7302462647",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": null,
            "size": 38144,
            "upload_time": "2023-08-11T04:00:28",
            "upload_time_iso_8601": "2023-08-11T04:00:28.299300Z",
            "url": "https://files.pythonhosted.org/packages/4d/6a/54a16fe53c0ab5640b80474ec86f5587d038d659e1be182f4df55319a376/hdrhistogram-0.10.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a37a3720c21330733b2a7a8143f1130a69ee73948ae2aed9bef90230eb0de205",
                "md5": "34cfee92d3b4a9254ba5f27fb34e4912",
                "sha256": "9f216fe14d696a6d2aad6ead334fd700ce91ab1ddfeb8bbe9f54e784126c1f5d"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp38-pypy38_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "34cfee92d3b4a9254ba5f27fb34e4912",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": null,
            "size": 40110,
            "upload_time": "2023-08-11T04:00:29",
            "upload_time_iso_8601": "2023-08-11T04:00:29.447514Z",
            "url": "https://files.pythonhosted.org/packages/a3/7a/3720c21330733b2a7a8143f1130a69ee73948ae2aed9bef90230eb0de205/hdrhistogram-0.10.3-pp38-pypy38_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15fcc8c68194d465d15f86ddb8b4a42888531b64ea530f66762645e2b2a685b3",
                "md5": "9b5327ff4e261d85232e29c96953fe1a",
                "sha256": "3fe865a17462a756650fe2539702df65b8a10ddcb5e1da4eec64a39c502c2af7"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b5327ff4e261d85232e29c96953fe1a",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": null,
            "size": 36430,
            "upload_time": "2023-08-11T04:00:30",
            "upload_time_iso_8601": "2023-08-11T04:00:30.973088Z",
            "url": "https://files.pythonhosted.org/packages/15/fc/c8c68194d465d15f86ddb8b4a42888531b64ea530f66762645e2b2a685b3/hdrhistogram-0.10.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bee7932268aaa7fc64a5bcb2ab31f8b9d25afcd78ae4662c946b4b586e582e83",
                "md5": "c3c4e3285e97107bf2296ce9a91ca73e",
                "sha256": "6c1c4b2431a0f539cddf760ac11fb5828faeb0643635548cefea82868f7486eb"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "c3c4e3285e97107bf2296ce9a91ca73e",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": null,
            "size": 38865,
            "upload_time": "2023-08-11T04:00:32",
            "upload_time_iso_8601": "2023-08-11T04:00:32.565994Z",
            "url": "https://files.pythonhosted.org/packages/be/e7/932268aaa7fc64a5bcb2ab31f8b9d25afcd78ae4662c946b4b586e582e83/hdrhistogram-0.10.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cda08df27859e2f4ca3855546b76aca8e89548fe5e91202e717957d8dbff6be2",
                "md5": "15785a97f6de0dd6eacfedc6cb7b78e8",
                "sha256": "0c79c269b37132e9ba116c405aa6f331d3bfc7545297609af32f09e94fd6430a"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "15785a97f6de0dd6eacfedc6cb7b78e8",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": null,
            "size": 38145,
            "upload_time": "2023-08-11T04:00:33",
            "upload_time_iso_8601": "2023-08-11T04:00:33.640709Z",
            "url": "https://files.pythonhosted.org/packages/cd/a0/8df27859e2f4ca3855546b76aca8e89548fe5e91202e717957d8dbff6be2/hdrhistogram-0.10.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb46ba6e175ad81e3fa767988dcdb9626e6a5a085756585c9378d70e6effb33c",
                "md5": "1581882db95a66b0c9abbee8ac40384d",
                "sha256": "dc9ff7da871d9149abfa386c44f1d02e83b8b5819ea974f55cf5eed27e9d333a"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1581882db95a66b0c9abbee8ac40384d",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": null,
            "size": 40114,
            "upload_time": "2023-08-11T04:00:34",
            "upload_time_iso_8601": "2023-08-11T04:00:34.870631Z",
            "url": "https://files.pythonhosted.org/packages/fb/46/ba6e175ad81e3fa767988dcdb9626e6a5a085756585c9378d70e6effb33c/hdrhistogram-0.10.3-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c279674aad5279dd1a77b85efa1cbf8dcead209dc5f38f55cbbfd75bc20cc65b",
                "md5": "90605e61e5989d234d28b590fe033c48",
                "sha256": "f3890df0a6f3c582a0a8b2a49a568729cb319f1600683e4458cc98b68ca32841"
            },
            "downloads": -1,
            "filename": "hdrhistogram-0.10.3.tar.gz",
            "has_sig": false,
            "md5_digest": "90605e61e5989d234d28b590fe033c48",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 60077,
            "upload_time": "2023-08-11T04:00:36",
            "upload_time_iso_8601": "2023-08-11T04:00:36.003966Z",
            "url": "https://files.pythonhosted.org/packages/c2/79/674aad5279dd1a77b85efa1cbf8dcead209dc5f38f55cbbfd75bc20cc65b/hdrhistogram-0.10.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-11 04:00:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "HdrHistogram",
    "github_project": "HdrHistogram_py",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "hdrhistogram"
}
        
Elapsed time: 0.27661s