libmc
=====
|build_go| |build_py|
|status| |pypiv| |pyversions| |wheel| |license|
libmc is a memcached client library for Python without any other
dependencies at runtime. It's mainly written in C++ and Cython and
can be considered a drop in replacement for libmemcached and
`python-libmemcached <https://github.com/douban/python-libmemcached>`__.
libmc is developed and maintained by Douban Inc. Currently, it is
working in a production environment, powering all web traffic on
`douban.com <https://douban.com/>`__
(`english wiki <https://en.wikipedia.org/wiki/Douban>`__).
Build and Installation
----------------------
For users:
::
pip install libmc
Usage:
.. code:: python
import libmc
mc = libmc.Client(['localhost:11211', 'localhost:11212'])
mc.set('foo', 'bar')
assert mc.get('foo') == 'bar'
Under the hood
--------------
Under the hood, libmc consists of 2 parts: an internal, fully-functional
memcached client implementation in C++ and a Cython wrapper around that
implementation. Dynamic memory allocation and memory-copy are slow, so
we've tried our best to avoid them. libmc also supports the ``set_multi``
command, which is not natively supported by the `memcached
protocol <https://github.com/memcached/memcached/blob/master/doc/protocol.txt>`__.
Some techniques have been applied to make ``set_multi`` command extremely fast
in libmc (compared to similiar libraries).
Configuration
-------------
.. code:: python
import libmc
from libmc import (
MC_HASH_MD5, MC_POLL_TIMEOUT, MC_CONNECT_TIMEOUT, MC_RETRY_TIMEOUT
)
mc = libmc.Client(
[
'localhost:11211',
'localhost:11212',
'remote_host',
'remote_host mc.mike',
'remote_host:11213 mc.oscar'
],
do_split=True,
comp_threshold=0,
noreply=False,
prefix=None,
hash_fn=MC_HASH_MD5,
failover=False
)
mc.config(MC_POLL_TIMEOUT, 100) # 100 ms
mc.config(MC_CONNECT_TIMEOUT, 300) # 300 ms
mc.config(MC_RETRY_TIMEOUT, 5) # 5 s
- ``servers``: a list of memcached server addresses. Each address
should be formated as ``hostname[:port] [alias]``, where ``port`` and
``alias`` are optional. If ``port`` is not given, the default port ``11211``
will be used. If given, ``alias`` will be used to compute the server hash,
which would otherwise be computed based on ``host`` and ``port``
(i.e. whichever portion is given).
- ``do_split``: splits large values (up to 10MB) into chunks (<1MB). The
memcached server implementation will not store items larger than 1MB,
however in some environments it is beneficial to shard up to 10MB of data.
Attempts to store more than that are ignored. Default: ``True``.
- ``comp_threshold``: compresses large values using zlib. If
``buffer length > comp_threshold > 0`` (in bytes), the buffer will be
compressed. If ``comp_threshold == 0``, the string buffer will never be
compressed. Default: ``0``
- ``noreply``: controls memcached's
``noreply`` `feature <https://github.com/memcached/memcached/wiki/CommonFeatures#noreplyquiet>`__.
Default: ``False``
- ``prefix``: The key prefix. default: ``''``
- ``hash_fn``: hashing function for keys. possible values:
- ``MC_HASH_MD5``
- ``MC_HASH_FNV1_32``
- ``MC_HASH_FNV1A_32``
- ``MC_HASH_CRC_32``
default: ``MC_HASH_MD5``
**NOTE:** fnv1\_32, fnv1a\_32, crc\_32 implementations in libmc are
per each spec, but they're not compatible with corresponding
implementions in libmemcached.
- ``failover``: Whether to failover to next server when current server
is not available. Default: ``False``
- ``MC_POLL_TIMEOUT`` Timeout parameter used during set/get procedure.
Default: ``300`` ms
- ``MC_CONNECT_TIMEOUT`` Timeout parameter used when connecting to
memcached server in the initial phase. Default: ``100`` ms
- ``MC_RETRY_TIMEOUT`` When a server is not available due to server-end
error, libmc will try to establish the broken connection in every
``MC_RETRY_TIMEOUT`` s until the connection is back to live. Default:
``5`` s
**NOTE:** The hashing algorithm for host mapping on continuum is always
md5.
Contributing to libmc
---------------------
Feel free to send a **Pull Request**. For feature requests or any
questions, please open an **Issue**.
For **SECURITY DISCLOSURE**, please disclose the information responsibly
by sending an email to security@douban.com directly instead of creating
a GitHub issue.
FAQ
---
Does libmc support PHP?
^^^^^^^^^^^^^^^^^^^^^^^
No, but, if you like, you can write a wrapper for PHP based on the C++
implementation.
Is Memcached binary protocol supported ?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No. Only Memcached ASCII protocol is supported currently.
Why reinventing the wheel?
^^^^^^^^^^^^^^^^^^^^^^^^^^
Before libmc, we were using
`python-libmemcached <https://github.com/douban/python-libmemcached>`__,
which is a python extention for
`libmemcached <http://libmemcached.org/libMemcached.html>`__.
libmemcached is quite weird and buggy. After nearly one decade, there're
still some unsolved bugs.
Is libmc thread-safe ?
^^^^^^^^^^^^^^^^^^^^^^
Yes. ``libmc.ThreadedClient`` is a thread-safe client implementation. To hold
access for more than one request, ``libmc.ClientPool`` can be used with Python
``with`` statements. ``libmc.Client``, however, is a single-threaded memcached
client. If you initialize a standard client in one thread but reuse that in
another thread, a Python ``ThreadUnsafe`` Exception will be raised.
Is libmc compatible with gevent?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Yes, with the help of `greenify <https://github.com/douban/greenify>`__,
libmc is friendly to gevent. Read ``tests/shabby/gevent_issue.py`` for
details. ``libmc.ThreadedClient`` and ``libmc.ClientPool`` are not compatible.
[#]_
**Notice:**
``gevent.monkey.patch_all()`` will override
``threading.current_thread().ident`` to Greenlet's ID,
this will cause libmc to throw a ThreadUnSafe error
or run into dead lock, you should only patch the things
that you need, e.g.
.. code:: python
from gevent import monkey
monkey.patch_socket()
Acknowledgments
---------------
- Thanks to `@fahrenheit2539 <https://github.com/fahrenheit2539>`__ and
the llvm project for the standalone.
`SmallVector <http://fahrenheit2539.blogspot.com/2012/06/introduction-in-depths-look-at.html>`__
implementation.
- Thanks to `@miloyip <https://github.com/miloyip>`__ for the high
performance `i64toa <https://github.com/miloyip/itoa-benchmark>`__
implementation.
- Thanks to `Ivan Novikov <https://twitter.com/d0znpp>`__ for the
research in `THE NEW PAGE OF INJECTIONS BOOK: MEMCACHED
INJECTIONS <https://www.blackhat.com/us-14/briefings.html#the-new-page-of-injections-book-memcached-injections>`__.
- Thanks to the PolarSSL project for the md5 implementation.
- Thanks to `@lericson <https://github.com/lericson>`__ for the `benchmark
script in
pylibmc <https://github.com/lericson/pylibmc/blob/master/bin/runbench.py>`__.
- Thanks to the libmemcached project and some other projects possibly
not mentioned here.
Contributors
------------
- `@mckelvin <https://github.com/mckelvin>`__
- `@zzl0 <https://github.com/zzl0>`__
- `@windreamer <https://github.com/windreamer>`__
- `@lembacon <https://github.com/lembacon>`__
- `@seansay <https://github.com/seansay>`__
- `@mosasiru <https://github.com/mosasiru>`__
- `@jumpeiMano <https://github.com/jumpeiMano>`__
Who is using
------------
- `豆瓣 <https://douban.com>`__
- `下厨房 <https://www.xiachufang.com>`__
- `Some other projects on GitHub <https://github.com/douban/libmc/network/dependents>`__
- Want to add your company/organization name here?
Please feel free to send a PR!
Documentation
-------------
https://github.com/douban/libmc/wiki
Footnotes
---------
.. [#] In order to use a single executable for multiple greenlet contexts,
gevent has to `copy thread memory
<https://github.com/python-greenlet/greenlet/blob/937f150e07823ee03344aeeb5111c0bb371a831d/src/greenlet/greenlet.cpp#L105>`__
to and from the same stack space. This doesn't affect Python references,
which are handed off through gevent, but makes it impossible for shared
libraries to pass memory addresses across greenlets, which is required for
the worker pool.
LICENSE
-------
Copyright (c) 2014-2020, Douban Inc. All rights reserved.
Licensed under a BSD license:
https://github.com/douban/libmc/blob/master/LICENSE.txt
.. |build_go| image:: https://github.com/douban/libmc/actions/workflows/golang.yml/badge.svg
:target: https://github.com/douban/libmc/actions/workflows/golang.yml
.. |build_py| image:: https://github.com/douban/libmc/actions/workflows/python.yml/badge.svg
:target: https://github.com/douban/libmc/actions/workflows/python.yml
.. |pypiv| image:: https://img.shields.io/pypi/v/libmc
:target: https://pypi.org/project/libmc/
.. |status| image:: https://img.shields.io/pypi/status/libmc
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/libmc
.. |wheel| image:: https://img.shields.io/pypi/wheel/libmc
.. |license| image:: https://img.shields.io/pypi/l/libmc?color=blue
Raw data
{
"_id": null,
"home_page": "https://github.com/douban/libmc",
"name": "libmc",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "memcached, memcache, client",
"author": "PAN, Myautsai",
"author_email": "myautsai@gmail.com",
"download_url": null,
"platform": null,
"description": "libmc\n=====\n\n|build_go| |build_py|\n|status| |pypiv| |pyversions| |wheel| |license|\n\nlibmc is a memcached client library for Python without any other\ndependencies at runtime. It's mainly written in C++ and Cython and\ncan be considered a drop in replacement for libmemcached and\n`python-libmemcached <https://github.com/douban/python-libmemcached>`__.\n\nlibmc is developed and maintained by Douban Inc. Currently, it is\nworking in a production environment, powering all web traffic on\n`douban.com <https://douban.com/>`__\n(`english wiki <https://en.wikipedia.org/wiki/Douban>`__).\n\nBuild and Installation\n----------------------\n\nFor users:\n\n::\n\n pip install libmc\n\nUsage:\n\n.. code:: python\n\n import libmc\n\n mc = libmc.Client(['localhost:11211', 'localhost:11212'])\n mc.set('foo', 'bar')\n assert mc.get('foo') == 'bar'\n\nUnder the hood\n--------------\n\nUnder the hood, libmc consists of 2 parts: an internal, fully-functional\nmemcached client implementation in C++ and a Cython wrapper around that\nimplementation. Dynamic memory allocation and memory-copy are slow, so\nwe've tried our best to avoid them. libmc also supports the ``set_multi``\ncommand, which is not natively supported by the `memcached\nprotocol <https://github.com/memcached/memcached/blob/master/doc/protocol.txt>`__.\nSome techniques have been applied to make ``set_multi`` command extremely fast\nin libmc (compared to similiar libraries).\n\nConfiguration\n-------------\n\n.. code:: python\n\n import libmc\n from libmc import (\n MC_HASH_MD5, MC_POLL_TIMEOUT, MC_CONNECT_TIMEOUT, MC_RETRY_TIMEOUT\n )\n\n mc = libmc.Client(\n [\n 'localhost:11211',\n 'localhost:11212',\n 'remote_host',\n 'remote_host mc.mike',\n 'remote_host:11213 mc.oscar'\n ],\n do_split=True,\n comp_threshold=0,\n noreply=False,\n prefix=None,\n hash_fn=MC_HASH_MD5,\n failover=False\n )\n\n mc.config(MC_POLL_TIMEOUT, 100) # 100 ms\n mc.config(MC_CONNECT_TIMEOUT, 300) # 300 ms\n mc.config(MC_RETRY_TIMEOUT, 5) # 5 s\n\n\n- ``servers``: a list of memcached server addresses. Each address\n should be formated as ``hostname[:port] [alias]``, where ``port`` and\n ``alias`` are optional. If ``port`` is not given, the default port ``11211``\n will be used. If given, ``alias`` will be used to compute the server hash,\n which would otherwise be computed based on ``host`` and ``port``\n (i.e. whichever portion is given).\n- ``do_split``: splits large values (up to 10MB) into chunks (<1MB). The\n memcached server implementation will not store items larger than 1MB,\n however in some environments it is beneficial to shard up to 10MB of data.\n Attempts to store more than that are ignored. Default: ``True``.\n- ``comp_threshold``: compresses large values using zlib. If\n ``buffer length > comp_threshold > 0`` (in bytes), the buffer will be\n compressed. If ``comp_threshold == 0``, the string buffer will never be\n compressed. Default: ``0``\n- ``noreply``: controls memcached's\n ``noreply`` `feature <https://github.com/memcached/memcached/wiki/CommonFeatures#noreplyquiet>`__.\n Default: ``False``\n- ``prefix``: The key prefix. default: ``''``\n- ``hash_fn``: hashing function for keys. possible values:\n\n - ``MC_HASH_MD5``\n - ``MC_HASH_FNV1_32``\n - ``MC_HASH_FNV1A_32``\n - ``MC_HASH_CRC_32``\n\n default: ``MC_HASH_MD5``\n\n **NOTE:** fnv1\\_32, fnv1a\\_32, crc\\_32 implementations in libmc are\n per each spec, but they're not compatible with corresponding\n implementions in libmemcached.\n\n- ``failover``: Whether to failover to next server when current server\n is not available. Default: ``False``\n\n- ``MC_POLL_TIMEOUT`` Timeout parameter used during set/get procedure.\n Default: ``300`` ms\n- ``MC_CONNECT_TIMEOUT`` Timeout parameter used when connecting to\n memcached server in the initial phase. Default: ``100`` ms\n- ``MC_RETRY_TIMEOUT`` When a server is not available due to server-end\n error, libmc will try to establish the broken connection in every\n ``MC_RETRY_TIMEOUT`` s until the connection is back to live. Default:\n ``5`` s\n\n**NOTE:** The hashing algorithm for host mapping on continuum is always\nmd5.\n\nContributing to libmc\n---------------------\n\nFeel free to send a **Pull Request**. For feature requests or any\nquestions, please open an **Issue**.\n\nFor **SECURITY DISCLOSURE**, please disclose the information responsibly\nby sending an email to security@douban.com directly instead of creating\na GitHub issue.\n\nFAQ\n---\n\nDoes libmc support PHP?\n^^^^^^^^^^^^^^^^^^^^^^^\n\nNo, but, if you like, you can write a wrapper for PHP based on the C++\nimplementation.\n\nIs Memcached binary protocol supported ?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nNo. Only Memcached ASCII protocol is supported currently.\n\nWhy reinventing the wheel?\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nBefore libmc, we were using\n`python-libmemcached <https://github.com/douban/python-libmemcached>`__,\nwhich is a python extention for\n`libmemcached <http://libmemcached.org/libMemcached.html>`__.\nlibmemcached is quite weird and buggy. After nearly one decade, there're\nstill some unsolved bugs.\n\nIs libmc thread-safe ?\n^^^^^^^^^^^^^^^^^^^^^^\n\nYes. ``libmc.ThreadedClient`` is a thread-safe client implementation. To hold\naccess for more than one request, ``libmc.ClientPool`` can be used with Python\n``with`` statements. ``libmc.Client``, however, is a single-threaded memcached\nclient. If you initialize a standard client in one thread but reuse that in\nanother thread, a Python ``ThreadUnsafe`` Exception will be raised.\n\nIs libmc compatible with gevent?\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nYes, with the help of `greenify <https://github.com/douban/greenify>`__,\nlibmc is friendly to gevent. Read ``tests/shabby/gevent_issue.py`` for\ndetails. ``libmc.ThreadedClient`` and ``libmc.ClientPool`` are not compatible.\n[#]_\n\n**Notice:**\n\n``gevent.monkey.patch_all()`` will override\n``threading.current_thread().ident`` to Greenlet's ID,\nthis will cause libmc to throw a ThreadUnSafe error\nor run into dead lock, you should only patch the things\nthat you need, e.g.\n\n.. code:: python\n\n from gevent import monkey\n monkey.patch_socket()\n\nAcknowledgments\n---------------\n\n- Thanks to `@fahrenheit2539 <https://github.com/fahrenheit2539>`__ and\n the llvm project for the standalone.\n `SmallVector <http://fahrenheit2539.blogspot.com/2012/06/introduction-in-depths-look-at.html>`__\n implementation.\n- Thanks to `@miloyip <https://github.com/miloyip>`__ for the high\n performance `i64toa <https://github.com/miloyip/itoa-benchmark>`__\n implementation.\n- Thanks to `Ivan Novikov <https://twitter.com/d0znpp>`__ for the\n research in `THE NEW PAGE OF INJECTIONS BOOK: MEMCACHED\n INJECTIONS <https://www.blackhat.com/us-14/briefings.html#the-new-page-of-injections-book-memcached-injections>`__.\n- Thanks to the PolarSSL project for the md5 implementation.\n- Thanks to `@lericson <https://github.com/lericson>`__ for the `benchmark\n script in\n pylibmc <https://github.com/lericson/pylibmc/blob/master/bin/runbench.py>`__.\n- Thanks to the libmemcached project and some other projects possibly\n not mentioned here.\n\nContributors\n------------\n\n- `@mckelvin <https://github.com/mckelvin>`__\n- `@zzl0 <https://github.com/zzl0>`__\n- `@windreamer <https://github.com/windreamer>`__\n- `@lembacon <https://github.com/lembacon>`__\n- `@seansay <https://github.com/seansay>`__\n- `@mosasiru <https://github.com/mosasiru>`__\n- `@jumpeiMano <https://github.com/jumpeiMano>`__\n\n\nWho is using\n------------\n\n- `\u8c46\u74e3 <https://douban.com>`__\n- `\u4e0b\u53a8\u623f <https://www.xiachufang.com>`__\n- `Some other projects on GitHub <https://github.com/douban/libmc/network/dependents>`__\n- Want to add your company/organization name here?\n Please feel free to send a PR!\n\nDocumentation\n-------------\n\nhttps://github.com/douban/libmc/wiki\n\nFootnotes\n---------\n\n.. [#] In order to use a single executable for multiple greenlet contexts,\n gevent has to `copy thread memory\n <https://github.com/python-greenlet/greenlet/blob/937f150e07823ee03344aeeb5111c0bb371a831d/src/greenlet/greenlet.cpp#L105>`__\n to and from the same stack space. This doesn't affect Python references,\n which are handed off through gevent, but makes it impossible for shared\n libraries to pass memory addresses across greenlets, which is required for\n the worker pool.\n\n\nLICENSE\n-------\n\nCopyright (c) 2014-2020, Douban Inc. All rights reserved.\n\nLicensed under a BSD license:\nhttps://github.com/douban/libmc/blob/master/LICENSE.txt\n\n.. |build_go| image:: https://github.com/douban/libmc/actions/workflows/golang.yml/badge.svg\n :target: https://github.com/douban/libmc/actions/workflows/golang.yml\n\n.. |build_py| image:: https://github.com/douban/libmc/actions/workflows/python.yml/badge.svg\n :target: https://github.com/douban/libmc/actions/workflows/python.yml\n\n.. |pypiv| image:: https://img.shields.io/pypi/v/libmc\n :target: https://pypi.org/project/libmc/\n\n.. |status| image:: https://img.shields.io/pypi/status/libmc\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/libmc\n.. |wheel| image:: https://img.shields.io/pypi/wheel/libmc\n.. |license| image:: https://img.shields.io/pypi/l/libmc?color=blue\n",
"bugtrack_url": null,
"license": "BSD License",
"summary": "Fast and light-weight memcached client for C++/Python",
"version": "1.4.8",
"project_urls": {
"Homepage": "https://github.com/douban/libmc"
},
"split_keywords": [
"memcached",
" memcache",
" client"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "77ad226a274fecff9af1ddda993435bb776a23c2b3cdf27801dd90c3952cd8a4",
"md5": "041fd94ff02af67ed15c9237556cefb9",
"sha256": "ea5bef96ada9d1e70173a51a9def51b53d4a29018259eac5aeec92e6c00b8353"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "041fd94ff02af67ed15c9237556cefb9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1508777,
"upload_time": "2024-10-18T11:42:08",
"upload_time_iso_8601": "2024-10-18T11:42:08.164741Z",
"url": "https://files.pythonhosted.org/packages/77/ad/226a274fecff9af1ddda993435bb776a23c2b3cdf27801dd90c3952cd8a4/libmc-1.4.8-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2433ebc60f7a7da6eafb0520b3254c90d2ec115e99496bf4d555d9d2498235b4",
"md5": "ee8e0dd49195c9655e52f22a380a827b",
"sha256": "f6ee48b6d77327f057573d20689158bf6fb50aa4e818d67dbb0a04420770c7e7"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ee8e0dd49195c9655e52f22a380a827b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1562912,
"upload_time": "2024-10-18T11:42:10",
"upload_time_iso_8601": "2024-10-18T11:42:10.368657Z",
"url": "https://files.pythonhosted.org/packages/24/33/ebc60f7a7da6eafb0520b3254c90d2ec115e99496bf4d555d9d2498235b4/libmc-1.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bdc308f81599f1b22cd58557f56b2484ce9c9242fcfd7d88ef4157557a2b95c7",
"md5": "efd113d3a677d5f03ffd61280b0dabb1",
"sha256": "a97de4cc547493ce1fb5019134e024de9ae5eb60bd56f6bc1e5c2002155feb26"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp310-cp310-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "efd113d3a677d5f03ffd61280b0dabb1",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 2565474,
"upload_time": "2024-10-18T11:42:11",
"upload_time_iso_8601": "2024-10-18T11:42:11.973524Z",
"url": "https://files.pythonhosted.org/packages/bd/c3/08f81599f1b22cd58557f56b2484ce9c9242fcfd7d88ef4157557a2b95c7/libmc-1.4.8-cp310-cp310-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "43a59dd7c0ac47cc98bb5fc66f30b17e12efd36da8e7f93410b6794d4c0783f1",
"md5": "8ce7e37fd66b66969e1f5da03fb221d7",
"sha256": "ca3023b60d65e9c7102c353e06e15e29e08c8f3b8244571bdd5b01b2baf007c3"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "8ce7e37fd66b66969e1f5da03fb221d7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 2510861,
"upload_time": "2024-10-18T11:42:13",
"upload_time_iso_8601": "2024-10-18T11:42:13.331390Z",
"url": "https://files.pythonhosted.org/packages/43/a5/9dd7c0ac47cc98bb5fc66f30b17e12efd36da8e7f93410b6794d4c0783f1/libmc-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fcf3e43bb11361b758358fa59ce5d5e23462082fc728f232e7bc6887cfcd4624",
"md5": "933782282b9a59f41e19cd5b91725059",
"sha256": "7a9b722b72c746e663e20fda23bb65c9545689275e8711c8ef878f3d60ab98fc"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "933782282b9a59f41e19cd5b91725059",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1560816,
"upload_time": "2024-10-18T11:42:14",
"upload_time_iso_8601": "2024-10-18T11:42:14.928197Z",
"url": "https://files.pythonhosted.org/packages/fc/f3/e43bb11361b758358fa59ce5d5e23462082fc728f232e7bc6887cfcd4624/libmc-1.4.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "209e2538143cdd833a562264863625385e6745526e5f487267f4aff03a1ce548",
"md5": "f1b9b2311ef98a29d8177fa38432088d",
"sha256": "19a9e208a42f62daa30174aea62c00f33660da6d50a3ea914a59483b57772247"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f1b9b2311ef98a29d8177fa38432088d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 1622026,
"upload_time": "2024-10-18T11:42:17",
"upload_time_iso_8601": "2024-10-18T11:42:17.010654Z",
"url": "https://files.pythonhosted.org/packages/20/9e/2538143cdd833a562264863625385e6745526e5f487267f4aff03a1ce548/libmc-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "109a649fc5e8a15d12cf6aad66062d9f797aec110337e9ade21199d0f68b40c0",
"md5": "a011481f52b468d2240f46cf657db4f5",
"sha256": "0bf523c06ac04c7ec06ff77b7766f5592e4db89908899ad2bea3333de5e76396"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp311-cp311-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "a011481f52b468d2240f46cf657db4f5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 2627102,
"upload_time": "2024-10-18T11:42:18",
"upload_time_iso_8601": "2024-10-18T11:42:18.684828Z",
"url": "https://files.pythonhosted.org/packages/10/9a/649fc5e8a15d12cf6aad66062d9f797aec110337e9ade21199d0f68b40c0/libmc-1.4.8-cp311-cp311-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3b25af379551bf50fdf0bb32242f88e71e9b40bb94d8ce982c7a8131ae8f13f3",
"md5": "647c3bf917dd8522fa366e7381cfd25c",
"sha256": "1cf0c7d4aeccb18fc449f379e5c7aca385575abdd606d5d2be2afac9eca32301"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "647c3bf917dd8522fa366e7381cfd25c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 2582666,
"upload_time": "2024-10-18T11:42:20",
"upload_time_iso_8601": "2024-10-18T11:42:20.755606Z",
"url": "https://files.pythonhosted.org/packages/3b/25/af379551bf50fdf0bb32242f88e71e9b40bb94d8ce982c7a8131ae8f13f3/libmc-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "115684992c4fd202202281bd1edabed32d64640b11d8f098c94d919fd7af55a6",
"md5": "34e60959ea15b340a7421a2773c2578a",
"sha256": "17fed463500ee7be7e5e1107458548f33fdf5c37e5953588b3898fdea9d3dfe1"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "34e60959ea15b340a7421a2773c2578a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1537590,
"upload_time": "2024-10-18T11:42:22",
"upload_time_iso_8601": "2024-10-18T11:42:22.116018Z",
"url": "https://files.pythonhosted.org/packages/11/56/84992c4fd202202281bd1edabed32d64640b11d8f098c94d919fd7af55a6/libmc-1.4.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4cc4029d9d7f841fe998960fc8f84782c12911381d672f8b4c894ae0e58320d5",
"md5": "100d603463b3ad41e7f31a4df835f313",
"sha256": "72bc50cc2c62ccb889628b5913f63c463cfab07c73090f9f3e90f707233c9bbe"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "100d603463b3ad41e7f31a4df835f313",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 1614688,
"upload_time": "2024-10-18T11:42:23",
"upload_time_iso_8601": "2024-10-18T11:42:23.675598Z",
"url": "https://files.pythonhosted.org/packages/4c/c4/029d9d7f841fe998960fc8f84782c12911381d672f8b4c894ae0e58320d5/libmc-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df7857bf8ee0567eb7dd3a96d92f4e59e0325614e60963489d60b9085202ab7b",
"md5": "a01af0d6ffbd5a02d5b135cc8bf315e4",
"sha256": "85d12b682de4ef7c1741c0eb96fd498cc83e4be434ac0e8946f8b722eabca29d"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp312-cp312-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "a01af0d6ffbd5a02d5b135cc8bf315e4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 2621984,
"upload_time": "2024-10-18T11:42:24",
"upload_time_iso_8601": "2024-10-18T11:42:24.947208Z",
"url": "https://files.pythonhosted.org/packages/df/78/57bf8ee0567eb7dd3a96d92f4e59e0325614e60963489d60b9085202ab7b/libmc-1.4.8-cp312-cp312-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8f75c83bd371e832a583b0b3783359f5c9447cc9f5acbd4992a00d7e8d4a3467",
"md5": "3a728d88c694c538afabe6f3842e2f63",
"sha256": "2b71c0d09bfe6b00900791a44ec70af742b2e6db1bb33f2a42c8821c9503c4f4"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "3a728d88c694c538afabe6f3842e2f63",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 2576776,
"upload_time": "2024-10-18T11:42:27",
"upload_time_iso_8601": "2024-10-18T11:42:27.079147Z",
"url": "https://files.pythonhosted.org/packages/8f/75/c83bd371e832a583b0b3783359f5c9447cc9f5acbd4992a00d7e8d4a3467/libmc-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae4f0f6462aeeedb3f75e3138828b1836264ec814cc2f5c135469fe72a881734",
"md5": "0526b8a98f028e81826293e818e71b07",
"sha256": "66ce8a3cfcdfda58a39a9f697d4382a5fdaa5180e326980a223ead7df5c9e531"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "0526b8a98f028e81826293e818e71b07",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1536064,
"upload_time": "2024-10-18T11:42:28",
"upload_time_iso_8601": "2024-10-18T11:42:28.512119Z",
"url": "https://files.pythonhosted.org/packages/ae/4f/0f6462aeeedb3f75e3138828b1836264ec814cc2f5c135469fe72a881734/libmc-1.4.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "27a6eee752c9e74c11666e999346162737302b6561ba01f10036cd17924b6664",
"md5": "fb82b356e0f3499444d78bdaeda619fd",
"sha256": "c4f103aba898d225e39d9552b2383bf0197b992e5a46cf9fcdd2a6e80880f7b3"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fb82b356e0f3499444d78bdaeda619fd",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 1609227,
"upload_time": "2024-10-18T11:42:29",
"upload_time_iso_8601": "2024-10-18T11:42:29.786569Z",
"url": "https://files.pythonhosted.org/packages/27/a6/eee752c9e74c11666e999346162737302b6561ba01f10036cd17924b6664/libmc-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "651f7c71b26d0d9cceb9b332c81df596ed94c63482484fde93ff5c4d93c12415",
"md5": "325654d298635fdd7351181c21a36553",
"sha256": "f3d5b9d09eaaf5123da4eee9bc0b08389d5ad335fcc60245e7c7f1f28b96ba82"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp313-cp313-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "325654d298635fdd7351181c21a36553",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 2617371,
"upload_time": "2024-10-18T11:42:31",
"upload_time_iso_8601": "2024-10-18T11:42:31.168515Z",
"url": "https://files.pythonhosted.org/packages/65/1f/7c71b26d0d9cceb9b332c81df596ed94c63482484fde93ff5c4d93c12415/libmc-1.4.8-cp313-cp313-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c89a5ea99279e41fbdc15770b80f187cb3bdaa7b42cc44fb8b9ac442509c6bb",
"md5": "ce798cae4b2c758807b25bed2f01c22b",
"sha256": "d3b46bb591e8667c8ab7214ca74e80939272ace5081c45302be6e987143ec8ae"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "ce798cae4b2c758807b25bed2f01c22b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 2571164,
"upload_time": "2024-10-18T11:42:33",
"upload_time_iso_8601": "2024-10-18T11:42:33.229718Z",
"url": "https://files.pythonhosted.org/packages/8c/89/a5ea99279e41fbdc15770b80f187cb3bdaa7b42cc44fb8b9ac442509c6bb/libmc-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5e48354b9a9d3eaf5edc3858f49a6bc6284d30986cf39664a878c4d0128775cc",
"md5": "e4faf8703db972bf2ef9b1f05e5996e5",
"sha256": "720facdcf6929a0fcd93c0720103765b70b8761a11caa0608e08a441fe1dd90e"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "e4faf8703db972bf2ef9b1f05e5996e5",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 1419148,
"upload_time": "2024-10-18T11:42:34",
"upload_time_iso_8601": "2024-10-18T11:42:34.790659Z",
"url": "https://files.pythonhosted.org/packages/5e/48/354b9a9d3eaf5edc3858f49a6bc6284d30986cf39664a878c4d0128775cc/libmc-1.4.8-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4556108d86343312c0591c80b2c61d9049e2b79fe4955054af888ed8620aa3d2",
"md5": "f2ec90c2771408e889d51559e31b9d39",
"sha256": "c5e5fac6b3efaa32900a2b1086cd7723f07cd77c909647bd99ef447b805cd766"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f2ec90c2771408e889d51559e31b9d39",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 1472759,
"upload_time": "2024-10-18T11:42:36",
"upload_time_iso_8601": "2024-10-18T11:42:36.726789Z",
"url": "https://files.pythonhosted.org/packages/45/56/108d86343312c0591c80b2c61d9049e2b79fe4955054af888ed8620aa3d2/libmc-1.4.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8d04d7b14ece6391e89e064afbf1449e02b8313f919248a2f7b4b4c2a967277a",
"md5": "3462d939ac1156a921a6a128fdf0a1bc",
"sha256": "bb5201879048ea92990b30ec53e1198c1265a4798ed0bbf7d5067cb591638d66"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp36-cp36m-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "3462d939ac1156a921a6a128fdf0a1bc",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 2492469,
"upload_time": "2024-10-18T11:42:38",
"upload_time_iso_8601": "2024-10-18T11:42:38.089557Z",
"url": "https://files.pythonhosted.org/packages/8d/04/d7b14ece6391e89e064afbf1449e02b8313f919248a2f7b4b4c2a967277a/libmc-1.4.8-cp36-cp36m-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "53f2b1d707d88aaf05a72d121bb4d0380461a4bd2cc34b23cc044a703aebd522",
"md5": "69c2377d82ebb937e8ddea11538113b2",
"sha256": "40cd95b70669fdf6b24cafe6cf10bf5442246c31380bf45fe8d2b6e55da95e82"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp36-cp36m-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "69c2377d82ebb937e8ddea11538113b2",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 2440389,
"upload_time": "2024-10-18T11:42:39",
"upload_time_iso_8601": "2024-10-18T11:42:39.422864Z",
"url": "https://files.pythonhosted.org/packages/53/f2/b1d707d88aaf05a72d121bb4d0380461a4bd2cc34b23cc044a703aebd522/libmc-1.4.8-cp36-cp36m-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2fdcfc23f051e142a186c65227769d4897ce5b697dbe066e6e717ff05d183075",
"md5": "49c98287e513d85f36ec1a2841253042",
"sha256": "fb9e5b2c99054d01f5bd8b4bf3aa61916341dd36807d34bded14f3d7b4d8c0bd"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "49c98287e513d85f36ec1a2841253042",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 1440243,
"upload_time": "2024-10-18T11:42:40",
"upload_time_iso_8601": "2024-10-18T11:42:40.792765Z",
"url": "https://files.pythonhosted.org/packages/2f/dc/fc23f051e142a186c65227769d4897ce5b697dbe066e6e717ff05d183075/libmc-1.4.8-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ef1e147002b471fb82922e69e3ef84922c15e652434dc64b058458774bd01de3",
"md5": "97edb820560329ddcd41c1a6fa888cd9",
"sha256": "bdd3aa5818a7b26975e4b4893aaa56e76abf2770fcef1e331847973dbb46678f"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "97edb820560329ddcd41c1a6fa888cd9",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 1491858,
"upload_time": "2024-10-18T11:42:42",
"upload_time_iso_8601": "2024-10-18T11:42:42.218508Z",
"url": "https://files.pythonhosted.org/packages/ef/1e/147002b471fb82922e69e3ef84922c15e652434dc64b058458774bd01de3/libmc-1.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d76e28ed518a9872bcdf58065db3bf3747441e97aeba4095f45f93f3b624eb6b",
"md5": "0194d05aeaa9c3ba0613d6ebb1e30ce0",
"sha256": "0dee7c13866cbacdf0b63270401a7fe7bd41fdf72c26a509d4ff0729e1fc0472"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp37-cp37m-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "0194d05aeaa9c3ba0613d6ebb1e30ce0",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 2502197,
"upload_time": "2024-10-18T11:42:43",
"upload_time_iso_8601": "2024-10-18T11:42:43.587658Z",
"url": "https://files.pythonhosted.org/packages/d7/6e/28ed518a9872bcdf58065db3bf3747441e97aeba4095f45f93f3b624eb6b/libmc-1.4.8-cp37-cp37m-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4f8e5d45dda2b9bad73b0b1b03d3acb8b3ec42c76b080da86f9233717f37ec0a",
"md5": "6e239ad02195f0e72e6dea5e8f761924",
"sha256": "6df4d873f6c1ad1b34334275089aef02d5931011889c6cd46564cfa8812654a7"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp37-cp37m-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "6e239ad02195f0e72e6dea5e8f761924",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 2453913,
"upload_time": "2024-10-18T11:42:45",
"upload_time_iso_8601": "2024-10-18T11:42:45.579325Z",
"url": "https://files.pythonhosted.org/packages/4f/8e/5d45dda2b9bad73b0b1b03d3acb8b3ec42c76b080da86f9233717f37ec0a/libmc-1.4.8-cp37-cp37m-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "402db7b55f1632443de61b9ba72cfddf9e3b8395bb64b773fa7644a8eca5af18",
"md5": "865c0c29f107cf4f742405893db7f269",
"sha256": "bc0b013698e6084eb7ea423f07f16ad444a4b10be0767c38619b85a50421a35b"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "865c0c29f107cf4f742405893db7f269",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 1525740,
"upload_time": "2024-10-18T11:42:46",
"upload_time_iso_8601": "2024-10-18T11:42:46.865178Z",
"url": "https://files.pythonhosted.org/packages/40/2d/b7b55f1632443de61b9ba72cfddf9e3b8395bb64b773fa7644a8eca5af18/libmc-1.4.8-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a8b476a7a81d57a643561b7cc73a600e13b5962810acf9bbb037f31d0ed9a52d",
"md5": "37ce126179f520c5a1d8506b3a3f1a3a",
"sha256": "1c5af99e744c9b0e1fb4cb6e2aba625d19dd845631c4856e46fde9eded98c265"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "37ce126179f520c5a1d8506b3a3f1a3a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 1577914,
"upload_time": "2024-10-18T11:42:48",
"upload_time_iso_8601": "2024-10-18T11:42:48.172397Z",
"url": "https://files.pythonhosted.org/packages/a8/b4/76a7a81d57a643561b7cc73a600e13b5962810acf9bbb037f31d0ed9a52d/libmc-1.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1fb0fe888d0b8787eca67128a589a753808a21d176050a5ca1a91206fa66755a",
"md5": "0fd9edc1691e811db3ff439fbc6fe6b8",
"sha256": "18f5464329923b69fc3fc22a50fb2a17c277b6ce614634a6bbf40bd71166cf2c"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp38-cp38-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "0fd9edc1691e811db3ff439fbc6fe6b8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 2592622,
"upload_time": "2024-10-18T11:42:49",
"upload_time_iso_8601": "2024-10-18T11:42:49.361870Z",
"url": "https://files.pythonhosted.org/packages/1f/b0/fe888d0b8787eca67128a589a753808a21d176050a5ca1a91206fa66755a/libmc-1.4.8-cp38-cp38-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ef776c50a401615c7bd4116e7cc0dc168b8722f1dab371dd215812983155396b",
"md5": "e581b18ad6bb650c82b3fcabc3f71a3d",
"sha256": "7a1788fc75999ca0321c8d72aca7ed33cbc5aaf5bbd5f4ffea058cda4423450b"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e581b18ad6bb650c82b3fcabc3f71a3d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 2544105,
"upload_time": "2024-10-18T11:42:50",
"upload_time_iso_8601": "2024-10-18T11:42:50.814849Z",
"url": "https://files.pythonhosted.org/packages/ef/77/6c50a401615c7bd4116e7cc0dc168b8722f1dab371dd215812983155396b/libmc-1.4.8-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "654b9b03c074c25679829864a2d5242818f4957a0a04c703d634878f11cb6f6a",
"md5": "a88bb29228806b7c5389709c19ab2a53",
"sha256": "46b1934d4e043a9b41ec55084b2462260b7afea5f7a153df91d696fb366a62f1"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "a88bb29228806b7c5389709c19ab2a53",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1508174,
"upload_time": "2024-10-18T11:42:52",
"upload_time_iso_8601": "2024-10-18T11:42:52.943529Z",
"url": "https://files.pythonhosted.org/packages/65/4b/9b03c074c25679829864a2d5242818f4957a0a04c703d634878f11cb6f6a/libmc-1.4.8-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fd8e3842eba87a0b3c0a4d7c935eed67b065d5bda9a523d6afaee946b9d0bd4c",
"md5": "e659e91a349043b7ba4a53c048fd6faf",
"sha256": "5c4a5b12bf2c6b3eb875cbbfceaaa50c72c3c1bc87c5670a0d0cfb0bd0780bd3"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e659e91a349043b7ba4a53c048fd6faf",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1563176,
"upload_time": "2024-10-18T11:42:56",
"upload_time_iso_8601": "2024-10-18T11:42:56.965221Z",
"url": "https://files.pythonhosted.org/packages/fd/8e/3842eba87a0b3c0a4d7c935eed67b065d5bda9a523d6afaee946b9d0bd4c/libmc-1.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "db1ff6afbe5bb25a8ae1630ce71f8ba6e40a1da8b934caca3ad77310f411137c",
"md5": "b666cf00320b15516d57251e53d53c3f",
"sha256": "b640a2b4b131833d84b90eb37175e4963f23e42bb5d7bbc8e10ccfffac74c0f7"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp39-cp39-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "b666cf00320b15516d57251e53d53c3f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 2565530,
"upload_time": "2024-10-18T11:42:58",
"upload_time_iso_8601": "2024-10-18T11:42:58.919205Z",
"url": "https://files.pythonhosted.org/packages/db/1f/f6afbe5bb25a8ae1630ce71f8ba6e40a1da8b934caca3ad77310f411137c/libmc-1.4.8-cp39-cp39-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1e3be2ca7df6a25e1039d4bdcd23a23824888fa8ca76010a2daa561effb820de",
"md5": "90d5c37b723c34a27780cd4e3e2555c0",
"sha256": "6b70e8db82aa1ecd71273e4a60397a55da9605b6b11a0fbdef91c5a9f68db524"
},
"downloads": -1,
"filename": "libmc-1.4.8-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "90d5c37b723c34a27780cd4e3e2555c0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 2513917,
"upload_time": "2024-10-18T11:43:01",
"upload_time_iso_8601": "2024-10-18T11:43:01.119647Z",
"url": "https://files.pythonhosted.org/packages/1e/3b/e2ca7df6a25e1039d4bdcd23a23824888fa8ca76010a2daa561effb820de/libmc-1.4.8-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4431c4003c6ff0b0f515fb375bfe23d0b6f48c9d5214eba29c03c610838b81c0",
"md5": "453f43a9caa1d637af5c3039c6681fd4",
"sha256": "e62bd49c793c085398bc49a60173ef4d586141e042d7c8c91587e9dd0230d59c"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "453f43a9caa1d637af5c3039c6681fd4",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": null,
"size": 196998,
"upload_time": "2024-10-18T11:43:04",
"upload_time_iso_8601": "2024-10-18T11:43:04.869594Z",
"url": "https://files.pythonhosted.org/packages/44/31/c4003c6ff0b0f515fb375bfe23d0b6f48c9d5214eba29c03c610838b81c0/libmc-1.4.8-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f36c144cfdac20eca4de4a5fbbb92853e872e87895e8f0d553d13f981a196819",
"md5": "f8b088663379c8b02bf26291bbf1eb27",
"sha256": "76e03b91c8e33ffedb98184e9f97e2b59e04383fb3eb93c8a163e9909748471b"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f8b088663379c8b02bf26291bbf1eb27",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": null,
"size": 190066,
"upload_time": "2024-10-18T11:43:06",
"upload_time_iso_8601": "2024-10-18T11:43:06.076163Z",
"url": "https://files.pythonhosted.org/packages/f3/6c/144cfdac20eca4de4a5fbbb92853e872e87895e8f0d553d13f981a196819/libmc-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "272e214f99e311e8e15ee3f61d1c96097d61efef313bf6c25744bb013f17a1a9",
"md5": "fa8ac229c783d5f1059bef4a770e2ae5",
"sha256": "d575c515289f0c464bd47a97e3b47a13cbb98010a5d8dc24f4946bcd56c9963d"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "fa8ac229c783d5f1059bef4a770e2ae5",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": null,
"size": 202087,
"upload_time": "2024-10-18T11:43:07",
"upload_time_iso_8601": "2024-10-18T11:43:07.185567Z",
"url": "https://files.pythonhosted.org/packages/27/2e/214f99e311e8e15ee3f61d1c96097d61efef313bf6c25744bb013f17a1a9/libmc-1.4.8-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6555dd545dc11d9e8abae7c5a0768684d0bd6f66a47a94ec55403d2c2fcfe37f",
"md5": "4df5cc4fc1e762529e0872b0e232c85d",
"sha256": "e54e445d1c99d2d5bcaf1fb52a8edbf5886e24a9f335d9e273f78cd5db4d8acb"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4df5cc4fc1e762529e0872b0e232c85d",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": null,
"size": 194707,
"upload_time": "2024-10-18T11:43:08",
"upload_time_iso_8601": "2024-10-18T11:43:08.265585Z",
"url": "https://files.pythonhosted.org/packages/65/55/dd545dc11d9e8abae7c5a0768684d0bd6f66a47a94ec55403d2c2fcfe37f/libmc-1.4.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "51a4b36d54b3c6e8774389279c7b09aeec74378bcb846fe22a156f6bbcd699bb",
"md5": "69c8be2eb18c3805ddbfb7f852b4b896",
"sha256": "529519f987e58b887310d616c7dadbc130c461a0c0324e847d2c963851a96c6b"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "69c8be2eb18c3805ddbfb7f852b4b896",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": null,
"size": 199314,
"upload_time": "2024-10-18T11:43:09",
"upload_time_iso_8601": "2024-10-18T11:43:09.708003Z",
"url": "https://files.pythonhosted.org/packages/51/a4/b36d54b3c6e8774389279c7b09aeec74378bcb846fe22a156f6bbcd699bb/libmc-1.4.8-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "22cb4cb522ce066fd02aacce593f0c9bf849bce63606a3f0d381cb2d2588127a",
"md5": "34f32cba82d2b20bd6eed312c2821ccf",
"sha256": "af68de8c0487a3caa12c6d19ed422a40a0d598612aa899e1899944a7d02462d5"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "34f32cba82d2b20bd6eed312c2821ccf",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": null,
"size": 191821,
"upload_time": "2024-10-18T11:43:10",
"upload_time_iso_8601": "2024-10-18T11:43:10.759243Z",
"url": "https://files.pythonhosted.org/packages/22/cb/4cb522ce066fd02aacce593f0c9bf849bce63606a3f0d381cb2d2588127a/libmc-1.4.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "74631188429de448567d6f9d7596b2ad2b552d630735c98fd2873817bdca03b4",
"md5": "d56322cbebf46a71ddabdf36434118ce",
"sha256": "9332851744e329413ac52477d07db5888c0f07100acc879b5e54bd244813e40b"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "d56322cbebf46a71ddabdf36434118ce",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": null,
"size": 197140,
"upload_time": "2024-10-18T11:43:12",
"upload_time_iso_8601": "2024-10-18T11:43:12.630096Z",
"url": "https://files.pythonhosted.org/packages/74/63/1188429de448567d6f9d7596b2ad2b552d630735c98fd2873817bdca03b4/libmc-1.4.8-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e54e9c64051abf7c1fa0714681b6bc509e72660b67f5184e054571b2584fe55c",
"md5": "199207a21654e8a3731c5eb30247ed9c",
"sha256": "2aa0a6e6b1026bbcbe521be015a0ba2e4589da0a4f03ae3a0db3f72111d7b292"
},
"downloads": -1,
"filename": "libmc-1.4.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "199207a21654e8a3731c5eb30247ed9c",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": null,
"size": 190199,
"upload_time": "2024-10-18T11:43:13",
"upload_time_iso_8601": "2024-10-18T11:43:13.882993Z",
"url": "https://files.pythonhosted.org/packages/e5/4e/9c64051abf7c1fa0714681b6bc509e72660b67f5184e054571b2584fe55c/libmc-1.4.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-18 11:42:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "douban",
"github_project": "libmc",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "libmc"
}