Skip to main content

A Cython Version of c-ares

Project description

PyPI version PyPI - Downloads License: MIT

An Upgraded version of pycares with faster and safer features.

Installation

How to install

pip install cyares

How to install with Trio bundle

pip install cyares[trio]

How to install with optional IDNA Plugin

pip install cyares[idna]

How to install with optional aiohttp extension

pip install cyares[aiohttp]

Installing all bundles

pip install cyares[all]

Small Examples of How to Use

from cyares import Channel

# NOTE: Dns Queries contain a Future object
# This is a little bit different from pycares 
# Handles were used to prevent new or unwanted vulnerabilities along
# with easier control given to the user...
# The Future object comes from the python concurrent.futures standard library

def main():
    with Channel(servers=["8.8.8.8", "8.8.4.4"], event_thread=True) as channel:
        data = channel.query("google.com", "A").result()
    print(data)

if __name__ == "__main__":
    main()

In Asyncio

There's a module for an aiodns version if aiodns were using cyares.

import winloop # or uvloop (asyncio will also work) 
from cyares.aio import DNSResolver

async def test():
    async with DNSResolver(["8.8.8.8", "8.8.4.4"]) as dns:
        data = await dns.query("google.com", "A")
    print(data)

if __name__ == "__main__":
    winloop.run(test())

Trio

Trio is now supported as well which means this library is not just limited to synchronous python or asyncio.

from cyares.trio import DNSResolver
import trio

async def test():
    async with DNSResolver(["8.8.8.8", "8.8.4.4"], rotate=True, event_thread=False) as dns:
        result = await dns.query("google.com", "A")
        print(result)

if __name__ == "__main__":
    trio.run(test)

Aiohttp

Using Globally (Monkey Patch Method)

install() applies a monkeypatch globally Know that if you wanted to use different resolvers with aiohttp you can do that by passing CyAresResolver through to the ClientSession. another way to avoid install() not being threadsafe is by installing before the rest of your code begins running. Same as how uvloop and winloop both work

from cyares.aiohttp import install
from aiohttp import ClientSession
import asyncio

async def main():
    # CyAres should be monkeypatched to be the default 
    # DNS Resolver for this http request
    async with ClientSession() as client:
        async with client.get("https://httpbin.org/ip") as result:
            data = await result.json()
            print(f'YOUR IP ADDRESS IS: {data["origin"]}')

if __name__ == "__main__":
    install()
    asyncio.run(main())

when your done with an evenloop run and want to rerun another but with an alternate dnsresolver such as aiodns or the ThreadedResolver use uninstall()

Using Non-Globally

Although slightly more tricky it is possible to pass along CyAresResolver with the right setup without resorting to install(). This will also work with aiohttp_socks or using aiohttp_socks with a proxy or tor or i2p. If you feel uncomfortable with sending this much stuff to ClientSession yourself it's encouraged to use globally with install() or via monkeypatching aiohttp's default dns resolver in your own way.

from cyares.aiohttp import CyAresResolver
from aiohttp import ClientSession, TCPConnector

# NOTE: This should also be respected when aiohttp_socks is in use
# Such as the ProxyConnector which is another connector type of it's
# own

async def main():
    async with ClientSession(
        connector=TCPConnector(CyAresResolver()
    )) as client:
        async with client.get("https://httpbin.org/ip") as result:
            data = await result.json()
            print(f'YOUR IP ADDRESS IS: {data["origin"]}')

In Cython

from cyares cimport Channel, Future, AresError


def dns_resolve_a(str domain):
    """Resolves IPV4 Using cython"""
    cdef Future fut
    with Channel(['8.8.8.8', '8.8.4.4'], event_thread=True) as   channel:
        fut = cannel.query(domain, "A")
    return fut.wait()

Story

As Someone who as recently started to contribute to projects such as aiohttp and a few of it's smaller libraries. The asynchronous dns resolver aiodns that aiohttp can optionally use, felt like the oddest one in the group. With aiodns using pycares under the hood I wanted to learn how it worked to see if I could use my skills to optimize it like I had previously done with propcache and multidict as well but I soon came to learn of it's many problems and when pycares started to hang on me with lingering threads when it ran, something didn't feel right to me and it lead me down a very large rabbit-hole waiting to be re-explored.

Pycares was quick, dirty and fast but as the years of it's existance went by something wasn't exactly right with it and it could use safer features, better optimization and safety practices. While cffi might be both quick and easy to use I didn't see the benefit of using it. The many vulnerabilities it was getting told me something needed to change if not big. With Pycares reaching version 5.0.0 I wanted to celebrate it the same way node-js celebrated the 10 year annversery of the original http-parser. Write a new one.

The Rewrite

While contributing to the aio-libs repos whenever I had a gap of free-time on hand while waiting on a question to be answered and when my other python libraries felt stable enough such as (deprecated-params, aiocallback, aiothreading & winloop) this is where I spent my time on. It had a total of 3 re-writes until I was satisfied with the result. Turns out just doing everything in small chunks makes all the difference.

It only felt right to me that migrating the library from cffi to cython would be the best solution to the problem. Not Rust or C, just pure-cython and small amounts of C whenever nessesary and re-changing many of the internals to incorperate a safer approch. The reason for not picking Rust is that there wasn't nessesarly a need to be memory-safe. What I cared about was speed, when people are doing DNS Lookups, speed matters and Rust did not have a friendly enough archetecture that would set a future or allow me to access the parent from the child.

There was no better canadate than to move to using handles the same way uvloop & winloop do it and having authored one of them I was familliar with this concept.

The idea was not to reinvent the wheel rather move parts of the library over in chunks and look at pycares for clues on how certain things should be laid out. At the end of the day, Pycares was the blueprint and using concurrent.futures & Cython was the cure. Py_buffer techniques brought over from msgspec were utilized incase users were planning to use any bytes or string objects of any sort and I made sure the license was on it incase users wanted to know where it came from.

If there was a deprecated function with an alternative & safer approch to use I felt using it would be a better move. For example, servers are now set with the csv functions rather than the original setup and because of that change you could now set dns servers in url formats and I might possibly look at adding in yarl to be the cherry on top for those who might wish to get real creative about dns server urls.

Moving over the ares_query function to use the dns recursion function is planned for the future (maybe after I do the first release of cyares). I still wanted to retain the original response data it gives so that migrating from pycares to cyares wouldn't be a pain to anyone who planned on moving and I also didn't want to take away from pycares either if you prefer using cffi over cython the same way curl-cffi and cycurl were both done. I have my fingers crossed that aiodns will adopt this library in the future or allow users to choose between pycares and cyares.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cyares-0.2.0.tar.gz (718.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cyares-0.2.0-cp314-cp314t-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14tWindows ARM64

cyares-0.2.0-cp314-cp314t-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

cyares-0.2.0-cp314-cp314t-win32.whl (1.1 MB view details)

Uploaded CPython 3.14tWindows x86

cyares-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

cyares-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

cyares-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

cyares-0.2.0-cp314-cp314-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows ARM64

cyares-0.2.0-cp314-cp314-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.14Windows x86-64

cyares-0.2.0-cp314-cp314-win32.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86

cyares-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cyares-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cyares-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

cyares-0.2.0-cp313-cp313t-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13tWindows ARM64

cyares-0.2.0-cp313-cp313t-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13tWindows x86-64

cyares-0.2.0-cp313-cp313t-win32.whl (1.1 MB view details)

Uploaded CPython 3.13tWindows x86

cyares-0.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

cyares-0.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp313-cp313t-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

cyares-0.2.0-cp313-cp313t-macosx_10_13_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

cyares-0.2.0-cp313-cp313-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13Windows ARM64

cyares-0.2.0-cp313-cp313-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.13Windows x86-64

cyares-0.2.0-cp313-cp313-win32.whl (1.1 MB view details)

Uploaded CPython 3.13Windows x86

cyares-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cyares-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cyares-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cyares-0.2.0-cp312-cp312-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12Windows ARM64

cyares-0.2.0-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12Windows x86-64

cyares-0.2.0-cp312-cp312-win32.whl (1.1 MB view details)

Uploaded CPython 3.12Windows x86

cyares-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cyares-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cyares-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cyares-0.2.0-cp311-cp311-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows ARM64

cyares-0.2.0-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

cyares-0.2.0-cp311-cp311-win32.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86

cyares-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cyares-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cyares-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cyares-0.2.0-cp310-cp310-win_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows ARM64

cyares-0.2.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cyares-0.2.0-cp310-cp310-win32.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86

cyares-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cyares-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cyares-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cyares-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file cyares-0.2.0.tar.gz.

File metadata

  • Download URL: cyares-0.2.0.tar.gz
  • Upload date:
  • Size: 718.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f34259d9d4e6b45dd404f201451c79d7a5710d55bc0df5a86de48a114426316d
MD5 d55560829df4900b9ba5ce4bab5622f6
BLAKE2b-256 cf2803c1c51b44a9b3bd9800b7ea4df7a803ae70da7c908e60bf62881e918ff3

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 46ae6f25e6ce2fb2d1e63f871b155292f7cf71b711c2958ea375cf92becbcd7d
MD5 b997356ae286eebdc546bf41927b4e14
BLAKE2b-256 8275b3468190cd9f7f15a8119baf52d841b10c55f352f5d1e5f5d18dc700f766

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e48892268a710fb694ada1a2c073aec74d639aa49396725dee492d338b4c6b14
MD5 7327b7d08f6582dde2a10ec27975f7c8
BLAKE2b-256 d0f8eeb25e5be232fd5d54b16cc50fe2147547fca8e2b958c09d294acf0ec375

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 54e1c6054b79741f4821a89ba85b207ca5c18d2b816dff8a035431e7e90e3dc8
MD5 c1133ae868298f6ba6f26186040a2ccd
BLAKE2b-256 42003e82d35ea29497c7ca3df6b1f974a24e2d470f11d00cb5007cac1c45e55b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c5bd29111507db2e619aaa6a9721254ec7de7c997c5668586fe034068869444d
MD5 93cc6850e8dcf13065b7d0b9072a3b26
BLAKE2b-256 255c2d1a6e8dc1903bee54d4f313834660d0f825f0e4eda5005f9b5e033c9e82

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5d0307521033f50d1be905f02779d1a4088ed84515b8b7b61898e993860cf41
MD5 5cdb70b4c789d46bcb65959e5db40e6f
BLAKE2b-256 7449a86f0e25b033dc5bd9383f7a8dfc8c77a59fa6e720e08aeb52b9141f5cc9

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23c5c49641d6a6d69987b3910f910d99808eb75914242c67ecb1c6c7f10f4c97
MD5 b3828b104abd66eab0fb9c9b6aa97f4c
BLAKE2b-256 915b04127faaab9152221e5568cf39114c89ba9cdf8c8c3570ca92b73535860b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1ec6669ddadca3342d6fdd01586f2c8d28b4145c6e5aad577aed3c5265bbba7f
MD5 03b69dbb8ee9f086005476453f94f721
BLAKE2b-256 ddfcc4e77fa41fd150f9b9d57dca3b68c18435cc7a8fd87756e2dc2008f79e81

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 68e2bc3a34ac74ed381dbe5d11f14e875b7cc27a78f14a28ebfa4aaafc44c12d
MD5 862b92c858f23ea6c25383c5efa3d416
BLAKE2b-256 44ff76dc64d88c105c44582a32bd58d28053c9794a47ac0c90b689c29b03e57f

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7e67a4c8b0ec577e7cbd279a5b17d5fa3637e3a27de14329533d62310c23613f
MD5 5f6b5fcbc7e6dcd0b0806f05a1960872
BLAKE2b-256 c2451bb789f544f82cc25bf5e431da9e00d3958d201d64ce6e3480c8a827dac9

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 7cc44e375ef36148b1fa818f528b166866014cb869350baf807d17c458c32bc3
MD5 36f19b9066934171ecb4325c485ff5d0
BLAKE2b-256 1363f1f19686e31e1bfef7de6faea92158e6edc88064f6eb269968b2b97caa75

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed8218c629c1409a0f6f75cbc95239e318cd861e1e8dd1f2166b2c2668402013
MD5 4076a4d76db5543a5a8ff8310d9487a4
BLAKE2b-256 9dc0c70edf97c62b172318d40065f21531f364942ee9cde4819fb2d81a0a0e6b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fff62473a27d8c259951a50101b00f378c13adaed8c1a122163fcf5fb1eaf56d
MD5 fef8e78bd174b5e2f6a7c977637bd61c
BLAKE2b-256 ae64d0b337540306929ab3aaedfb3ff2a6ad5d711fcae81f272dce79d9dac68b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbfcf988e2e9d8a999d4ac64617089a6fcf364fcb2dddb400c106f3fba9e8d80
MD5 0f6912f4a59572e1a6d390fb96009af6
BLAKE2b-256 bf785d0827484ed2742d66d3f45c9ca02fae74888f951bbc336873c9248649d0

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 27d1bb8478584a9bae8424242c5932fe30654df4fcb5051339236eba56481074
MD5 15858ae75373c30cfc3e107ec54b8b8b
BLAKE2b-256 0e99833728db7ddb82b6e76455e1ba78354d794341cf4ccf7835d20a712049ae

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 6b99b9879023172787cf9ff440be20b865025d10a982557fedc1a00cdccc8392
MD5 60d41c55645cc7d767b28c3e500c4915
BLAKE2b-256 3ea1c312ade84858cf9d26769e1cd87275818d8826d1b1ca6c398c3ba5bdc9e0

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 ae2e80b7fbc845835c9317723e092253544eedf94f59ef96790843c04ef0d841
MD5 9b31e57d00e3574cc18647145bb631b7
BLAKE2b-256 b68cff242f5b852dd3daba99719574060ad4698fcbeaae3d9336fcb4354b8fc7

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313t-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 968c52d3a6ccf0fd8a892c122997566f0af74bf888e06db12433184925b8d8e1
MD5 7f3737b357be52d41aa3c97ec22656fb
BLAKE2b-256 7b6cf2970fe9b6ce965e89cf8e1405ca2f870588539e8839e82e6a0ea1232fba

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 372a49982989bd4266821873571a304293f186e9d0875dc431588c6f65f55a25
MD5 5a39d59dfe231eafc82e189cc04bc148
BLAKE2b-256 5a63ca4a7b7583cf4428feee4efdbbfadc218023f30a3cb728508eaa6b0b3041

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8d480db92aa435cdf0bc12df81fc50b220a138a82e11416c7ab7cf8de5eb83ea
MD5 e87cfd7224026d9e863041b930ee1c60
BLAKE2b-256 31d776d3c167e952c13005266390bcd01907fc8c11f8ee1d9d4a3ce03dd67cec

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22320184080518e7be73db8cd003860776d052f1280e0dcea56e30948283aef4
MD5 4d51fe4fee994d5ccd4ee1a8e1387c97
BLAKE2b-256 cf381ab7835f8ff6768e53c6d6f519cc701f3e28ff6c0a632acf418c2fa989cf

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bcf97f3977aa2757730ecb2c9723f949615a5a89f5643a5e0cea10f23cfd360d
MD5 9c5ce6898015f8d39b6a0c46382287b8
BLAKE2b-256 415d35cbaa8fd924b9960a345bf1db3e1f45fdf6ca1d0f61395484b1ca9ea9a2

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 99c9dfa75c2a78a329ae8b356d0b64044bbfc16141405083d7912c4aa08e008f
MD5 98e0afbeb2f3a9872ee65f892c0e15a4
BLAKE2b-256 ebad48f74f6e7842b6f33bd8b5c734a7c657ac340cd7ee5e1efdf9f01e6f78c7

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 603b69fd9e86236b5656e163a1a5b61cc1a083833d64521e6e04cb00de788c1f
MD5 109a8952b808a17d764e84b892bad909
BLAKE2b-256 d4c333055526df4bce78ff8997a81276c21d87f391c97b45f69eb60f9458e5dc

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 df80f1600aaea78a5ad73982f483abaf7105db51ee39be63cb0abee60c8c499e
MD5 442a73a8de47d5a36d118f2b62096946
BLAKE2b-256 a58e51fba7fb208089348c3f4c6da223e28f8ab458ace4db719ada7e5cdb080b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dda41c811e73d9a06f0bcbcad66ee399ec31fe193e62f191cc5801512a445b5b
MD5 6cbacf1151b62e7b043d82229f58e4ca
BLAKE2b-256 7e08923a2337ea3be57beaf1f7231e28a0699ad8bce7aca6d88148d255231f0a

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b53f63792a184bd1453280817bd5ad0af392b4a192c11e5f397a02cfccb3904
MD5 8334d294ac5d3b25e2327e4a5697f312
BLAKE2b-256 cf21e2482e8663501917b8f547ebc4b727323813de37db04cc08cdb82f089d4c

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfc0a4f2f16d25f1b549b5fbf76b3db985588d606d9aa3493f626b592c2d76a8
MD5 841780ff3060fd036bbfd6ee9fe80ed8
BLAKE2b-256 dec771e226c2677a5aad3dc1074e838e0ffb8b3d67e9ca72a01a679a52cfae2f

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5e79e926a9b32f966ba6b694d5f3073ade680b9c82b8ec2af123c4a380d6e2e5
MD5 45c64f8bea59b4753d91936cc88f4a97
BLAKE2b-256 d3e8482f930fb62fa6fc6cdeff174e424a4e3cb8c749c394b43837d85531e946

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 8b779729c254001e3c2ee07f7e2055ad9d761eb57bbd64a0496715a506a57a58
MD5 91341db4c595830b519b673b206e62f3
BLAKE2b-256 0c2bf1ee2f649c817d63e5bd5049eaaca8f1d6b2597001350464bcb34947600b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e52d22d04b51f5bb58f77d7b1571ad624ecc10e1c65090104a3fbfe44fce47f4
MD5 f5a9293bee480aa94ed4aa110f95f393
BLAKE2b-256 5ede02f45ed294c770796d8fae42859a6c124953b5993c73cf146a901ddceb38

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 4d0720c6d4c82e60f436312516d7ca242e8c66f1a388814a4fe3a9d03b7ba7ce
MD5 6dfda37726e82601cedbd0d301351a9c
BLAKE2b-256 87528a440806d866dfaecd679de65714539ecab5bd5562ea815c7b199c10857e

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1d59874dc05e52d890746c2bb6bbfa0fe84633b87e6678c666d6e363453c1949
MD5 f8f34017fceedef3c318f3eda17a7aff
BLAKE2b-256 19ccd8caa7fbe600676c1ca8aa77d3047f3f202a3e76bad26443b5aa366acd5e

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08cdd1d0cf61c2727870b9f7c9ad01158255d57f9911a590a16c0f672545e606
MD5 c254059b9bf1a272d1f2060136b80f11
BLAKE2b-256 73bc4d21deffcc3803e531e8ee060ceb38080b95476a50e761b627dcb15866bb

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2246bf1a772a62027dae0ec1e0a4ca3d2284987002e3a644188d8dde907d0ec7
MD5 cfb6915169372ce1b67313983eb4e032
BLAKE2b-256 f0ae3536f68ea1b830ff4fd9de0ecda091eb430e9ac152ffe1fee40df2aef0b6

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 67f740c353c1fec7af5e37684ac1f78362fcfcb155b09227e07af7c8bce179ac
MD5 542f81500b807c4d2e434e92827749df
BLAKE2b-256 79a7132080d79bba522556f39453cd37d88c06ffb41e918ec503687a50a1ebee

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 a5226e97ed396de4178eba028d3f911380d77e65df784d56a6636f89e66e88ab
MD5 9c3dc72a9dc2553fd523d7e601398401
BLAKE2b-256 8f3c32c876d49eb19ab3ac964be69c3a00c59130f6c249dc2943e63a712a9f77

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a1f1d83896721ede4fd765a93cadead8db725ed6a66c33e7447ff76b9ed578a4
MD5 7b3e41deb337ba02d487ff10949f3f22
BLAKE2b-256 614eaacceb6fb08276328d136d02097e45731759f0f30d938ebe6e2aca39bc27

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 dbe0b38d7ec327b025fed90f8f6219970a6a0bfd2e2a22a6652474cd954c8952
MD5 36e9baf0b019793c4ad8f1284c323b56
BLAKE2b-256 61d1a5d9bd7bbf9c0a2e36cd8997e45513d8ffa931c8f5626ee6c7eca19a2309

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 90bde5eb867e86697af07cfa54a5e273499bce56869fb1a9f344b58f29f0c77d
MD5 d61541ec577b062b0de5bd949748ed72
BLAKE2b-256 91ce8e158abf16f82b7e75407081dc7d8656a2b2fe0f42e7e4e39a95dbe16892

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20a68b1f7351b34867966330546fbb470a64cb7efd17328a626c6dc6c97969b5
MD5 7884fbf89e83fd45276189a5cb9be817
BLAKE2b-256 5a04d2662cbc7ae3989c206edcdeea952ffbe04b63ca781b30c7444c2e9d3f17

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b896d291f62ab760c854187b4df72d30c31578d868107432d3fce2cd2c323076
MD5 d1c3b09c0a8c762b96920a437656743b
BLAKE2b-256 bd3a05d81805349847c4a278e3175090d5ab6b012f0a21f57843946328045313

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 516a9daa6258f04f4869752c800380e3ef21b6bc3547820a24483885785ac286
MD5 3b256a95e50ae9e483107c1b0135719c
BLAKE2b-256 e0e0bc2b603d93b267a818ec271b20b0794324eb767a01e3fbe8b2e1c74a0ea7

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 09a8325d36637b2cf9d90776118519b2fe39d57f39886ef76c96036d075d224e
MD5 17d8a2ad38bc19b1e843bb5d90ecb822
BLAKE2b-256 014555e83673006063544ebbb1d2d55b9c4883adf57dd716aaee74ffc0af2d72

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cyares-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ad3c74df99b816f6af5a126ed9a143ae0504afe3dd67143d5b61604c93c0ef45
MD5 04584284837fa0357aea8c2b0113f816
BLAKE2b-256 420a4765f7a9b1d5b84b1e4c7a59509da5e5c70e85085f517f2bd97d8289313c

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: cyares-0.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cyares-0.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 57ab07e95d9f66f7f63784d9485720c3e75359921803d6de8e82b7c072da60e5
MD5 ae4edbf969cdc4a7936c8d7ac5747ef3
BLAKE2b-256 19c31b012e9fdf7fc24cb4b36ac7a7be7c2a6b29d49bd0a83f234fd9c551696d

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 61102b00753591ec89564b1b35778c1c0885ace7b18ba653f68c68a0f873c6f2
MD5 6e5d5f25aba150e45533dd728900dd82
BLAKE2b-256 b8d52c6e798362b5e8946d9a3a493edf61f8b176e4188c6607f81e2006eb5919

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b6869fb5f4436dd05f68495a86a066f9773df7fa80152dcd27e5aae6630a1dc6
MD5 295928f776452d5682db1b16027d157f
BLAKE2b-256 72a5f0a495608d6feebfa8e63d03f55a8dc8112ea7344e974443510269abd739

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb4a00614313414653e4ee73e18da3ab4b67065e1f698c0f2d3de12954ccf86c
MD5 601d0b81188c269e9c2f6dcc935c2437
BLAKE2b-256 bea973daebd099482b8cc35997521a7989c43c7e3285c48f896bbef1a153f02b

See more details on using hashes here.

File details

Details for the file cyares-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cyares-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 21758b56e38f6e366e484a7d887a8babd8d42a9cacb4a63eadb0e2eef6037b99
MD5 d5fac7ea3150857de0c49d0cc9a7388e
BLAKE2b-256 f1a11bd899f22adefc5bd5fae85da315efd31360524dad9c4a0ff908a9623bfd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page