Skip to main content

Python interface for c-ares

Project description

Looking for new maintainers

https://github.com/saghul/pycares/issues/139

pycares: Python interface for c-ares

pycares is a Python module which provides an interface to c-ares. c-ares is a C library that performs DNS requests and name resolutions asynchronously.

Documentation

http://readthedocs.org/docs/pycares/

Bundled c-ares

pycares currently bundles c-ares as a submodule for ease of building. Using the system provided c-ares is possible if the PYCARES_USE_SYSTEM_LIB environment variable is set to 1 when building.

NOTE: Versions prior to 4.0.0 used to embed a modified c-ares with extended TTL support. That is no longer the case and as a result only A and AAAA records will have TTL information. Follow this PR in uppstream c-ares, looks like TTLs will be added: https://github.com/c-ares/c-ares/pull/393

Installation

GNU/Linux, macOS, Windows, others:

pip install pycares

FreeBSD:

cd /usr/ports/dns/py-pycares && make install

IDNA 2008 support

If the idna package is installed, pycares will support IDNA 2008 encoding otherwise the builtin idna codec will be used, which provides IDNA 2003 support.

You can force this at installation time as follows:

pip install pycares[idna]

Running the test suite

From the top level directory, run: python -m unittest -v

NOTE: Running the tests requires internet access and are somewhat environment sensitive because real DNS quesries are made, there is no mocking. If you observe a failure that the CI cannot reproduce, please try to setup an environment as close as the current CI.

Using it from the cli, a la dig

This module can be used directly from the command line in a similar fashion to dig (limited, of course):

$ python -m pycares google.com
;; QUESTION SECTION:
;google.com                  IN      A

;; ANSWER SECTION:
google.com           300     IN      A       172.217.17.142

$ python -m pycares mx google.com
;; QUESTION SECTION:
;google.com                  IN      MX

;; ANSWER SECTION:
google.com           600     IN      MX      50 alt4.aspmx.l.google.com
google.com           600     IN      MX      10 aspmx.l.google.com
google.com           600     IN      MX      40 alt3.aspmx.l.google.com
google.com           600     IN      MX      20 alt1.aspmx.l.google.com
google.com           600     IN      MX      30 alt2.aspmx.l.google.com

Author

Saúl Ibarra Corretgé <s@saghul.net>

License

Unless stated otherwise on-file pycares uses the MIT license, check LICENSE file.

Supported Python versions

Python >= 3.7 are supported. Both CPython and PyPy are supported.

Contributing

If you’d like to contribute, fork the project, make a patch and send a pull request. Have a look at the surrounding code and please, make yours look alike :-)

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

pycares-4.3.0.tar.gz (821.6 kB view hashes)

Uploaded Source

Built Distributions

pycares-4.3.0-cp311-cp311-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pycares-4.3.0-cp311-cp311-win32.whl (61.6 kB view hashes)

Uploaded CPython 3.11 Windows x86

pycares-4.3.0-cp311-cp311-musllinux_1_1_x86_64.whl (282.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pycares-4.3.0-cp311-cp311-musllinux_1_1_i686.whl (260.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pycares-4.3.0-cp311-cp311-musllinux_1_1_aarch64.whl (280.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

pycares-4.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pycares-4.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (289.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pycares-4.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (270.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycares-4.3.0-cp311-cp311-macosx_10_9_x86_64.whl (75.5 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pycares-4.3.0-cp311-cp311-macosx_10_9_universal2.whl (136.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pycares-4.3.0-cp310-cp310-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pycares-4.3.0-cp310-cp310-win32.whl (61.6 kB view hashes)

Uploaded CPython 3.10 Windows x86

pycares-4.3.0-cp310-cp310-musllinux_1_1_x86_64.whl (282.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pycares-4.3.0-cp310-cp310-musllinux_1_1_i686.whl (260.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pycares-4.3.0-cp310-cp310-musllinux_1_1_aarch64.whl (280.7 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

pycares-4.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pycares-4.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (289.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pycares-4.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (270.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycares-4.3.0-cp310-cp310-macosx_10_9_x86_64.whl (75.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pycares-4.3.0-cp310-cp310-macosx_10_9_universal2.whl (136.8 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pycares-4.3.0-cp39-cp39-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pycares-4.3.0-cp39-cp39-win32.whl (61.6 kB view hashes)

Uploaded CPython 3.9 Windows x86

pycares-4.3.0-cp39-cp39-musllinux_1_1_x86_64.whl (282.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pycares-4.3.0-cp39-cp39-musllinux_1_1_i686.whl (260.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pycares-4.3.0-cp39-cp39-musllinux_1_1_aarch64.whl (280.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

pycares-4.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pycares-4.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (289.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pycares-4.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (270.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycares-4.3.0-cp39-cp39-macosx_10_9_x86_64.whl (75.5 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pycares-4.3.0-cp39-cp39-macosx_10_9_universal2.whl (136.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

pycares-4.3.0-cp38-cp38-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pycares-4.3.0-cp38-cp38-win32.whl (61.6 kB view hashes)

Uploaded CPython 3.8 Windows x86

pycares-4.3.0-cp38-cp38-musllinux_1_1_x86_64.whl (282.6 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pycares-4.3.0-cp38-cp38-musllinux_1_1_i686.whl (260.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pycares-4.3.0-cp38-cp38-musllinux_1_1_aarch64.whl (281.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

pycares-4.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (289.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pycares-4.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (289.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pycares-4.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (270.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycares-4.3.0-cp38-cp38-macosx_10_9_x86_64.whl (75.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pycares-4.3.0-cp38-cp38-macosx_10_9_universal2.whl (136.8 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

pycares-4.3.0-cp37-cp37m-win_amd64.whl (76.3 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

pycares-4.3.0-cp37-cp37m-win32.whl (61.6 kB view hashes)

Uploaded CPython 3.7m Windows x86

pycares-4.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl (281.6 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

pycares-4.3.0-cp37-cp37m-musllinux_1_1_i686.whl (259.6 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

pycares-4.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl (279.8 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ ARM64

pycares-4.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288.1 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pycares-4.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (288.5 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pycares-4.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (269.5 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycares-4.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (75.5 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pycares-4.3.0-cp36-cp36m-win_amd64.whl (84.8 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

pycares-4.3.0-cp36-cp36m-win32.whl (67.2 kB view hashes)

Uploaded CPython 3.6m Windows x86

Supported by

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