Skip to main content

Python interface for c-ares

Project description

https://badge.fury.io/py/pycares.png https://secure.travis-ci.org/saghul/pycares.png?branch=master https://ci.appveyor.com/api/projects/status/vx1wbkfq3l7nm1m8?svg=true

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.

PLEASE TEST VERSION 3.0.0!

pycares 3.0.0 beta can be installed as follows:

pip install pycares --pre

Note that no binary wheels are provided until a stable release is made.

This new release swaps the C core for the CFFI one, amongst other things. Please give it a try and report any issues!

Documentation

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

Bundled c-ares

pycares currently bundles c-ares and as of pycares 1.0.0 this is a strong requirement. Upstream c-ares is not willing to apply a patch adding TTL support. I did apply the patch to the bundled c-ares, but unfortunately it breaks the ABI, so attempting to use a system provided c-ares is not possible.

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 encodingm 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

There are several ways of running the test ruite:

  • Run the test with the current Python interpreter:

    From the toplevel directory, run: python tests/tests.py

  • Use Tox to run the test suite in several virtualenvs with several interpreters

    From the toplevel directory, run: tox -e py35,py36,py37 this will run the test suite on Python 3.5, 3.6 and 3.7 (you’ll need to have them installed beforehand)

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.5 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-3.0.0b5.tar.gz (211.5 kB view details)

Uploaded Source

File details

Details for the file pycares-3.0.0b5.tar.gz.

File metadata

  • Download URL: pycares-3.0.0b5.tar.gz
  • Upload date:
  • Size: 211.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.2

File hashes

Hashes for pycares-3.0.0b5.tar.gz
Algorithm Hash digest
SHA256 d2e7d6ef924a3fbb3a30a9a7861681ad499548c66b127823cfecef721c678222
MD5 c273d67911423603a9e3fba3f7a80894
BLAKE2b-256 3678fea72dde8450af552e67e55ccebbef6f1d08968cdcec53d010751dd826ba

See more details on using hashes here.

Supported by

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