Hello community,
here is the log from the commit of package python-pycares for
openSUSE:Leap:15.2 checked in at 2020-03-27 16:48:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-pycares (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-pycares.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pycares"
Fri Mar 27 16:48:28 2020 rev:2 rq:789020 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-pycares/python-pycares.changes
2020-02-16 18:29:26.098753009 +0100
+++
/work/SRC/openSUSE:Leap:15.2/.python-pycares.new.3160/python-pycares.changes
2020-03-27 16:48:35.655949896 +0100
@@ -1,0 +2,14 @@
+Thu Mar 19 12:52:26 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- Update to 3.1.1
+ * misc: add Python 3.8 classifier
+ * ci: run tests in Python 3.8 too
+ * test: remove no longer valid test
+ * test: remove empty test
+ * errno: return str from errno.strerror
+ * core: fix crash when processing .onion queries
+ * core: fix support for ARES_OPT_LOOKUPS option
+ * misc: simplify non-ascii txt test example
+ * core: fix long TXT record with non-ascii bytes
+
+-------------------------------------------------------------------
Old:
----
pycares-3.0.0.tar.gz
New:
----
pycares-3.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pycares.spec ++++++
--- /var/tmp/diff_new_pack.MJ4ELY/_old 2020-03-27 16:48:36.043950124 +0100
+++ /var/tmp/diff_new_pack.MJ4ELY/_new 2020-03-27 16:48:36.043950124 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-pycares
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,12 +19,12 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-pycares
-Version: 3.0.0
+Version: 3.1.1
Release: 0
Summary: Python interface for c-ares
License: MIT
Group: Development/Languages/Python
-Url: http://github.com/saghul/pycares
+URL: http://github.com/saghul/pycares
Source:
https://files.pythonhosted.org/packages/source/p/pycares/pycares-%{version}.tar.gz
BuildRequires: %{python_module cffi}
BuildRequires: %{python_module devel}
++++++ pycares-3.0.0.tar.gz -> pycares-3.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/ChangeLog new/pycares-3.1.1/ChangeLog
--- old/pycares-3.0.0/ChangeLog 2019-03-02 12:38:02.000000000 +0100
+++ new/pycares-3.1.1/ChangeLog 2020-01-09 23:03:35.000000000 +0100
@@ -1,3 +1,27 @@
+Version 3.1.1
+=============
+- ffi: new style callbacks
+
+Version 3.1.0
+=============
+- misc: add Python 3.8 classifier
+- (origin/master, origin/HEAD) build: use Travis to build Python Wheels
+- ci: use GH Actions to test on macOS
+- ci: run tests in Python 3.8 too
+- test: remove no longer valid test
+- test: remove empty test
+- errno: return str from errno.strerror
+- core: fix crash when processing .onion queries
+- test: fix test_query_txt_multiple_chunked
+- doc: fix path of _version.py file
+- core: fix support for ARES_OPT_LOOKUPS option
+- build: add cygwin support
+- core: fix struct in6_addr alignment
+- misc: simplify non-ascii txt test example
+- core: fix long TXT record with non-ascii bytes
+- build: remove extra add_include_dir line on linux
+- build: fix testing manylinux wheels
+
Version 3.0.0
=============
(changes since version 2.x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/PKG-INFO new/pycares-3.1.1/PKG-INFO
--- old/pycares-3.0.0/PKG-INFO 2019-03-02 12:39:09.000000000 +0100
+++ new/pycares-3.1.1/PKG-INFO 2020-01-09 23:03:41.000000000 +0100
@@ -1,14 +1,12 @@
Metadata-Version: 2.1
Name: pycares
-Version: 3.0.0
+Version: 3.1.1
Summary: Python interface for c-ares
Home-page: http://github.com/saghul/pycares
Author: Saúl Ibarra Corretgé
Author-email: [email protected]
License: UNKNOWN
-Description:
- ====================================
- pycares: Python interface for c-ares
+Description: pycares: Python interface for c-ares
====================================
.. image:: https://badge.fury.io/py/pycares.png
@@ -20,19 +18,22 @@
.. image::
https://ci.appveyor.com/api/projects/status/vx1wbkfq3l7nm1m8?svg=true
:target: https://ci.appveyor.com/project/saghul/pycares
+ .. image::
https://github.com/saghul/pycares/workflows/Test%20macOS/badge.svg
+ :target: https://github.com/saghul/pycares/actions)
+
pycares is a Python module which provides an interface to c-ares.
`c-ares <http://c-ares.haxx.se>`_ 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 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
<http://c-ares.haxx.se/mail/c-ares-archive-2013-07/0005.shtml>`_.
@@ -41,7 +42,7 @@
Installation
- ============
+ ------------
GNU/Linux, macOS, Windows, others:
@@ -70,7 +71,7 @@
Running the test suite
- ======================
+ ----------------------
There are several ways of running the test ruite:
@@ -85,7 +86,7 @@
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):
@@ -111,31 +112,30 @@
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.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 :-)
-
Platform: POSIX
Platform: Microsoft Windows
Classifier: Development Status :: 5 - Production/Stable
@@ -148,6 +148,8 @@
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
+Description-Content-Type: text/x-rst
Provides-Extra: idna
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/README.rst new/pycares-3.1.1/README.rst
--- old/pycares-3.0.0/README.rst 2019-03-02 12:34:46.000000000 +0100
+++ new/pycares-3.1.1/README.rst 2020-01-09 23:03:35.000000000 +0100
@@ -1,5 +1,3 @@
-
-====================================
pycares: Python interface for c-ares
====================================
@@ -12,19 +10,22 @@
.. image::
https://ci.appveyor.com/api/projects/status/vx1wbkfq3l7nm1m8?svg=true
:target: https://ci.appveyor.com/project/saghul/pycares
+.. image:: https://github.com/saghul/pycares/workflows/Test%20macOS/badge.svg
+ :target: https://github.com/saghul/pycares/actions)
+
pycares is a Python module which provides an interface to c-ares.
`c-ares <http://c-ares.haxx.se>`_ 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 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
<http://c-ares.haxx.se/mail/c-ares-archive-2013-07/0005.shtml>`_.
@@ -33,7 +34,7 @@
Installation
-============
+------------
GNU/Linux, macOS, Windows, others:
@@ -62,7 +63,7 @@
Running the test suite
-======================
+----------------------
There are several ways of running the test ruite:
@@ -77,7 +78,7 @@
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):
@@ -103,27 +104,26 @@
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.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 :-)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/deps/c-ares/src/ares_create_query.c
new/pycares-3.1.1/deps/c-ares/src/ares_create_query.c
--- old/pycares-3.0.0/deps/c-ares/src/ares_create_query.c 2019-01-16
23:38:44.000000000 +0100
+++ new/pycares-3.1.1/deps/c-ares/src/ares_create_query.c 2020-01-09
23:03:35.000000000 +0100
@@ -94,14 +94,14 @@
size_t buflen;
unsigned char *buf;
- /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */
- if (ares__is_onion_domain(name))
- return ARES_ENOTFOUND;
-
/* Set our results early, in case we bail out early with an error. */
*buflenp = 0;
*bufp = NULL;
+ /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */
+ if (ares__is_onion_domain(name))
+ return ARES_ENOTFOUND;
+
/* Allocate a memory area for the maximum size this packet might need. +2
* is for the length byte and zero termination if no dots or ecscaping is
* used.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pycares-3.0.0/deps/c-ares/src/config_cygwin/ares_config.h
new/pycares-3.1.1/deps/c-ares/src/config_cygwin/ares_config.h
--- old/pycares-3.0.0/deps/c-ares/src/config_cygwin/ares_config.h
1970-01-01 01:00:00.000000000 +0100
+++ new/pycares-3.1.1/deps/c-ares/src/config_cygwin/ares_config.h
2020-01-09 23:03:35.000000000 +0100
@@ -0,0 +1,515 @@
+/* ares_config.h. Generated from ares_config.h.in by configure. */
+/* ares_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* define this if ares is built for a big endian system */
+/* #undef ARES_BIG_ENDIAN */
+
+/* when building as static part of libcurl */
+/* #undef BUILDING_LIBCURL */
+
+/* when building c-ares library */
+/* #undef CARES_BUILDING_LIBRARY */
+
+/* when not building a shared library */
+/* #undef CARES_STATICLIB */
+
+/* Define to 1 to enable hiding of library internal symbols. */
+#define CARES_SYMBOL_HIDING 1
+
+/* Definition to make a library symbol externally visible. */
+#define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((visibility ("default")))
+
+/* the signed version of size_t */
+#define CARES_TYPEOF_ARES_SSIZE_T ssize_t
+
+/* if a /etc/inet dir is being used */
+/* #undef ETC_INET */
+
+/* Define to the type qualifier of arg 1 for getnameinfo. */
+#define GETNAMEINFO_QUAL_ARG1 const
+
+/* Define to the type of arg 1 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
+
+/* Define to the type of arg 2 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG2 socklen_t
+
+/* Define to the type of args 4 and 6 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG46 int
+
+/* Define to the type of arg 7 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG7 int
+
+/* Specifies the number of arguments to getservbyport_r */
+/* #undef GETSERVBYPORT_R_ARGS */
+
+/* Specifies the size of the buffer to pass to getservbyport_r */
+/* #undef GETSERVBYPORT_R_BUFSIZE */
+
+/* Define to 1 if you have AF_INET6. */
+#define HAVE_AF_INET6 1
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `bitncmp' function. */
+/* #undef HAVE_BITNCMP */
+
+/* Define to 1 if bool is an available type. */
+#define HAVE_BOOL_T 1
+
+/* Define to 1 if you have the clock_gettime function and monotonic timer. */
+/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */
+
+/* Define to 1 if you have the closesocket function. */
+/* #undef HAVE_CLOSESOCKET */
+
+/* Define to 1 if you have the CloseSocket camel case function. */
+/* #undef HAVE_CLOSESOCKET_CAMEL */
+
+/* Define to 1 if you have the connect function. */
+#define HAVE_CONNECT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the fcntl function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
+#define HAVE_FCNTL_O_NONBLOCK 1
+
+/* Define to 1 if you have the freeaddrinfo function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have a working getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+/* #undef HAVE_GETADDRINFO_THREADSAFE */
+
+/* Define to 1 if you have the gethostbyaddr function. */
+#define HAVE_GETHOSTBYADDR 1
+
+/* Define to 1 if you have the gethostbyname function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the gethostname function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the getnameinfo function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the getservbyport_r function. */
+/* #undef HAVE_GETSERVBYPORT_R */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#define HAVE_IF_INDEXTONAME 1
+
+/* Define to 1 if you have the `inet_net_pton' function. */
+/* #undef HAVE_INET_NET_PTON */
+
+/* Define to 1 if inet_net_pton supports IPv6. */
+/* #undef HAVE_INET_NET_PTON_IPV6 */
+
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the ioctl function. */
+#define HAVE_IOCTL 1
+
+/* Define to 1 if you have the ioctlsocket function. */
+/* #undef HAVE_IOCTLSOCKET */
+
+/* Define to 1 if you have the IoctlSocket camel case function. */
+/* #undef HAVE_IOCTLSOCKET_CAMEL */
+
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
+ */
+/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
+
+/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
+/* #undef HAVE_IOCTLSOCKET_FIONBIO */
+
+/* Define to 1 if you have a working ioctl FIONBIO function. */
+#define HAVE_IOCTL_FIONBIO 1
+
+/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
+#define HAVE_IOCTL_SIOCGIFADDR 1
+
+/* Define to 1 if you have the `resolve' library (-lresolve). */
+/* #undef HAVE_LIBRESOLVE */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* if your compiler supports LL */
+#define HAVE_LL 1
+
+/* Define to 1 if the compiler supports the 'long long' data type. */
+#define HAVE_LONGLONG 1
+
+/* Define to 1 if you have the malloc.h header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the memory.h header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the MSG_NOSIGNAL flag. */
+#define HAVE_MSG_NOSIGNAL 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have PF_INET6. */
+#define HAVE_PF_INET6 1
+
+/* Define to 1 if you have the recv function. */
+#define HAVE_RECV 1
+
+/* Define to 1 if you have the recvfrom function. */
+#define HAVE_RECVFROM 1
+
+/* Define to 1 if you have the send function. */
+#define HAVE_SEND 1
+
+/* Define to 1 if you have the setsockopt function. */
+#define HAVE_SETSOCKOPT 1
+
+/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
+/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if sig_atomic_t is an available typedef. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if sig_atomic_t is already defined as volatile. */
+/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
+
+/* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+
+/* Define to 1 if you have the socket function. */
+#define HAVE_SOCKET 1
+
+/* Define to 1 if you have the <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the strcmpi function. */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the stricmp function. */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the strncasecmp function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the strncmpi function. */
+/* #undef HAVE_STRNCMPI */
+
+/* Define to 1 if you have the strnicmp function. */
+/* #undef HAVE_STRNICMP */
+
+/* Define to 1 if you have the <stropts.h> header file. */
+/* #undef HAVE_STROPTS_H */
+
+/* Define to 1 if you have struct addrinfo. */
+#define HAVE_STRUCT_ADDRINFO 1
+
+/* Define to 1 if you have struct in6_addr. */
+#define HAVE_STRUCT_IN6_ADDR 1
+
+/* Define to 1 if you have struct sockaddr_in6. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* if struct sockaddr_storage is defined */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the timeval struct. */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the windows.h header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the winsock2.h header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if you have the winsock.h header file. */
+/* #undef HAVE_WINSOCK_H */
+
+/* Define to 1 if you have the writev function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the ws2tcpip.h header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if you are building a native Windows target. */
+/* #undef NATIVE_WINDOWS */
+
+/* Define to 1 if you need the malloc.h header file even with stdlib.h */
+/* #undef NEED_MALLOC_H */
+
+/* Define to 1 if you need the memory.h header file even with stdlib.h */
+/* #undef NEED_MEMORY_H */
+
+/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
+/* #undef NEED_REENTRANT */
+
+/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
+/* #undef NEED_THREAD_SAFE */
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* cpu-machine-OS */
+#define OS "i686-pc-cygwin"
+
+/* Name of package */
+#define PACKAGE "c-ares"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "c-ares mailing list =>
http://cool.haxx.se/mailman/listinfo/c-ares"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "c-ares"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "c-ares 1.13.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "c-ares"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.13.0"
+
+/* a suitable file/device to read random data from */
+#define RANDOM_FILE "/dev/urandom"
+
+/* Define to the type of arg 1 for recvfrom. */
+#define RECVFROM_TYPE_ARG1 int
+
+/* Define to the type pointed by arg 2 for recvfrom. */
+#define RECVFROM_TYPE_ARG2 void
+
+/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
+#define RECVFROM_TYPE_ARG2_IS_VOID 1
+
+/* Define to the type of arg 3 for recvfrom. */
+#define RECVFROM_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recvfrom. */
+#define RECVFROM_TYPE_ARG4 int
+
+/* Define to the type pointed by arg 5 for recvfrom. */
+#define RECVFROM_TYPE_ARG5 struct sockaddr
+
+/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
+
+/* Define to the type pointed by arg 6 for recvfrom. */
+#define RECVFROM_TYPE_ARG6 socklen_t
+
+/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
+
+/* Define to the function return type for recvfrom. */
+#define RECVFROM_TYPE_RETV int
+
+/* Define to the type of arg 1 for recv. */
+#define RECV_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for recv. */
+#define RECV_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for recv. */
+#define RECV_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recv. */
+#define RECV_TYPE_ARG4 int
+
+/* Define to the function return type for recv. */
+#define RECV_TYPE_RETV int
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to the type qualifier of arg 2 for send. */
+#define SEND_QUAL_ARG2 const
+
+/* Define to the type of arg 1 for send. */
+#define SEND_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for send. */
+#define SEND_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for send. */
+#define SEND_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for send. */
+#define SEND_TYPE_ARG4 int
+
+/* Define to the function return type for send. */
+#define SEND_TYPE_RETV int
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `struct in6_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN6_ADDR 16
+
+/* The size of `struct in_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN_ADDR 4
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to disable non-blocking sockets. */
+/* #undef USE_BLOCKING_SOCKETS */
+
+/* Version number of package */
+#define VERSION "1.7.1"
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if OS is AIX. */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Type to use in place of in_addr_t when system does not provide it. */
+/* #undef in_addr_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/docs/conf.py
new/pycares-3.1.1/docs/conf.py
--- old/pycares-3.0.0/docs/conf.py 2019-01-02 10:16:48.000000000 +0100
+++ new/pycares-3.1.1/docs/conf.py 2020-01-09 23:03:35.000000000 +0100
@@ -14,7 +14,7 @@
import re
def get_version():
- return
re.search(r"""__version__\s+=\s+(?P<quote>['"])(?P<version>.+?)(?P=quote)""",
open('../pycares/_version.py').read()).group('version')
+ return
re.search(r"""__version__\s+=\s+(?P<quote>['"])(?P<version>.+?)(?P=quote)""",
open('../src/pycares/_version.py').read()).group('version')
_version = get_version()
# If extensions (or modules to document with autodoc) are in another directory,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/setup.py new/pycares-3.1.1/setup.py
--- old/pycares-3.0.0/setup.py 2019-01-23 08:43:16.000000000 +0100
+++ new/pycares-3.1.1/setup.py 2020-01-09 23:03:35.000000000 +0100
@@ -19,6 +19,7 @@
url = 'http://github.com/saghul/pycares',
description = 'Python interface for c-ares',
long_description = codecs.open('README.rst', encoding='utf-8').read(),
+ long_description_content_type = 'text/x-rst',
platforms = ['POSIX', 'Microsoft Windows'],
classifiers = [
'Development Status :: 5 - Production/Stable',
@@ -31,6 +32,7 @@
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/setup_cares.py
new/pycares-3.1.1/setup_cares.py
--- old/pycares-3.0.0/setup_cares.py 2019-01-22 13:52:04.000000000 +0100
+++ new/pycares-3.1.1/setup_cares.py 2020-01-09 23:03:35.000000000 +0100
@@ -76,7 +76,6 @@
self.compiler.add_include_dir(os.path.join(self.cares_dir,
'src/config_android'))
else:
self.compiler.add_include_dir(os.path.join(self.cares_dir,
'src/config_linux'))
- self.compiler.add_include_dir(os.path.join(self.cares_dir,
'src/config_linux'))
self.compiler.add_library('dl')
self.compiler.add_library('rt')
elif sys.platform == 'darwin':
@@ -96,6 +95,8 @@
self.compiler.add_library('socket')
self.compiler.add_library('nsl')
self.compiler.add_library('kstat')
+ elif sys.platform == 'cygwin':
+ self.compiler.add_include_dir(os.path.join(self.cares_dir,
'src/config_cygwin'))
elif sys.platform == 'win32':
if 'mingw' not in self.compiler.compiler_type:
self.extensions[0].extra_link_args = ['/NODEFAULTLIB:libcmt']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/_cffi_src/build_cares.py
new/pycares-3.1.1/src/_cffi_src/build_cares.py
--- old/pycares-3.0.0/src/_cffi_src/build_cares.py 2019-01-22
13:52:29.000000000 +0100
+++ new/pycares-3.1.1/src/_cffi_src/build_cares.py 2020-01-09
23:03:35.000000000 +0100
@@ -29,6 +29,7 @@
struct in6_addr {
uint8_t s6_addr[16];
+ ...;
};
struct timeval {
@@ -488,7 +489,30 @@
ares_socklen_t size);
int ares_inet_pton(int af, const char *src, void *dst);
+"""
+
+CALLBACKS = """
+extern "Python" void _sock_state_cb(void *data,
+ ares_socket_t socket_fd,
+ int readable,
+ int writable);
+
+extern "Python" void _host_cb(void *arg,
+ int status,
+ int timeouts,
+ struct hostent *hostent);
+extern "Python" void _nameinfo_cb(void *arg,
+ int status,
+ int timeouts,
+ char *node,
+ char *service);
+
+extern "Python" void _query_cb(void *arg,
+ int status,
+ int timeouts,
+ unsigned char *abuf,
+ int alen);
"""
INCLUDES = """
@@ -508,6 +532,6 @@
ffi = cffi.FFI()
-ffi.cdef(PLATFORM_TYPES + TYPES + FUNCTIONS)
+ffi.cdef(PLATFORM_TYPES + TYPES + FUNCTIONS + CALLBACKS)
ffi.set_source('_cares', INCLUDES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/pycares/__init__.py
new/pycares-3.1.1/src/pycares/__init__.py
--- old/pycares-3.0.0/src/pycares/__init__.py 2019-02-15 00:12:16.000000000
+0100
+++ new/pycares-3.1.1/src/pycares/__init__.py 2020-01-09 23:03:35.000000000
+0100
@@ -85,12 +85,12 @@
_global_set = set()
-@_ffi.callback("void (void *data, ares_socket_t socket_fd, int readable, int
writable )")
+@_ffi.def_extern()
def _sock_state_cb(data, socket_fd, readable, writable):
sock_state_cb = _ffi.from_handle(data)
sock_state_cb(socket_fd, readable, writable)
-@_ffi.callback("void (void *arg, int status, int timeouts, struct hostent
*hostent)")
+@_ffi.def_extern()
def _host_cb(arg, status, timeouts, hostent):
callback = _ffi.from_handle(arg)
_global_set.discard(arg)
@@ -103,7 +103,7 @@
callback(result, status)
-@_ffi.callback("void (void *arg, int status, int timeouts, char *node, char
*service)")
+@_ffi.def_extern()
def _nameinfo_cb(arg, status, timeouts, node, service):
callback = _ffi.from_handle(arg)
_global_set.discard(arg)
@@ -116,7 +116,7 @@
callback(result, status)
-@_ffi.callback("void (void *arg, int status, int timeouts, unsigned char
*abuf, int alen)")
+@_ffi.def_extern()
def _query_cb(arg, status, timeouts, abuf, alen):
callback, query_type = _ffi.from_handle(arg)
_global_set.discard(arg)
@@ -271,14 +271,14 @@
while True:
if txt_reply_ptr == _ffi.NULL:
if tmp_obj is not None:
- result.append(tmp_obj)
+ result.append(ares_query_txt_result(tmp_obj))
break
if txt_reply_ptr.record_start == 1:
if tmp_obj is not None:
- result.append(tmp_obj)
- tmp_obj = ares_query_txt_result(txt_reply_ptr)
+ result.append(ares_query_txt_result(tmp_obj))
+ tmp_obj = ares_query_txt_result_chunk(txt_reply_ptr)
else:
- new_chunk = ares_query_txt_result(txt_reply_ptr)
+ new_chunk = ares_query_txt_result_chunk(txt_reply_ptr)
tmp_obj.text += new_chunk.text
txt_reply_ptr = txt_reply_ptr.next
_lib.ares_free_data(txt_reply[0])
@@ -355,12 +355,12 @@
# This must be kept alive while the channel is alive.
self._sock_state_cb_handle = userdata
- options.sock_state_cb = _sock_state_cb
+ options.sock_state_cb = _lib._sock_state_cb
options.sock_state_cb_data = userdata
optmask = optmask | _lib.ARES_OPT_SOCK_STATE_CB
if lookups:
- options.lookups = lookups
+ options.lookups = _ffi.new('char[]', ascii_bytes(lookups))
optmask = optmask | _lib.ARES_OPT_LOOKUPS
if domains:
@@ -491,7 +491,7 @@
userdata = _ffi.new_handle(callback)
_global_set.add(userdata)
- _lib.ares_gethostbyaddr(self._channel[0], address,
_ffi.sizeof(address[0]), family, _host_cb, userdata)
+ _lib.ares_gethostbyaddr(self._channel[0], address,
_ffi.sizeof(address[0]), family, _lib._host_cb, userdata)
def gethostbyname(self, name, family, callback):
if not callable(callback):
@@ -499,7 +499,7 @@
userdata = _ffi.new_handle(callback)
_global_set.add(userdata)
- _lib.ares_gethostbyname(self._channel[0], parse_name(name), family,
_host_cb, userdata)
+ _lib.ares_gethostbyname(self._channel[0], parse_name(name), family,
_lib._host_cb, userdata)
def query(self, name, query_type, callback):
self._do_query(_lib.ares_query, name, query_type, callback)
@@ -516,7 +516,7 @@
userdata = _ffi.new_handle((callback, query_type))
_global_set.add(userdata)
- func(self._channel[0], parse_name(name), _lib.C_IN, query_type,
_query_cb, userdata)
+ func(self._channel[0], parse_name(name), _lib.C_IN, query_type,
_lib._query_cb, userdata)
def set_local_ip(self, ip):
addr4 = _ffi.new("struct in_addr*")
@@ -553,7 +553,7 @@
userdata = _ffi.new_handle(callback)
_global_set.add(userdata)
- _lib.ares_getnameinfo(self._channel[0], _ffi.cast("struct sockaddr*",
sa), _ffi.sizeof(sa[0]), flags, _nameinfo_cb, userdata)
+ _lib.ares_getnameinfo(self._channel[0], _ffi.cast("struct sockaddr*",
sa), _ffi.sizeof(sa[0]), flags, _lib._nameinfo_cb, userdata)
def set_local_dev(self, dev):
_lib.ares_set_local_dev(self._channel[0], dev)
@@ -675,8 +675,17 @@
__slots__ = ('text', 'ttl')
type = 'TXT'
+ def __init__(self, txt_chunk):
+ self.text = maybe_str(txt_chunk.text)
+ self.ttl = txt_chunk.ttl
+
+
+class ares_query_txt_result_chunk(AresResult):
+ __slots__ = ('text', 'ttl')
+ type = 'TXT'
+
def __init__(self, txt):
- self.text = maybe_str(_ffi.string(txt.txt))
+ self.text = _ffi.string(txt.txt)
self.ttl = txt.ttl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/pycares/_version.py
new/pycares-3.1.1/src/pycares/_version.py
--- old/pycares-3.0.0/src/pycares/_version.py 2019-03-02 12:35:25.000000000
+0100
+++ new/pycares-3.1.1/src/pycares/_version.py 2020-01-09 23:03:35.000000000
+0100
@@ -1,2 +1,2 @@
-__version__ = '3.0.0'
+__version__ = '3.1.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/pycares/errno.py
new/pycares-3.1.1/src/pycares/errno.py
--- old/pycares-3.0.0/src/pycares/errno.py 2019-01-22 13:52:29.000000000
+0100
+++ new/pycares-3.1.1/src/pycares/errno.py 2020-01-09 23:03:35.000000000
+0100
@@ -1,5 +1,6 @@
from ._cares import ffi as _ffi, lib as _lib
+from .utils import maybe_str
exported_pycares_symbols = [
@@ -40,7 +41,7 @@
def strerror(code):
- return _ffi.string(_lib.ares_strerror(code))
+ return maybe_str(_ffi.string(_lib.ares_strerror(code)))
__all__ = exported_pycares_symbols + ['errorcode', 'strerror']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/pycares.egg-info/PKG-INFO
new/pycares-3.1.1/src/pycares.egg-info/PKG-INFO
--- old/pycares-3.0.0/src/pycares.egg-info/PKG-INFO 2019-03-02
12:39:09.000000000 +0100
+++ new/pycares-3.1.1/src/pycares.egg-info/PKG-INFO 2020-01-09
23:03:41.000000000 +0100
@@ -1,14 +1,12 @@
Metadata-Version: 2.1
Name: pycares
-Version: 3.0.0
+Version: 3.1.1
Summary: Python interface for c-ares
Home-page: http://github.com/saghul/pycares
Author: Saúl Ibarra Corretgé
Author-email: [email protected]
License: UNKNOWN
-Description:
- ====================================
- pycares: Python interface for c-ares
+Description: pycares: Python interface for c-ares
====================================
.. image:: https://badge.fury.io/py/pycares.png
@@ -20,19 +18,22 @@
.. image::
https://ci.appveyor.com/api/projects/status/vx1wbkfq3l7nm1m8?svg=true
:target: https://ci.appveyor.com/project/saghul/pycares
+ .. image::
https://github.com/saghul/pycares/workflows/Test%20macOS/badge.svg
+ :target: https://github.com/saghul/pycares/actions)
+
pycares is a Python module which provides an interface to c-ares.
`c-ares <http://c-ares.haxx.se>`_ 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 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
<http://c-ares.haxx.se/mail/c-ares-archive-2013-07/0005.shtml>`_.
@@ -41,7 +42,7 @@
Installation
- ============
+ ------------
GNU/Linux, macOS, Windows, others:
@@ -70,7 +71,7 @@
Running the test suite
- ======================
+ ----------------------
There are several ways of running the test ruite:
@@ -85,7 +86,7 @@
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):
@@ -111,31 +112,30 @@
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.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 :-)
-
Platform: POSIX
Platform: Microsoft Windows
Classifier: Development Status :: 5 - Production/Stable
@@ -148,6 +148,8 @@
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
+Description-Content-Type: text/x-rst
Provides-Extra: idna
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/src/pycares.egg-info/SOURCES.txt
new/pycares-3.1.1/src/pycares.egg-info/SOURCES.txt
--- old/pycares-3.0.0/src/pycares.egg-info/SOURCES.txt 2019-03-02
12:39:09.000000000 +0100
+++ new/pycares-3.1.1/src/pycares.egg-info/SOURCES.txt 2020-01-09
23:03:41.000000000 +0100
@@ -85,6 +85,7 @@
deps/c-ares/src/setup_once.h
deps/c-ares/src/windows_port.c
deps/c-ares/src/config_android/ares_config.h
+deps/c-ares/src/config_cygwin/ares_config.h
deps/c-ares/src/config_darwin/ares_config.h
deps/c-ares/src/config_freebsd/ares_config.h
deps/c-ares/src/config_linux/ares_config.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pycares-3.0.0/tests/tests.py
new/pycares-3.1.1/tests/tests.py
--- old/pycares-3.0.0/tests/tests.py 2019-02-15 00:12:16.000000000 +0100
+++ new/pycares-3.1.1/tests/tests.py 2020-01-09 23:03:35.000000000 +0100
@@ -203,9 +203,10 @@
self.channel.query('s-pulse.co.jp', pycares.QUERY_TYPE_TXT, cb)
self.wait()
self.assertNoError(self.errorno)
- # s-pulse.co.jp. 3600 IN TXT "MS=ms18955624"
- # s-pulse.co.jp. 3600 IN TXT "v=spf1 "
"include:spf-bma.mpme.jp ip4:202.248.11.9 ip4:202.248.11.10 "
"ip4:218.223.68.132 ip4:218.223.68.77 ip4:210.254.139.121 " "ip4:211.128.73.121
ip4:210.254.139.122 ip4:211.128.73.122 " "ip4:210.254.139.123
ip4:211.128.73.123 ip4:210.254.139.124 " "ip4:211.128.73.124 ip4:210.254.139.13
ip4:211.128.73.13 " "ip4:52.68.199.198 include:spf.betrend.com "
"include:spf.protection.outlook.com " "~all"
- self.assertEqual(len(self.result), 2)
+ # s-pulse.co.jp. 3600 IN TXT "MS=ms18955624"
+ # s-pulse.co.jp. 3600 IN TXT
"amazonses:lOgEcA9DwKFkIusIbgjpvZ2kCxaVADMlaxq9hSO3k4o="
+ # s-pulse.co.jp. 3600 IN TXT "v=spf1 "
"include:spf-bma.mpme.jp ip4:202.248.11.9 ip4:202.248.11.10 "
"ip4:218.223.68.132 ip4:218.223.68.77 ip4:210.254.139.121 " "ip4:211.128.73.121
ip4:210.254.139.122 ip4:211.128.73.122 " "ip4:210.254.139.123
ip4:211.128.73.123 ip4:210.254.139.124 " "ip4:211.128.73.124 ip4:210.254.139.13
ip4:211.128.73.13 " "ip4:52.68.199.198 include:spf.betrend.com "
"include:spf.protection.outlook.com include:crmstyle.com " "~all"
+ self.assertEqual(len(self.result), 3)
def test_query_txt_bytes1(self):
self.result, self.errorno = None, None
@@ -231,6 +232,21 @@
self.assertIsInstance(r.text, bytes)
self.assertTrue(r.ttl >= 0)
+ def test_query_txt_multiple_chunked_with_non_ascii_content(self):
+ self.result, self.errorno = None, None
+ def cb(result, errorno):
+ self.result, self.errorno = result, errorno
+ self.channel.query('txt-non-ascii.dns-test.hmnid.ru',
pycares.QUERY_TYPE_TXT, cb)
+ self.wait()
+ self.assertNoError(self.errorno)
+ # txt-non-ascii.dns-test.hmnid.ru. IN TXT "ascii
string" "some\208misc\208stuff"
+
+ self.assertEqual(len(self.result), 1)
+ r = self.result[0]
+ self.assertEqual(type(r), pycares.ares_query_txt_result)
+ self.assertIsInstance(r.text, bytes)
+ self.assertTrue(r.ttl >= 0)
+
def test_query_soa(self):
self.result, self.errorno = None, None
def cb(result, errorno):
@@ -324,6 +340,15 @@
self.assertEqual(self.result, None)
self.assertEqual(self.errorno, pycares.errno.ARES_ETIMEOUT)
+ def test_query_onion(self):
+ self.result, self.errorno = None, None
+ def cb(result, errorno):
+ self.result, self.errorno = result, errorno
+ self.channel.query('foo.onion', pycares.QUERY_TYPE_A, cb)
+ self.wait()
+ self.assertEqual(self.result, None)
+ self.assertEqual(self.errorno, pycares.errno.ARES_ENOTFOUND)
+
def test_channel_nameservers(self):
self.result, self.errorno = None, None
def cb(result, errorno):
@@ -370,13 +395,6 @@
self.assertEqual(self.errorno, pycares.errno.ARES_ECONNREFUSED)
self.assertRaises(ValueError, self.channel.set_local_ip, 'an invalid
ip')
- def test_channel_local_dev(self):
- '''
- Comments in c-ares say this only works for root, and ares ignores
- errors. So we won't test it.
- '''
- pass
-
def test_channel_timeout(self):
self.result, self.errorno = None, None
def cb(result, errorno):
@@ -398,18 +416,6 @@
self.result, self.errorno = None, None
def cb(result, errorno):
self.result, self.errorno = result, errorno
- self.channel.query('xn--cardeosapeluqueros-r0b.com',
pycares.QUERY_TYPE_MX, cb)
- self.wait()
- self.assertNoError(self.errorno)
- for r in self.result:
- self.assertEqual(type(r), pycares.ares_query_mx_result)
- self.assertIsInstance(r.host, bytes) # it's not ASCII
- self.assertTrue(r.ttl >= 0)
-
- def test_result_not_ascii2(self):
- self.result, self.errorno = None, None
- def cb(result, errorno):
- self.result, self.errorno = result, errorno
self.channel.query('ayesas.com', pycares.QUERY_TYPE_SOA, cb)
self.wait()
self.assertNoError(self.errorno)
@@ -494,6 +500,45 @@
self.assertEqual(type(r), pycares.ares_query_a_result)
self.assertNotEqual(r.host, None)
+ def test_lookup(self):
+ channel = pycares.Channel(
+ lookups="b",
+ timeout=1,
+ tries=1,
+ socket_receive_buffer_size=4096,
+ servers=["8.8.8.8", "8.8.4.4"],
+ tcp_port=53,
+ udp_port=53,
+ rotate=True,
+ )
+
+ def on_result(result, errorno):
+ self.result, self.errorno = result, errorno
+
+ for domain in [
+ "google.com",
+ "microsoft.com",
+ "apple.com",
+ "amazon.com",
+ "baidu.com",
+ "alipay.com",
+ "tencent.com",
+ ]:
+ self.result, self.errorno = None, None
+ self.channel.query(domain, pycares.QUERY_TYPE_A, on_result)
+ self.wait()
+ self.assertNoError(self.errorno)
+ self.assertTrue(self.result is not None and len(self.result) > 0)
+ for r in self.result:
+ self.assertEqual(type(r), pycares.ares_query_a_result)
+ self.assertNotEqual(r.host, None)
+ self.assertTrue(r.type == 'A')
+ self.assertTrue(r.ttl >= 0)
+
+ def test_strerror_str(self):
+ for key in pycares.errno.errorcode:
+ self.assertTrue(type(pycares.errno.strerror(key)), str)
+
if __name__ == '__main__':
unittest.main(verbosity=2)