• Stars
    star
    165
  • Rank 228,906 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created over 12 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python interface for c-ares

Looking for new maintainers

#139

pycares: Python interface for c-ares

https://badge.fury.io/py/pycares.png

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: c-ares/c-ares#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é <[email protected]>

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 :-)

More Repositories

1

txiki.js

A tiny JavaScript runtime
C
2,520
star
2

pyuv

Python interface for libuv
C
1,115
star
3

pythonz

Python installation manager supporting CPython, Stackless, PyPy and Jython
Python
749
star
4

aiodns

Simple DNS resolver for asyncio
Python
529
star
5

sipp-scenarios

SIPp scenarios I use for testing SIP stuff
256
star
6

lxd-alpine-builder

Build Alpine Linux images for LXD
Shell
175
star
7

python-fibers

Lightweight cooperative microthreads for Python
C
159
star
8

uvent

A gevent core implemented using libuv
Python
136
star
9

wasi-lab

Some WASI experiments 🧪☣️☠️
C
120
star
10

evergreen

Cooperative multitasking and i/o for Python
Python
113
star
11

CallRoulette

A WebRTC demo using Python (asyncio + aiohttp) as the backend
JavaScript
103
star
12

sjs

Skookum JS: a JavaScript runtime
C
98
star
13

tornaduv

Tornado IOLoop implemented with pyuv
Python
96
star
14

aiouv

A PEP-3156 compatible event loop
Python
70
star
15

uvwsgi

Python WSGI server
Python
37
star
16

qrfcview-osx

RFC viewer for OSX
C++
36
star
17

node-abstractsocket

Abstract namespace socket support for Node
JavaScript
24
star
18

libuv-chat

Something something libuv something
C
21
star
19

twisted-pyuv

Twisted reactor implemented with pyuv
Python
19
star
20

njk

Powerful portable templating in less than 1MB
C
19
star
21

cordova-plugin-audioroute

iOS audio route change events and more for Cordova
Objective-C
17
star
22

twitterbot

A simple Twitter bot retwitting the given hashtag
Python
14
star
23

TunnelIt

SSH reverse forwarder using Twisted
Python
14
star
24

sipsimple-examples

SIPSIMPLE SDK examples
Python
13
star
25

macOS-setup

My macOS setup, automated with Ansible
Shell
12
star
26

dotvim

My vim configuration
Vim Script
11
star
27

SIPwPing-server

Server providing a simple RESTful API to ping SIP servers
Python
11
star
28

shline

A simple powerline style prompt for my bash shell
Python
10
star
29

tornado-backdoor

Interactive Python interpreter over TCP for Tornado applications
Python
9
star
30

pysophia

WIP: Python (CFFI) bindings for Sophia
Python
9
star
31

jitsi-meet-api

Jitsi Meet external API wrapper
JavaScript
8
star
32

sandbox-html

JavaScript
7
star
33

gyn

Generate You some Ninja
Python
6
star
34

uttp

[Unfinished] libuv based HTTP server
C
6
star
35

dotfiles

My dotfiles
Shell
6
star
36

sylk-in-a-box

SylkServer + Sylk WebRTC client, in a box
Nginx
5
star
37

vim-colortoggle

A ViM plugin for toggling background and color scheme
Vim Script
5
star
38

yass

Yet Another SIP Softphone (archive)
Python
3
star
39

python-imap-prowl

A python script to sendpush notifications when new emails via Prowl push service
3
star
40

evergreen-requests

Evergreen + Requests
Python
3
star
41

notes

Notes about anything and everything
Python
2
star
42

jcfg

Jinja templates for your configuration files
Python
2
star
43

sipstache

The Ultimate Virtual Moustache Toolkit (TM)
Python
2
star
44

python-wsserver

[DEAD] A simple, single threaded WebSocket server
Python
2
star
45

python-asiri

GPIO interface for Asiri board with a MCP230XX chip
Python
1
star
46

python-imaplib2

Python threaded IMAP4 client module by Piers Lauder
Python
1
star
47

gvoice-sip-status

Google App Engine application to query the availability of Google Voice inbound SIP service
Python
1
star
48

docker-nginx-webdav

Docker image using nginx to serve files over WebDAV
1
star
49

sipwping-django

Web frontend for SIPwPing server, based on Django
JavaScript
1
star