Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pycurl for openSUSE:Factory checked in at 2021-02-04 20:21:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pycurl (Old) and /work/SRC/openSUSE:Factory/.python-pycurl.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pycurl" Thu Feb 4 20:21:49 2021 rev:36 rq:867959 version:7.43.0.6 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pycurl/python-pycurl.changes 2020-12-16 11:00:19.403560221 +0100 +++ /work/SRC/openSUSE:Factory/.python-pycurl.new.28504/python-pycurl.changes 2021-02-04 20:21:51.490623827 +0100 @@ -1,0 +2,20 @@ +Thu Jan 28 23:06:36 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 7.43.0.6: + * Fixed offset parameter usage in seek callback + * Added support for libcurl SSL backend detection via + `curl-config --ssl-backends` + * Added support for libcurl MultiSSL + * Added ability to unset CURLOPT_PROXY. + * Added support for CURLOPT_UPLOAD_BUFFERSIZE + * Added support for CURLOPT_MAXAGE_CONN + * Added support for sharing connection cache in libcurl + * Added support for CURLOPT_HAPROXYPROTOCOL + * CC and CFLAGS environment variables are now respected when building + * Fixed OpenSSL detection on CentOS 7 and 8 + * surrogateescape error handler is used in multi_info_read to handle + invalid UTF-8. +- drop python-pycurl-7.43.0-tls-backend.patch (upstream) +- refresh remove_nose.patch to remove even more nose code + +------------------------------------------------------------------- Old: ---- pycurl-7.43.0.5.tar.gz python-pycurl-7.43.0-tls-backend.patch New: ---- pycurl-7.43.0.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pycurl.spec ++++++ --- /var/tmp/diff_new_pack.QAhXgS/_old 2021-02-04 20:21:52.106624765 +0100 +++ /var/tmp/diff_new_pack.QAhXgS/_new 2021-02-04 20:21:52.110624770 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-pycurl # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -27,7 +27,7 @@ %bcond_with test %endif Name: python-pycurl%{psuffix} -Version: 7.43.0.5 +Version: 7.43.0.6 Release: 0 Summary: PycURL -- cURL library module License: LGPL-2.1-or-later AND MIT @@ -37,8 +37,6 @@ Patch0: increase_test_timeout.diff # PATCH-FIX-UPSTREAM handle difference between libssh and libssh2 Patch1: pycurl-libssh.patch -# PATCH-FIX-OPENSUSE python-pycurl-7.43.0-tls-backend.patch -- do not run runtime tests to compare linked libs -Patch2: python-pycurl-7.43.0-tls-backend.patch Patch3: disable_randomly_failing_tests.patch # PATCH-FEATURE-UPSTREAM remove_nose.patch gh#pycurl/pycurl#655 mc...@suse.com # remove dependency on nose ++++++ pycurl-7.43.0.5.tar.gz -> pycurl-7.43.0.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/ChangeLog new/pycurl-7.43.0.6/ChangeLog --- old/pycurl-7.43.0.5/ChangeLog 2020-01-30 05:04:36.000000000 +0100 +++ new/pycurl-7.43.0.6/ChangeLog 2020-09-02 07:16:18.000000000 +0200 @@ -1,3 +1,33 @@ +Version 7.43.0.6 [requires libcurl-7.19.0 or better] - 2020-09-02 +----------------------------------------------------------------- + + * Fixed offset parameter usage in seek callback (patch by Scott Talbert). + + * Added support for libcurl SSL backend detection via + `curl-config --ssl-backends` (patch by Scott Talbert). + + * Added support for libcurl MultiSSL (patch by Bo Anderson). + + * Added ability to unset CURLOPT_PROXY. + + * Added support for CURLOPT_UPLOAD_BUFFERSIZE (patch by Artur Sobierak). + + * Added support for CURLOPT_MAXAGE_CONN (patch by Artur Sobierak). + + * Added support for sharing connection cache in libcurl (patch by + Artur Sobierak). + + * Added support for CURLOPT_HAPROXYPROTOCOL (patch by + Russell McConnachie). + + * CC and CFLAGS environment variables are now respected when building + (patch by Micha?? G??rny). + + * Fixed OpenSSL detection on CentOS 7 and 8 (patch by Nicolas Pauss). + + * surrogateescape error handler is used in multi_info_read to handle + invalid UTF-8. + Version 7.43.0.5 [requires libcurl-7.19.0 or better] - 2020-01-29 ----------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/MANIFEST.in new/pycurl-7.43.0.6/MANIFEST.in --- old/pycurl-7.43.0.5/MANIFEST.in 2018-06-13 20:07:03.000000000 +0200 +++ new/pycurl-7.43.0.6/MANIFEST.in 2020-09-02 06:53:50.000000000 +0200 @@ -51,3 +51,4 @@ include tests/vsftpd.conf include winbuild.py include winbuild/* +exclude tests/fake-curl/libcurl/*.so diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/PKG-INFO new/pycurl-7.43.0.6/PKG-INFO --- old/pycurl-7.43.0.5/PKG-INFO 2020-01-30 06:05:46.000000000 +0100 +++ new/pycurl-7.43.0.6/PKG-INFO 2020-09-02 07:16:25.060707300 +0200 @@ -1,10 +1,12 @@ -Metadata-Version: 1.1 +Metadata-Version: 1.2 Name: pycurl -Version: 7.43.0.5 +Version: 7.43.0.6 Summary: PycURL -- A Python Interface To The cURL library Home-page: http://pycurl.io/ -Author: Oleg Pudeyev -Author-email: o...@bsdpower.com +Author: Kjetil Jacobsen, Markus F.X.J. Oberhumer, Oleg Pudeyev +Author-email: kjeti...@gmail.com, mar...@oberhumer.com, o...@bsdpower.com +Maintainer: Oleg Pudeyev +Maintainer-email: o...@bsdpower.com License: LGPL/MIT Description: PycURL -- A Python Interface To The cURL library ================================================ @@ -34,7 +36,7 @@ Requirements ------------ - - Python 2.7 or 3.4 through 3.6. + - Python 3.5-3.8. - libcurl 7.19.0 or better. @@ -104,3 +106,4 @@ Classifier: Programming Language :: Python :: 3.8 Classifier: Topic :: Internet :: File Transfer Protocol (FTP) Classifier: Topic :: Internet :: WWW/HTTP +Requires-Python: >=3.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/RELEASE-NOTES.rst new/pycurl-7.43.0.6/RELEASE-NOTES.rst --- old/pycurl-7.43.0.5/RELEASE-NOTES.rst 2020-01-30 05:06:50.000000000 +0100 +++ new/pycurl-7.43.0.6/RELEASE-NOTES.rst 2020-09-02 07:16:18.000000000 +0200 @@ -1,6 +1,13 @@ Release Notes ============= +PycURL 7.43.0.6 - 2020-09-02 +---------------------------- + +This release improves SSL backend detection on various systems, adds support +for libcurl's multiple SSL backend functionality and adds support for several +libcurl options. + PycURL 7.43.0.5 - 2020-01-29 ---------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/doc/conf.py new/pycurl-7.43.0.6/doc/conf.py --- old/pycurl-7.43.0.5/doc/conf.py 2020-01-30 05:04:57.000000000 +0100 +++ new/pycurl-7.43.0.6/doc/conf.py 2020-09-02 07:16:18.000000000 +0200 @@ -54,9 +54,9 @@ # built documents. # # The short X.Y version. -version = '7.43.0.5' +version = '7.43.0.6' # The full version, including alpha/beta/rc tags. -release = '7.43.0.5' +release = '7.43.0.6' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/doc/docstrings/multi_info_read.rst new/pycurl-7.43.0.6/doc/docstrings/multi_info_read.rst --- old/pycurl-7.43.0.5/doc/docstrings/multi_info_read.rst 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/doc/docstrings/multi_info_read.rst 2020-09-02 06:53:50.000000000 +0200 @@ -1,13 +1,17 @@ info_read([max_objects]) -> tuple(number of queued messages, a list of successful objects, a list of failed objects) -Returns a tuple (number of queued handles, [curl objects]). +Corresponds to the `curl_multi_info_read`_ function in libcurl. -Corresponds to the `curl_multi_info_read`_ function in libcurl. This -method extracts at most *max* messages from the multi stack and returns them -in two lists. The first list contains the handles which completed +This method extracts at most *max* messages from the multi stack and returns +them in two lists. The first list contains the handles which completed successfully and the second list contains a tuple *(curl object, curl error -number, curl error message)* for each failed curl object. The number of +number, curl error message)* for each failed curl object. The curl error +message is returned as a Python string which is decoded from the curl error +string using the `surrogateescape`_ error handler. The number of queued messages after this method has been called is also returned. .. _curl_multi_info_read: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html + +.. _surrogateescape: + https://www.python.org/dev/peps/pep-0383/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/doc/docstrings/share_setopt.rst new/pycurl-7.43.0.6/doc/docstrings/share_setopt.rst --- old/pycurl-7.43.0.5/doc/docstrings/share_setopt.rst 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/doc/docstrings/share_setopt.rst 2020-09-02 06:53:50.000000000 +0200 @@ -5,7 +5,8 @@ Corresponds to `curl_share_setopt`_ in libcurl, where *option* is specified with the ``CURLSHOPT_*`` constants in libcurl, except that the ``CURLSHOPT_`` prefix has been changed to ``SH_``. Currently, *value* must be -either ``LOCK_DATA_COOKIE`` or ``LOCK_DATA_DNS``. +one of: ``LOCK_DATA_COOKIE``, ``LOCK_DATA_DNS``, ``LOCK_DATA_SSL_SESSION`` or +``LOCK_DATA_CONNECT``. Example usage:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/pycurl.egg-info/PKG-INFO new/pycurl-7.43.0.6/pycurl.egg-info/PKG-INFO --- old/pycurl-7.43.0.5/pycurl.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/pycurl-7.43.0.6/pycurl.egg-info/PKG-INFO 2020-09-02 07:16:24.000000000 +0200 @@ -0,0 +1,109 @@ +Metadata-Version: 1.2 +Name: pycurl +Version: 7.43.0.6 +Summary: PycURL -- A Python Interface To The cURL library +Home-page: http://pycurl.io/ +Author: Kjetil Jacobsen, Markus F.X.J. Oberhumer, Oleg Pudeyev +Author-email: kjeti...@gmail.com, mar...@oberhumer.com, o...@bsdpower.com +Maintainer: Oleg Pudeyev +Maintainer-email: o...@bsdpower.com +License: LGPL/MIT +Description: PycURL -- A Python Interface To The cURL library + ================================================ + + PycURL is a Python interface to `libcurl`_, the multiprotocol file + transfer library. Similarly to the urllib_ Python module, + PycURL can be used to fetch objects identified by a URL from a Python program. + Beyond simple fetches however PycURL exposes most of the functionality of + libcurl, including: + + - Speed - libcurl is very fast and PycURL, being a thin wrapper above + libcurl, is very fast as well. PycURL `was benchmarked`_ to be several + times faster than requests_. + - Features including multiple protocol support, SSL, authentication and + proxy options. PycURL supports most of libcurl's callbacks. + - Multi_ and share_ interfaces. + - Sockets used for network operations, permitting integration of PycURL + into the application's I/O loop (e.g., using Tornado_). + + .. _was benchmarked: http://stackoverflow.com/questions/15461995/python-requests-vs-pycurl-performance + .. _requests: http://python-requests.org/ + .. _Multi: https://curl.haxx.se/libcurl/c/libcurl-multi.html + .. _share: https://curl.haxx.se/libcurl/c/libcurl-share.html + .. _Tornado: http://www.tornadoweb.org/ + + + Requirements + ------------ + + - Python 3.5-3.8. + - libcurl 7.19.0 or better. + + + Installation + ------------ + + Download source and binary distributions from `PyPI`_ or `Bintray`_. + Binary wheels are now available for 32 and 64 bit Windows versions. + + Please see `the installation documentation`_ for installation instructions. + + .. _PyPI: https://pypi.python.org/pypi/pycurl + .. _Bintray: https://dl.bintray.com/pycurl/pycurl/ + .. _the installation documentation: http://pycurl.io/docs/latest/install.html + + + Documentation + ------------- + + Documentation for the most recent PycURL release is available on + `PycURL website <http://pycurl.io/docs/latest/>`_. + + + Support + ------- + + For support questions please use `curl-and-python mailing list`_. + `Mailing list archives`_ are available for your perusal as well. + + Although not an official support venue, `Stack Overflow`_ has been + popular with some PycURL users. + + Bugs can be reported `via GitHub`_. Please use GitHub only for bug + reports and direct questions to our mailing list instead. + + .. _curl-and-python mailing list: http://cool.haxx.se/mailman/listinfo/curl-and-python + .. _Stack Overflow: http://stackoverflow.com/questions/tagged/pycurl + .. _Mailing list archives: https://curl.haxx.se/mail/list.cgi?list=curl-and-python + .. _via GitHub: https://github.com/pycurl/pycurl/issues + + + License + ------- + + PycURL is dual licensed under the LGPL and an MIT/X derivative license + based on the libcurl license. The complete text of the licenses is available + in COPYING-LGPL_ and COPYING-MIT_ files in the source distribution. + + .. _libcurl: https://curl.haxx.se/libcurl/ + .. _urllib: http://docs.python.org/library/urllib.html + .. _COPYING-LGPL: https://raw.githubusercontent.com/pycurl/pycurl/master/COPYING-LGPL + .. _COPYING-MIT: https://raw.githubusercontent.com/pycurl/pycurl/master/COPYING-MIT + +Keywords: curl,libcurl,urllib,wget,download,file transfer,http,www +Platform: All +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: POSIX +Classifier: Programming Language :: Python :: 3 +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: Topic :: Internet :: File Transfer Protocol (FTP) +Classifier: Topic :: Internet :: WWW/HTTP +Requires-Python: >=3.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/pycurl.egg-info/SOURCES.txt new/pycurl-7.43.0.6/pycurl.egg-info/SOURCES.txt --- old/pycurl-7.43.0.5/pycurl.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/pycurl-7.43.0.6/pycurl.egg-info/SOURCES.txt 2020-09-02 07:16:24.000000000 +0200 @@ -0,0 +1,228 @@ +AUTHORS +COPYING-LGPL +COPYING-MIT +ChangeLog +INSTALL.rst +MANIFEST.in +Makefile +README.rst +RELEASE-NOTES.rst +requirements-dev.txt +setup.py +winbuild.py +doc/callbacks.rst +doc/conf.py +doc/curl.rst +doc/curlmultiobject.rst +doc/curlobject.rst +doc/curlshareobject.rst +doc/files.rst +doc/index.rst +doc/install.rst +doc/internals.rst +doc/pycurl.rst +doc/quickstart.rst +doc/release-notes.rst +doc/release-process.rst +doc/thread-safety.rst +doc/troubleshooting.rst +doc/unicode.rst +doc/unimplemented.rst +doc/docstrings/curl.rst +doc/docstrings/curl_close.rst +doc/docstrings/curl_errstr.rst +doc/docstrings/curl_errstr_raw.rst +doc/docstrings/curl_getinfo.rst +doc/docstrings/curl_getinfo_raw.rst +doc/docstrings/curl_pause.rst +doc/docstrings/curl_perform.rst +doc/docstrings/curl_perform_rb.rst +doc/docstrings/curl_perform_rs.rst +doc/docstrings/curl_reset.rst +doc/docstrings/curl_set_ca_certs.rst +doc/docstrings/curl_setopt.rst +doc/docstrings/curl_setopt_string.rst +doc/docstrings/curl_unsetopt.rst +doc/docstrings/multi.rst +doc/docstrings/multi_add_handle.rst +doc/docstrings/multi_assign.rst +doc/docstrings/multi_close.rst +doc/docstrings/multi_fdset.rst +doc/docstrings/multi_info_read.rst +doc/docstrings/multi_perform.rst +doc/docstrings/multi_remove_handle.rst +doc/docstrings/multi_select.rst +doc/docstrings/multi_setopt.rst +doc/docstrings/multi_socket_action.rst +doc/docstrings/multi_socket_all.rst +doc/docstrings/multi_timeout.rst +doc/docstrings/pycurl_global_cleanup.rst +doc/docstrings/pycurl_global_init.rst +doc/docstrings/pycurl_module.rst +doc/docstrings/pycurl_version_info.rst +doc/docstrings/share.rst +doc/docstrings/share_close.rst +doc/docstrings/share_setopt.rst +doc/static/favicon.ico +examples/basicfirst.py +examples/file_upload.py +examples/linksys.py +examples/opensocketexception.py +examples/retriever-multi.py +examples/retriever.py +examples/sfquery.py +examples/smtp.py +examples/ssh_keyfunction.py +examples/xmlrpc_curl.py +examples/quickstart/file_upload_buffer.py +examples/quickstart/file_upload_real.py +examples/quickstart/file_upload_real_fancy.py +examples/quickstart/follow_redirect.py +examples/quickstart/form_post.py +examples/quickstart/get.py +examples/quickstart/get_python2.py +examples/quickstart/get_python2_https.py +examples/quickstart/get_python3.py +examples/quickstart/get_python3_https.py +examples/quickstart/put_buffer.py +examples/quickstart/put_file.py +examples/quickstart/response_headers.py +examples/quickstart/response_info.py +examples/quickstart/write_file.py +examples/tests/test_build_config.py +examples/tests/test_gtk.py +examples/tests/test_xmlrpc.py +pycurl.egg-info/PKG-INFO +pycurl.egg-info/SOURCES.txt +pycurl.egg-info/dependency_links.txt +pycurl.egg-info/top_level.txt +python/curl/__init__.py +src/docstrings.c +src/docstrings.h +src/easy.c +src/easycb.c +src/easyinfo.c +src/easyopt.c +src/easyperform.c +src/module.c +src/multi.c +src/oscompat.c +src/pycurl.h +src/pythoncompat.c +src/share.c +src/stringcompat.c +src/threadsupport.c +src/util.c +tests/__init__.py +tests/app.py +tests/appmanager.py +tests/cadata_test.py +tests/certinfo_test.py +tests/close_socket_cb_test.py +tests/curl_object_test.py +tests/debug_test.py +tests/default_write_cb_test.py +tests/error_constants_test.py +tests/error_test.py +tests/failonerror_test.py +tests/ftp_test.py +tests/getinfo_test.py +tests/global_init_test.py +tests/header_cb_test.py +tests/header_test.py +tests/high_level_curl_test.py +tests/info_constants_test.py +tests/info_test.py +tests/internals_test.py +tests/matrix.py +tests/memory_mgmt_test.py +tests/multi_memory_mgmt_test.py +tests/multi_option_constants_test.py +tests/multi_socket_select_test.py +tests/multi_socket_test.py +tests/multi_test.py +tests/multi_timer_test.py +tests/open_socket_cb_test.py +tests/option_constants_test.py +tests/pause_test.py +tests/perform_test.py +tests/post_test.py +tests/procmgr.py +tests/protocol_constants_test.py +tests/read_cb_test.py +tests/readdata_test.py +tests/relative_url_test.py +tests/reload_test.py +tests/reset_test.py +tests/resolve_test.py +tests/run-quickstart.sh +tests/run.sh +tests/runwsgi.py +tests/seek_cb_constants_test.py +tests/seek_cb_test.py +tests/setopt_lifecycle_test.py +tests/setopt_string_test.py +tests/setopt_test.py +tests/setopt_unicode_test.py +tests/setup_test.py +tests/share_test.py +tests/sockopt_cb_test.py +tests/ssh_key_cb_test.py +tests/unset_range_test.py +tests/user_agent_string_test.py +tests/util.py +tests/version_comparison_test.py +tests/version_constants_test.py +tests/version_test.py +tests/vsftpd.conf +tests/weakref_test.py +tests/write_abort_test.py +tests/write_cb_bogus_test.py +tests/write_test.py +tests/write_to_stringio_test.py +tests/xferinfo_cb_test.py +tests/certs/ca.crt +tests/certs/ca.key +tests/certs/server.crt +tests/certs/server.key +tests/ext/test-lib.sh +tests/ext/test-suite.sh +tests/fake-curl/curl-config-empty +tests/fake-curl/curl-config-libs-and-static-libs +tests/fake-curl/curl-config-ssl-feature-only +tests/fake-curl/curl-config-ssl-in-libs +tests/fake-curl/curl-config-ssl-in-static-libs +tests/fake-curl/libcurl/Makefile +tests/fake-curl/libcurl/with_gnutls.c +tests/fake-curl/libcurl/with_nss.c +tests/fake-curl/libcurl/with_openssl.c +tests/fake-curl/libcurl/with_unknown_ssl.c +tests/fake-curl/libcurl/without_ssl.c +tests/fixtures/form_submission.txt +tests/matrix/curl-7.19.0-sslv2-2b0e09b0f98.patch +tests/matrix/curl-7.19.0-sslv2-c66b0b32fba-modified.patch +tests/matrix/openssl-1.0.1e-fix_pod_syntax-1.patch +winbuild/__init__.py +winbuild/builder.py +winbuild/c-ares-vs2015.patch +winbuild/cares.py +winbuild/config.py +winbuild/curl.py +winbuild/iconv.py +winbuild/idn.py +winbuild/libcurl-fix-zlib-references.patch +winbuild/libssh2-vs2015.patch +winbuild/nghttp_cmake.py +winbuild/nghttp_gmake.py +winbuild/openssl-fix-crt-1.0.2.patch +winbuild/openssl-fix-crt-1.1.0.patch +winbuild/openssl-fix-crt-1.1.1.patch +winbuild/openssl.py +winbuild/pycurl.py +winbuild/pythons.py +winbuild/ssh.py +winbuild/tools.py +winbuild/utils.py +winbuild/vcvars-vc14-32.sh +winbuild/vcvars-vc14-64.sh +winbuild/zlib.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/pycurl.egg-info/dependency_links.txt new/pycurl-7.43.0.6/pycurl.egg-info/dependency_links.txt --- old/pycurl-7.43.0.5/pycurl.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/pycurl-7.43.0.6/pycurl.egg-info/dependency_links.txt 2020-09-02 07:16:24.000000000 +0200 @@ -0,0 +1 @@ + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/pycurl.egg-info/top_level.txt new/pycurl-7.43.0.6/pycurl.egg-info/top_level.txt --- old/pycurl-7.43.0.5/pycurl.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/pycurl-7.43.0.6/pycurl.egg-info/top_level.txt 2020-09-02 07:16:24.000000000 +0200 @@ -0,0 +1,2 @@ +curl +pycurl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/setup.cfg new/pycurl-7.43.0.6/setup.cfg --- old/pycurl-7.43.0.5/setup.cfg 1970-01-01 01:00:00.000000000 +0100 +++ new/pycurl-7.43.0.6/setup.cfg 2020-09-02 07:16:25.060707300 +0200 @@ -0,0 +1,4 @@ +[egg_info] +tag_build = +tag_date = 0 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/setup.py new/pycurl-7.43.0.6/setup.py --- old/pycurl-7.43.0.5/setup.py 2020-01-30 05:05:01.000000000 +0100 +++ new/pycurl-7.43.0.6/setup.py 2020-09-02 07:16:18.000000000 +0200 @@ -6,7 +6,7 @@ PACKAGE = "pycurl" PY_PACKAGE = "curl" -VERSION = "7.43.0.5" +VERSION = "7.43.0.6" import glob, os, re, sys, subprocess import distutils @@ -182,6 +182,9 @@ ssl_lib_detected = self.detect_ssl_lib_from_libcurl_dll(libcurl_dll_path) if not ssl_lib_detected: + ssl_lib_detected = self.detect_ssl_lib_using_curl_config() + + if not ssl_lib_detected: # self.sslhintbuf is a hack for arg in split_quoted(self.sslhintbuf): if arg[:2] == "-l": @@ -211,7 +214,7 @@ and not os.environ.get('PYCURL_SSL_LIBRARY'): # this path should only be taken when no options or # configuration environment variables are given to setup.py - ssl_lib_detected = self.detect_ssl_lib_on_centos6() + ssl_lib_detected = self.detect_ssl_lib_on_centos6_plus() self.ssl_lib_detected = ssl_lib_detected @@ -372,7 +375,7 @@ ssl_lib_detected = 'mbedtls' return ssl_lib_detected - def detect_ssl_lib_on_centos6(self): + def detect_ssl_lib_on_centos6_plus(self): import platform from ctypes.util import find_library os_name = platform.system() @@ -380,12 +383,35 @@ return False dist_name, dist_version, _ = platform.dist() dist_version = dist_version.split('.')[0] - if dist_name != 'centos' or dist_version != '6': + if dist_name != 'centos' or int(dist_version) < 6: return False libcurl_dll_path = find_library('curl') print('libcurl_dll_path = "%s"' % libcurl_dll_path) return self.detect_ssl_lib_from_libcurl_dll(libcurl_dll_path) + def detect_ssl_lib_using_curl_config(self): + ssl_lib_detected = None + p = subprocess.Popen((self.curl_config(), '--ssl-backends'), + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = p.communicate() + if p.wait() != 0: + # curl-config --ssl-backends is not supported on older curl versions + return None + ssl_version = stdout.decode() + if ssl_version.startswith('OpenSSL') or ssl_version.startswith('LibreSSL'): + self.using_openssl() + ssl_lib_detected = 'openssl' + elif ssl_version.startswith('GnuTLS'): + self.using_gnutls() + ssl_lib_detected = 'gnutls' + elif ssl_version.startswith('NSS'): + self.using_nss() + ssl_lib_detected = 'nss' + elif ssl_version.startswith('mbedTLS'): + self.using_mbedtls() + ssl_lib_detected = 'mbedtls' + return ssl_lib_detected + def configure_windows(self): # Windows users have to pass --curl-dir parameter to specify path # to libcurl, because there is no curl-config on windows at all. @@ -817,7 +843,7 @@ Requirements ------------ -- Python 2.7 or 3.4 through 3.6. +- Python 3.5-3.8. - libcurl 7.19.0 or better. @@ -897,6 +923,7 @@ ], packages=[PY_PACKAGE], package_dir={ PY_PACKAGE: os.path.join('python', 'curl') }, + python_requires='>=3.5', ) if sys.platform == "win32": diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/docstrings.c new/pycurl-7.43.0.6/src/docstrings.c --- old/pycurl-7.43.0.5/src/docstrings.c 2020-01-30 05:08:02.000000000 +0100 +++ new/pycurl-7.43.0.6/src/docstrings.c 2020-09-02 07:10:33.000000000 +0200 @@ -501,17 +501,21 @@ PYCURL_INTERNAL const char multi_info_read_doc[] = "info_read([max_objects]) -> tuple(number of queued messages, a list of successful objects, a list of failed objects)\n\ \n\ -Returns a tuple (number of queued handles, [curl objects]).\n\ +Corresponds to the `curl_multi_info_read`_ function in libcurl.\n\ \n\ -Corresponds to the `curl_multi_info_read`_ function in libcurl. This\n\ -method extracts at most *max* messages from the multi stack and returns them\n\ -in two lists. The first list contains the handles which completed\n\ +This method extracts at most *max* messages from the multi stack and returns\n\ +them in two lists. The first list contains the handles which completed\n\ successfully and the second list contains a tuple *(curl object, curl error\n\ -number, curl error message)* for each failed curl object. The number of\n\ +number, curl error message)* for each failed curl object. The curl error\n\ +message is returned as a Python string which is decoded from the curl error\n\ +string using the `surrogateescape`_ error handler. The number of\n\ queued messages after this method has been called is also returned.\n\ \n\ .. _curl_multi_info_read:\n\ - https://curl.haxx.se/libcurl/c/curl_multi_info_read.html"; + https://curl.haxx.se/libcurl/c/curl_multi_info_read.html\n\ +\n\ +.. _surrogateescape:\n\ + https://www.python.org/dev/peps/pep-0383/"; PYCURL_INTERNAL const char multi_perform_doc[] = "perform() -> tuple of status and the number of active Curl objects\n\ \n\ @@ -688,7 +692,8 @@ Corresponds to `curl_share_setopt`_ in libcurl, where *option* is\n\ specified with the ``CURLSHOPT_*`` constants in libcurl, except that the\n\ ``CURLSHOPT_`` prefix has been changed to ``SH_``. Currently, *value* must be\n\ -either ``LOCK_DATA_COOKIE`` or ``LOCK_DATA_DNS``.\n\ +one of: ``LOCK_DATA_COOKIE``, ``LOCK_DATA_DNS``, ``LOCK_DATA_SSL_SESSION`` or\n\ +``LOCK_DATA_CONNECT``.\n\ \n\ Example usage::\n\ \n\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/easycb.c new/pycurl-7.43.0.6/src/easycb.c --- old/pycurl-7.43.0.5/src/easycb.c 2018-06-13 20:07:03.000000000 +0200 +++ new/pycurl-7.43.0.6/src/easycb.c 2020-09-02 06:53:50.000000000 +0200 @@ -485,7 +485,7 @@ cb = self->seek_cb; if (cb == NULL) goto silent_error; - arglist = Py_BuildValue("(i,i)", offset, source); + arglist = Py_BuildValue("(L,i)", (PY_LONG_LONG) offset, source); if (arglist == NULL) goto verbose_error; result = PyEval_CallObject(cb, arglist); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/easyopt.c new/pycurl-7.43.0.6/src/easyopt.c --- old/pycurl-7.43.0.5/src/easyopt.c 2019-06-17 07:14:54.000000000 +0200 +++ new/pycurl-7.43.0.6/src/easyopt.c 2020-09-02 06:53:50.000000000 +0200 @@ -100,6 +100,10 @@ case CURLOPT_PASSWORD: #endif case CURLOPT_RANGE: +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 10, 0) + /* added by 0ff89b9c3c02a911e1e5ea9a4182c373a6e0f1c7 */ + case CURLOPT_PROXY: +#endif #if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 43, 0) case CURLOPT_SERVICE_NAME: case CURLOPT_PROXY_SERVICE_NAME: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/module.c new/pycurl-7.43.0.6/src/module.c --- old/pycurl-7.43.0.5/src/module.c 2019-07-05 01:24:02.000000000 +0200 +++ new/pycurl-7.43.0.6/src/module.c 2020-09-02 06:53:50.000000000 +0200 @@ -322,12 +322,21 @@ { PyObject *m, *d; const curl_version_info_data *vi; - const char *libcurl_version, *runtime_ssl_lib; + const char *libcurl_version; size_t libcurl_version_len, pycurl_version_len; PyObject *xio_module = NULL; PyObject *collections_module = NULL; PyObject *named_tuple = NULL; PyObject *arglist = NULL; +#ifdef HAVE_CURL_GLOBAL_SSLSET + const curl_ssl_backend **ssllist = NULL; + CURLsslset sslset; + int i, runtime_supported_backend_found = 0; + char backends[200]; + size_t backends_len = 0; +#else + const char *runtime_ssl_lib; +#endif assert(Curl_Type.tp_weaklistoffset > 0); assert(CurlMulti_Type.tp_weaklistoffset > 0); @@ -346,6 +355,36 @@ } /* Our compiled crypto locks should correspond to runtime ssl library. */ +#ifdef HAVE_CURL_GLOBAL_SSLSET + sslset = curl_global_sslset(-1, COMPILE_SSL_LIB, &ssllist); + if (sslset != CURLSSLSET_OK) { + if (sslset == CURLSSLSET_NO_BACKENDS) { + strcpy(backends, "none"); + } else { + for (i = 0; ssllist[i] != NULL; i++) { + switch (ssllist[i]->id) { + case CURLSSLBACKEND_OPENSSL: + case CURLSSLBACKEND_GNUTLS: + case CURLSSLBACKEND_NSS: + case CURLSSLBACKEND_WOLFSSL: + case CURLSSLBACKEND_MBEDTLS: + runtime_supported_backend_found = 1; + break; + default: + break; + } + if (backends_len < sizeof(backends)) { + backends_len += snprintf(backends + backends_len, sizeof(backends) - backends_len, "%s%s", (i > 0) ? ", " : "", ssllist[i]->name); + } + } + } + /* Don't error if both the curl library and pycurl itself is compiled without SSL */ + if (runtime_supported_backend_found || COMPILE_SUPPORTED_SSL_BACKEND_FOUND) { + PyErr_Format(PyExc_ImportError, "pycurl: libcurl link-time ssl backends (%s) do not include compile-time ssl backend (%s)", backends, COMPILE_SSL_LIB); + goto error; + } + } +#else if (vi->ssl_version == NULL) { runtime_ssl_lib = "none/other"; } else if (!strncmp(vi->ssl_version, "OpenSSL/", 8) || !strncmp(vi->ssl_version, "LibreSSL/", 9) || @@ -366,6 +405,7 @@ PyErr_Format(PyExc_ImportError, "pycurl: libcurl link-time ssl backend (%s) is different from compile-time ssl backend (%s)", runtime_ssl_lib, COMPILE_SSL_LIB); goto error; } +#endif /* Initialize the type of the new type objects here; doing it here * is required for portability to Windows without requiring C++. */ @@ -791,6 +831,9 @@ insint_c(d, "OPT_FILETIME", CURLOPT_FILETIME); insint_c(d, "MAXREDIRS", CURLOPT_MAXREDIRS); insint_c(d, "MAXCONNECTS", CURLOPT_MAXCONNECTS); +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 65, 0) + insint_c(d, "MAXAGE_CONN", CURLOPT_MAXAGE_CONN); +#endif insint_c(d, "FRESH_CONNECT", CURLOPT_FRESH_CONNECT); insint_c(d, "FORBID_REUSE", CURLOPT_FORBID_REUSE); insint_c(d, "RANDOM_FILE", CURLOPT_RANDOM_FILE); @@ -813,6 +856,9 @@ insint_c(d, "DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE); insint_c(d, "DEBUGFUNCTION", CURLOPT_DEBUGFUNCTION); insint_c(d, "BUFFERSIZE", CURLOPT_BUFFERSIZE); +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 62, 0) + insint_c(d, "UPLOAD_BUFFERSIZE", CURLOPT_UPLOAD_BUFFERSIZE); +#endif insint_c(d, "NOSIGNAL", CURLOPT_NOSIGNAL); insint_c(d, "SHARE", CURLOPT_SHARE); insint_c(d, "PROXYTYPE", CURLOPT_PROXYTYPE); @@ -1075,6 +1121,9 @@ insint_c(d, "SSLVERSION_MAX_TLSv1_2", CURL_SSLVERSION_MAX_TLSv1_2); insint_c(d, "SSLVERSION_MAX_TLSv1_3", CURL_SSLVERSION_MAX_TLSv1_3); #endif +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 60, 0) + insint_c(d, "HAPROXYPROTOCOL", CURLOPT_HAPROXYPROTOCOL); +#endif /* curl_TimeCond: constants for setopt(TIMECONDITION, x) */ insint_c(d, "TIMECONDITION_NONE", CURL_TIMECOND_NONE); @@ -1341,6 +1390,9 @@ insint_s(d, "LOCK_DATA_COOKIE", CURL_LOCK_DATA_COOKIE); insint_s(d, "LOCK_DATA_DNS", CURL_LOCK_DATA_DNS); insint_s(d, "LOCK_DATA_SSL_SESSION", CURL_LOCK_DATA_SSL_SESSION); +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 57, 0) + insint_s(d, "LOCK_DATA_CONNECT", CURL_LOCK_DATA_CONNECT); +#endif /* Initialize callback locks if ssl is enabled */ #if defined(PYCURL_NEED_SSL_TSL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/multi.c new/pycurl-7.43.0.6/src/multi.c --- old/pycurl-7.43.0.5/src/multi.c 2020-01-15 01:23:26.000000000 +0100 +++ new/pycurl-7.43.0.6/src/multi.c 2020-09-02 06:53:50.000000000 +0200 @@ -806,9 +806,14 @@ } else { /* Create a result tuple that will get added to err_list. */ - PyObject *v = Py_BuildValue("(Ois)", (PyObject *)co, (int)msg->data.result, co->error); + PyObject *error_str = PyUnicode_DecodeLocale(co->error, "surrogateescape"); + if (error_str == NULL) { + goto error; + } + PyObject *v = Py_BuildValue("(OiO)", (PyObject *)co, (int)msg->data.result, error_str); /* Append curl object to list of objects which failed */ if (v == NULL || PyList_Append(err_list, v) != 0) { + Py_XDECREF(error_str); Py_XDECREF(v); goto error; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/pycurl.h new/pycurl-7.43.0.6/src/pycurl.h --- old/pycurl-7.43.0.5/src/pycurl.h 2020-01-15 01:20:00.000000000 +0100 +++ new/pycurl-7.43.0.6/src/pycurl.h 2020-09-02 06:53:50.000000000 +0200 @@ -154,6 +154,15 @@ #define HAVE_CURLINFO_HTTP_VERSION #endif +#if LIBCURL_VERSION_NUM >= 0x073C00 /* check for 7.60.0 or greater */ +#define HAVE_CURLOPT_HAPROXYPROTOCOL +#endif + +/* curl_global_sslset() was added in 7.56.0 but was buggy until 7.63.0 */ +#if LIBCURL_VERSION_NUM >= 0x073F00 /* check for 7.63.0 or greater */ +#define HAVE_CURL_GLOBAL_SSLSET +#endif + #undef UNUSED #define UNUSED(var) ((void)&var) @@ -165,6 +174,7 @@ # include <openssl/ssl.h> # include <openssl/err.h> # define COMPILE_SSL_LIB "openssl" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 1 # elif defined(HAVE_CURL_WOLFSSL) # include <wolfssl/options.h> # if defined(OPENSSL_EXTRA) @@ -187,6 +197,7 @@ # endif # endif # define COMPILE_SSL_LIB "wolfssl" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 1 # elif defined(HAVE_CURL_GNUTLS) # include <gnutls/gnutls.h> # if GNUTLS_VERSION_NUMBER <= 0x020b00 @@ -195,13 +206,16 @@ # include <gcrypt.h> # endif # define COMPILE_SSL_LIB "gnutls" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 1 # elif defined(HAVE_CURL_NSS) # define COMPILE_SSL_LIB "nss" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 1 # elif defined(HAVE_CURL_MBEDTLS) # include <mbedtls/ssl.h> # define PYCURL_NEED_SSL_TSL # define PYCURL_NEED_MBEDTLS_TSL # define COMPILE_SSL_LIB "mbedtls" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 1 # else # ifdef _MSC_VER /* sigh */ @@ -218,9 +232,11 @@ /* since we have no crypto callbacks for other ssl backends, * no reason to require users match those */ # define COMPILE_SSL_LIB "none/other" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 0 # endif /* HAVE_CURL_OPENSSL || HAVE_CURL_WOLFSSL || HAVE_CURL_GNUTLS || HAVE_CURL_NSS || HAVE_CURL_MBEDTLS */ #else # define COMPILE_SSL_LIB "none/other" +# define COMPILE_SUPPORTED_SSL_BACKEND_FOUND 0 #endif /* HAVE_CURL_SSL */ #if defined(PYCURL_NEED_SSL_TSL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/src/share.c new/pycurl-7.43.0.6/src/share.c --- old/pycurl-7.43.0.5/src/share.c 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/src/share.c 2020-09-02 06:53:50.000000000 +0200 @@ -180,7 +180,15 @@ /* Handle the case of integer arguments */ if (PyInt_Check(obj)) { long d = PyInt_AsLong(obj); - if (d != CURL_LOCK_DATA_COOKIE && d != CURL_LOCK_DATA_DNS && d != CURL_LOCK_DATA_SSL_SESSION) { + switch(d) { + case CURL_LOCK_DATA_COOKIE: + case CURL_LOCK_DATA_DNS: + case CURL_LOCK_DATA_SSL_SESSION: +#if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 57, 0) + case CURL_LOCK_DATA_CONNECT: +#endif + break; + default: goto error; } switch(option) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/tests/certs/ca.crt new/pycurl-7.43.0.6/tests/certs/ca.crt --- old/pycurl-7.43.0.5/tests/certs/ca.crt 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/tests/certs/ca.crt 2020-09-02 06:53:50.000000000 +0200 @@ -1,24 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEGzCCAwOgAwIBAgIJAJYfjyO6SAVVMA0GCSqGSIb3DQEBBQUAMGYxCzAJBgNV -BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRowGAYDVQQKExFQeWNVUkwgdGVz -dCBzdWl0ZTESMBAGA1UECxMJbG9jYWxob3N0MRIwEAYDVQQDEwlsb2NhbGhvc3Qw -HhcNMTcwNTI2MDcxNzM3WhcNNDQxMDExMDcxNzM3WjBmMQswCQYDVQQGEwJBVTET -MBEGA1UECBMKU29tZS1TdGF0ZTEaMBgGA1UEChMRUHljVVJMIHRlc3Qgc3VpdGUx -EjAQBgNVBAsTCWxvY2FsaG9zdDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAra7SYD1pzWQhxJryYKf9AuKPJfLamkcq -Y062YBUgoSDCx0ZjFfMTa2u0zqG2Vt2ETuvVkDhBAw/0AF7vLChU9tjANKXuhRIK -zGrqEk/wOMFxtbVYGwc+VufB3NBB3fOXFjwe/yAP5N/Zw4+P3Lkn4OAVRFvpRrNh -RgixJUVpqzjzzELMj+ZZcLlYWkUOUDfMEIJHeZ9sFxdrbENnTmJieX1Q47ND9H9E -zQloUvc8Xf6K1e1KliIhlombdo3RLAGUzZlWlG2WorFzX161E2hY2FHFId9SusWH -NJxKsmOUerNv0rWYez54OOwXWh/2OKcNV1hK1IFKkEHUP7UMLhvAUwIDAQABo4HL -MIHIMB0GA1UdDgQWBBQu1NQH28vT0GEQe3ZIFM2R/ZpGwTCBmAYDVR0jBIGQMIGN -gBQu1NQH28vT0GEQe3ZIFM2R/ZpGwaFqpGgwZjELMAkGA1UEBhMCQVUxEzARBgNV -BAgTClNvbWUtU3RhdGUxGjAYBgNVBAoTEVB5Y1VSTCB0ZXN0IHN1aXRlMRIwEAYD -VQQLEwlsb2NhbGhvc3QxEjAQBgNVBAMTCWxvY2FsaG9zdIIJAJYfjyO6SAVVMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAYSpSiFOhdPC1Q6wvLlHC+R -6m4L9B++wvnZd0MUVgUf0zlxCVZwitkj+39SX5mTrn4SZTEKt73M+bT/pfdjUaKd -qSztbp4xVCnMN5QBt9UH7W565t296pzgwhv97PGvBgMhW91dQIoi4TeloYL1O41z -bPgIrTg+W87+ugorZNFPWHAgKbxhiKx8X2w1Z/ohDZhyzh5VC40hD97jRXePq4hy -C9fq6zKbF0lPPNJyjMnc5Ppj03eUTsChqd6j8S1JmdeQYeubdkQYnyt2vLYdrxEy -21iULWPWIMc5RVUfVHtjn/o2NWeR7y/2TDRrVK7AlrbrcRCH2J7JgA2PWSffvxE= +MIIEMTCCAxmgAwIBAgIUFrIR/j704ZfessaZ6fpA3BE0HNEwDQYJKoZIhvcNAQEL +BQAwZjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxGjAYBgNVBAoM +EVB5Y1VSTCB0ZXN0IHN1aXRlMRIwEAYDVQQLDAlsb2NhbGhvc3QxEjAQBgNVBAMM +CWxvY2FsaG9zdDAeFw0yMDA4MTMxNzI1MTRaFw00NzEyMzAxNzI1MTRaMGYxCzAJ +BgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMRowGAYDVQQKDBFQeWNVUkwg +dGVzdCBzdWl0ZTESMBAGA1UECwwJbG9jYWxob3N0MRIwEAYDVQQDDAlsb2NhbGhv +c3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtrtJgPWnNZCHEmvJg +p/0C4o8l8tqaRypjTrZgFSChIMLHRmMV8xNra7TOobZW3YRO69WQOEEDD/QAXu8s +KFT22MA0pe6FEgrMauoST/A4wXG1tVgbBz5W58Hc0EHd85cWPB7/IA/k39nDj4/c +uSfg4BVEW+lGs2FGCLElRWmrOPPMQsyP5llwuVhaRQ5QN8wQgkd5n2wXF2tsQ2dO +YmJ5fVDjs0P0f0TNCWhS9zxd/orV7UqWIiGWiZt2jdEsAZTNmVaUbZaisXNfXrUT +aFjYUcUh31K6xYc0nEqyY5R6s2/StZh7Png47BdaH/Y4pw1XWErUgUqQQdQ/tQwu +G8BTAgMBAAGjgdYwgdMwHQYDVR0OBBYEFC7U1Afby9PQYRB7dkgUzZH9mkbBMIGj +BgNVHSMEgZswgZiAFC7U1Afby9PQYRB7dkgUzZH9mkbBoWqkaDBmMQswCQYDVQQG +EwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEaMBgGA1UECgwRUHljVVJMIHRlc3Qg +c3VpdGUxEjAQBgNVBAsMCWxvY2FsaG9zdDESMBAGA1UEAwwJbG9jYWxob3N0ghQW +shH+PvThl96yxpnp+kDcETQc0TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA +A4IBAQAX3ENYqtAZLRz0p/EzRpIia+8fgwAjQrg9ucMX/UMVXHaUq/cgTPR2YhUn +aIwhANqdZnSQ2nUHlDgCmUQmH2hLKhkR7PVOMuYDAQmPusII4iUdmwGFLPTudxRV +fMKE8VBDKrRNSvWIS6Y9ucJi04jE705+wjUzB5eylP0R5kj7qt9VmPFYGgGb+jLz +hNHmaI7NVC6cIhafMWcbI2uGdpPlGDK79HVtR53EtmCDlIVZ/DfIsVQ3KA0SwdD5 +TzqIM/V2vCKEsGbFMgVc5S4RLK5mu0/wTP3Y/PSy9zTz/z1l5BMEvbBxNhu3uqAi +kBlHhSUHg81tR609TkQ/zl9ehe33 -----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/tests/certs/server.crt new/pycurl-7.43.0.6/tests/certs/server.crt --- old/pycurl-7.43.0.5/tests/certs/server.crt 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/tests/certs/server.crt 2020-09-02 06:53:50.000000000 +0200 @@ -1,20 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIDNDCCAhwCCQDgdMxIoTFgtTANBgkqhkiG9w0BAQUFADBmMQswCQYDVQQGEwJB -VTETMBEGA1UECBMKU29tZS1TdGF0ZTEaMBgGA1UEChMRUHljVVJMIHRlc3Qgc3Vp -dGUxEjAQBgNVBAsTCWxvY2FsaG9zdDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE3 -MDUyNjA3MTkyM1oXDTQ0MTAxMDA3MTkyM1owUjELMAkGA1UEBhMCQVUxEzARBgNV -BAgTClNvbWUtU3RhdGUxGjAYBgNVBAoTEVB5Y1VSTCB0ZXN0IHN1aXRlMRIwEAYD -VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDm -Jy7+5TjQyQym2GISHFX1jUXanxpPoRaTx1YvEXw+PYPdFinUr4ZiKzwrX6Hl1Wb0 -oIfrV7g2UYrnM7qEatLjjOKZDTF8kGp5Q5+QBbYQTZw23OA12+pQVyHVGyWQfmF6 -YjEL0LJjtFxTA/Z2fAnnmbrZMRd+E3AxNWBOMgmSIKbbS19VRvDlRSaJl3mr630P -H460aQ3zn5rjOCO2IApeSMTgFcoRTxhzYaRPDP3yZ5O1Ge4rgdPEHGvO/29Ib5Rm -nC9gMFn8AHc9iXMVXZrSjIXdN/jzKm1DWA+15RyYisPvPVS7/ZWRiyRDvdpTUZSd -OrLuR80EhMnC6YirwxwRAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAGxhzIkTNXW7 -C/3qhudGHJO5SX2t7Am3ObyjrHDrhEQj7bpUg3xze/WMhxJ87Rq9UC8aZwQ019Eu -XTBHWwaDJJhoRAWvxgb1F1i1pvK6ZknXCvoFTYejlflbOTPJlJB09Pj3XrMCPCEW -yZZsvI+JDd+LrChFmLUEaNgl1H58blXKoMeEmjE4QOb2ttemCJb0FfndvqiniVW1 -h35AjhkJBfy9NGYB6FpMfj+NJYhXji0fVg0CYPeO7lRZNJ/Dg5GhdxcmGhlHkx8u -WqYZZLD4ovsphhuP0spsxPi4Uw+pXKHKHh5MVngWPHO237g/+JpD4IY4G2jgNruV -Wu5cKxU79Iw= +MIIDPzCCAicCFERGPoslPJ3jHZfE8sJaHNmaFqfcMA0GCSqGSIb3DQEBCwUAMGYx +CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMRowGAYDVQQKDBFQeWNV +UkwgdGVzdCBzdWl0ZTESMBAGA1UECwwJbG9jYWxob3N0MRIwEAYDVQQDDAlsb2Nh +bGhvc3QwHhcNMjAwODEzMTc0MTI2WhcNNDcxMjMwMTc0MTI2WjBSMQswCQYDVQQG +EwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEaMBgGA1UECgwRUHljVVJMIHRlc3Qg +c3VpdGUxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAOYnLv7lONDJDKbYYhIcVfWNRdqfGk+hFpPHVi8RfD49g90WKdSv +hmIrPCtfoeXVZvSgh+tXuDZRiuczuoRq0uOM4pkNMXyQanlDn5AFthBNnDbc4DXb +6lBXIdUbJZB+YXpiMQvQsmO0XFMD9nZ8CeeZutkxF34TcDE1YE4yCZIgpttLX1VG +8OVFJomXeavrfQ8fjrRpDfOfmuM4I7YgCl5IxOAVyhFPGHNhpE8M/fJnk7UZ7iuB +08Qca87/b0hvlGacL2AwWfwAdz2JcxVdmtKMhd03+PMqbUNYD7XlHJiKw+89VLv9 +lZGLJEO92lNRlJ06su5HzQSEycLpiKvDHBECAwEAATANBgkqhkiG9w0BAQsFAAOC +AQEAboEGBE+LJhRBMXtcxGbewEK6KByid7VR3/j+e2jSQiy9l8UTrKDx+hinwIPp +g/qNbVJC/aqa1kuaQrF8fHidM8t1A1brCjsZ+sEfc3q1K0jPZEzvSabRWznM21L+ +eZYnmINMrq4vlSjh5Oz1QGdoImjq+o4qWokOt8p38FYBMKgrMLBbW6N+olU8htuu +x1o9y6CscwkFrhGvENe6nCrE9QTVEH0Ka1BMFOwfCUIztgz5YWgvJpSzw+2l6lo0 +4lh8olZ09Fzu+VcjUU9t0yiFFh1qwKTLWJA7NJMWOtEwTbfx/K+5m2Xiuzp6BPM5 +DcPA3/hx8YLKkxA570MOszh6Dg== -----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/tests/fake-curl/libcurl/Makefile new/pycurl-7.43.0.6/tests/fake-curl/libcurl/Makefile --- old/pycurl-7.43.0.5/tests/fake-curl/libcurl/Makefile 2018-06-07 04:04:05.000000000 +0200 +++ new/pycurl-7.43.0.6/tests/fake-curl/libcurl/Makefile 2020-09-02 06:53:50.000000000 +0200 @@ -1,14 +1,21 @@ -all: \ +ALL = \ with_gnutls.so \ with_nss.so \ with_openssl.so \ with_unknown_ssl.so \ without_ssl.so +all: $(ALL) +clean: + rm -f $(ALL) + .SUFFIXES: .c .so +CC = `curl-config --cc` +CFLAGS += `curl-config --cflags` + .c.so: - `curl-config --cc` `curl-config --cflags` -shared -fPIC \ + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC \ -Wl,-soname,$@ -o $@ $< show-targets: Binary files old/pycurl-7.43.0.5/tests/fake-curl/libcurl/with_gnutls.so and new/pycurl-7.43.0.6/tests/fake-curl/libcurl/with_gnutls.so differ Binary files old/pycurl-7.43.0.5/tests/fake-curl/libcurl/with_nss.so and new/pycurl-7.43.0.6/tests/fake-curl/libcurl/with_nss.so differ Binary files old/pycurl-7.43.0.5/tests/fake-curl/libcurl/with_openssl.so and new/pycurl-7.43.0.6/tests/fake-curl/libcurl/with_openssl.so differ Binary files old/pycurl-7.43.0.5/tests/fake-curl/libcurl/with_unknown_ssl.so and new/pycurl-7.43.0.6/tests/fake-curl/libcurl/with_unknown_ssl.so differ Binary files old/pycurl-7.43.0.5/tests/fake-curl/libcurl/without_ssl.so and new/pycurl-7.43.0.6/tests/fake-curl/libcurl/without_ssl.so differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/tests/option_constants_test.py new/pycurl-7.43.0.6/tests/option_constants_test.py --- old/pycurl-7.43.0.5/tests/option_constants_test.py 2019-06-30 16:09:50.000000000 +0200 +++ new/pycurl-7.43.0.6/tests/option_constants_test.py 2020-09-02 06:53:50.000000000 +0200 @@ -387,6 +387,7 @@ def test_keypasswd(self): self.curl.setopt(self.curl.KEYPASSWD, 'secret') + @util.only_telnet def test_telnetoptions(self): self.curl.setopt(self.curl.TELNETOPTIONS, ('TTYPE=1', 'XDISPLOC=2')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/tests/util.py new/pycurl-7.43.0.6/tests/util.py --- old/pycurl-7.43.0.5/tests/util.py 2018-06-13 20:07:03.000000000 +0200 +++ new/pycurl-7.43.0.6/tests/util.py 2020-09-02 06:53:50.000000000 +0200 @@ -138,6 +138,20 @@ return decorated +def only_telnet(fn): + import nose.plugins.skip + import pycurl + + @functools.wraps(fn) + def decorated(*args, **kwargs): + # pycurl.version_info()[8] is a tuple of protocols supported by libcurl + if 'telnet' not in pycurl.version_info()[8]: + raise nose.plugins.skip.SkipTest('libcurl does not support telnet') + + return fn(*args, **kwargs) + + return decorated + def only_ssl_backends(*backends): def decorator(fn): import nose.plugins.skip Binary files old/pycurl-7.43.0.5/winbuild/__init__.pyc and new/pycurl-7.43.0.6/winbuild/__init__.pyc differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pycurl-7.43.0.5/winbuild.py new/pycurl-7.43.0.6/winbuild.py --- old/pycurl-7.43.0.5/winbuild.py 2020-01-30 05:05:05.000000000 +0100 +++ new/pycurl-7.43.0.6/winbuild.py 2020-09-02 07:16:18.000000000 +0200 @@ -65,7 +65,7 @@ # which versions of python to build against #python_versions = ['2.7.10', '3.2.5', '3.3.5', '3.4.3', '3.5.4', '3.6.2'] # these require only vc9 and vc14 - python_versions = ['3.7.6', '3.8.1'] + python_versions = ['3.5.4', '3.6.8', '3.7.6', '3.8.1'] # where pythons are installed python_path_template = 'c:/dev/%(bitness)s/python%(python_release)s/python' # overrides only, defaults are given in default_vc_paths below @@ -103,7 +103,7 @@ # whether to build binary wheels build_wheels = True # pycurl version to build, we should know this ourselves - pycurl_version = '7.43.0.5' + pycurl_version = '7.43.0.6' # Sometimes vc14 does not include windows sdk path in vcvars which breaks stuff. # another application for this is to supply normaliz.lib for vc9 ++++++ remove_nose.patch ++++++ --- /var/tmp/diff_new_pack.QAhXgS/_old 2021-02-04 20:21:52.254624990 +0100 +++ /var/tmp/diff_new_pack.QAhXgS/_new 2021-02-04 20:21:52.254624990 +0100 @@ -31,8 +31,10 @@ 22 files changed, 95 insertions(+), 113 deletions(-) create mode 100644 pytest.ini ---- a/Makefile -+++ b/Makefile +Index: pycurl-7.43.0.6/Makefile +=================================================================== +--- pycurl-7.43.0.6.orig/Makefile ++++ pycurl-7.43.0.6/Makefile @@ -6,7 +6,7 @@ SHELL = /bin/sh @@ -42,8 +44,10 @@ PYFLAKES = pyflakes # -c on linux ---- a/README.rst -+++ b/README.rst +Index: pycurl-7.43.0.6/README.rst +=================================================================== +--- pycurl-7.43.0.6.orig/README.rst ++++ pycurl-7.43.0.6/README.rst @@ -93,7 +93,7 @@ PycURL comes with an automated test suit make test @@ -62,8 +66,10 @@ .. _bottle: http://bottlepy.org/ .. _vsftpd: http://vsftpd.beasts.org/ +Index: pycurl-7.43.0.6/pytest.ini +=================================================================== --- /dev/null -+++ b/pytest.ini ++++ pycurl-7.43.0.6/pytest.ini @@ -0,0 +1,10 @@ +[pytest] +python_files = tests/*.py @@ -75,8 +81,10 @@ + http2: mark a test as requiring HTTP/2 + standalone: mark a test as being standalone + occasionally_failing: mark a test as unstable ---- a/requirements-dev.txt -+++ b/requirements-dev.txt +Index: pycurl-7.43.0.6/requirements-dev.txt +=================================================================== +--- pycurl-7.43.0.6.orig/requirements-dev.txt ++++ pycurl-7.43.0.6/requirements-dev.txt @@ -1,10 +1,7 @@ # bottle 0.12.17 changed behavior # https://github.com/pycurl/pycurl/issues/573 @@ -91,8 +99,10 @@ \ No newline at end of file +pytest>=5 +sphinx ---- a/tests/certinfo_test.py -+++ b/tests/certinfo_test.py +Index: pycurl-7.43.0.6/tests/certinfo_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/certinfo_test.py ++++ pycurl-7.43.0.6/tests/certinfo_test.py @@ -4,7 +4,6 @@ import pycurl @@ -119,8 +129,10 @@ self.curl.setopt(pycurl.URL, 'https://localhost:8383/success') sio = util.BytesIO() ---- a/tests/curl_object_test.py -+++ b/tests/curl_object_test.py +Index: pycurl-7.43.0.6/tests/curl_object_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/curl_object_test.py ++++ pycurl-7.43.0.6/tests/curl_object_test.py @@ -3,8 +3,8 @@ # vi:ts=4:et @@ -169,8 +181,10 @@ - del self.curl.foo + with pytest.raises(AttributeError, match='trying to delete.*'): + del self.curl.foo ---- a/tests/global_init_test.py -+++ b/tests/global_init_test.py +Index: pycurl-7.43.0.6/tests/global_init_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/global_init_test.py ++++ pycurl-7.43.0.6/tests/global_init_test.py @@ -3,9 +3,8 @@ # vi:ts=4:et @@ -199,8 +213,10 @@ - pycurl.global_init(0xffff) + with pytest.raises(ValueError): + pycurl.global_init(0xffff) ---- a/tests/header_test.py -+++ b/tests/header_test.py +Index: pycurl-7.43.0.6/tests/header_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/header_test.py ++++ pycurl-7.43.0.6/tests/header_test.py @@ -3,9 +3,9 @@ # vi:ts=4:et @@ -230,8 +246,10 @@ def test_encoded_unicode_header(self): self.check(util.u('x-test-header: ????????????').encode('utf-8'), util.u('????????????')) ---- a/tests/multi_test.py -+++ b/tests/multi_test.py +Index: pycurl-7.43.0.6/tests/multi_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/multi_test.py ++++ pycurl-7.43.0.6/tests/multi_test.py @@ -4,8 +4,8 @@ from . import localhost @@ -258,8 +276,10 @@ - pycurl.CurlMulti(a=1) + with pytest.raises(TypeError): + pycurl.CurlMulti(a=1) ---- a/tests/option_constants_test.py -+++ b/tests/option_constants_test.py +Index: pycurl-7.43.0.6/tests/option_constants_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/option_constants_test.py ++++ pycurl-7.43.0.6/tests/option_constants_test.py @@ -4,9 +4,8 @@ from . import localhost @@ -333,7 +353,7 @@ def test_ssl_enable_npn(self): curl = pycurl.Curl() curl.setopt(curl.SSL_ENABLE_NPN, 1) -@@ -449,23 +448,23 @@ class OptionConstantsSettingTest(unittes +@@ -450,23 +449,23 @@ class OptionConstantsSettingTest(unittes self.curl.setopt(self.curl.HTTP_VERSION, self.curl.CURL_HTTP_VERSION_1_0) self.curl.setopt(self.curl.HTTP_VERSION, self.curl.CURL_HTTP_VERSION_1_1) @@ -361,8 +381,10 @@ def test_http_version_2prior_knowledge(self): self.curl.setopt(self.curl.HTTP_VERSION, self.curl.CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) ---- a/tests/procmgr.py -+++ b/tests/procmgr.py +Index: pycurl-7.43.0.6/tests/procmgr.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/procmgr.py ++++ pycurl-7.43.0.6/tests/procmgr.py @@ -3,7 +3,7 @@ import subprocess import os import sys @@ -390,8 +412,10 @@ try: setup_module() except OSError: ---- a/tests/reload_test.py -+++ b/tests/reload_test.py +Index: pycurl-7.43.0.6/tests/reload_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/reload_test.py ++++ pycurl-7.43.0.6/tests/reload_test.py @@ -3,11 +3,11 @@ # vi:ts=4:et @@ -406,8 +430,10 @@ def test_reloading(self): try: # python 2 ---- a/tests/resolve_test.py -+++ b/tests/resolve_test.py +Index: pycurl-7.43.0.6/tests/resolve_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/resolve_test.py ++++ pycurl-7.43.0.6/tests/resolve_test.py @@ -2,7 +2,6 @@ import pycurl @@ -425,8 +451,10 @@ self.curl.setopt(pycurl.URL, 'http://p.localhost:8380/success') self.curl.setopt(pycurl.RESOLVE, ['p.localhost:8380:127.0.0.1']) ---- a/tests/run.sh -+++ b/tests/run.sh +Index: pycurl-7.43.0.6/tests/run.sh +=================================================================== +--- pycurl-7.43.0.6.orig/tests/run.sh ++++ pycurl-7.43.0.6/tests/run.sh @@ -4,7 +4,7 @@ set -e set -x @@ -443,8 +471,10 @@ -$NOSETESTS -a \!standalone"$extra_attrs" --with-flaky --show-skipped "$@" -$NOSETESTS -a standalone --with-flaky --show-skipped "$@" +$PYTEST ---- a/tests/setopt_string_test.py -+++ b/tests/setopt_string_test.py +Index: pycurl-7.43.0.6/tests/setopt_string_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/setopt_string_test.py ++++ pycurl-7.43.0.6/tests/setopt_string_test.py @@ -3,9 +3,9 @@ # vi:ts=4:et @@ -465,8 +495,10 @@ - self.curl.setopt_string(pycurl.VERBOSE, True) + with pytest.raises(TypeError): + self.curl.setopt_string(pycurl.VERBOSE, True) ---- a/tests/setopt_test.py -+++ b/tests/setopt_test.py +Index: pycurl-7.43.0.6/tests/setopt_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/setopt_test.py ++++ pycurl-7.43.0.6/tests/setopt_test.py @@ -4,8 +4,8 @@ from . import localhost @@ -505,8 +537,10 @@ def test_httpheader_list(self): self.curl.setopt(self.curl.HTTPHEADER, ['Accept:']) ---- a/tests/setopt_unicode_test.py -+++ b/tests/setopt_unicode_test.py +Index: pycurl-7.43.0.6/tests/setopt_unicode_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/setopt_unicode_test.py ++++ pycurl-7.43.0.6/tests/setopt_unicode_test.py @@ -4,8 +4,8 @@ from . import localhost @@ -529,8 +563,10 @@ def test_unicode_encoded(self): self.check(util.u('p=????????????').encode('utf8'), util.u('????????????')) ---- a/tests/setup_test.py -+++ b/tests/setup_test.py +Index: pycurl-7.43.0.6/tests/setup_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/setup_test.py ++++ pycurl-7.43.0.6/tests/setup_test.py @@ -6,7 +6,6 @@ from . import util import setup as pycurl_setup import unittest @@ -548,8 +584,10 @@ return fn(*args, **kwargs) return decorated ---- a/tests/share_test.py -+++ b/tests/share_test.py +Index: pycurl-7.43.0.6/tests/share_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/share_test.py ++++ pycurl-7.43.0.6/tests/share_test.py @@ -5,8 +5,8 @@ from . import localhost import threading @@ -576,8 +614,10 @@ - pycurl.CurlShare(a=1) + with pytest.raises(TypeError): + pycurl.CurlShare(a=1) ---- a/tests/ssh_key_cb_test.py -+++ b/tests/ssh_key_cb_test.py +Index: pycurl-7.43.0.6/tests/ssh_key_cb_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/ssh_key_cb_test.py ++++ pycurl-7.43.0.6/tests/ssh_key_cb_test.py @@ -2,16 +2,16 @@ # -*- coding: utf-8 -*- # vi:ts=4:et @@ -607,8 +647,10 @@ class SshKeyCbUnsetTest(unittest.TestCase): def setUp(self): self.curl = util.DefaultCurl() ---- a/tests/util.py -+++ b/tests/util.py +Index: pycurl-7.43.0.6/tests/util.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/util.py ++++ pycurl-7.43.0.6/tests/util.py @@ -5,6 +5,7 @@ import tempfile import os, sys, socket import time as _time @@ -681,7 +723,7 @@ import pycurl @functools.wraps(fn) -@@ -132,7 +124,7 @@ def only_ssl(fn): +@@ -132,21 +124,20 @@ def only_ssl(fn): # theoretically it is not the same test. # pycurl.version_info()[8] is a tuple of protocols supported by libcurl if 'https' not in pycurl.version_info()[8]: @@ -690,7 +732,22 @@ return fn(*args, **kwargs) -@@ -140,7 +132,6 @@ def only_ssl(fn): + return decorated + + def only_telnet(fn): +- import nose.plugins.skip + import pycurl + + @functools.wraps(fn) + def decorated(*args, **kwargs): + # pycurl.version_info()[8] is a tuple of protocols supported by libcurl + if 'telnet' not in pycurl.version_info()[8]: +- raise nose.plugins.skip.SkipTest('libcurl does not support telnet') ++ raise unittest.SkipTest('libcurl does not support telnet') + + return fn(*args, **kwargs) + +@@ -154,7 +145,6 @@ def only_telnet(fn): def only_ssl_backends(*backends): def decorator(fn): @@ -698,7 +755,7 @@ import pycurl @functools.wraps(fn) -@@ -149,7 +140,7 @@ def only_ssl_backends(*backends): +@@ -163,7 +153,7 @@ def only_ssl_backends(*backends): # theoretically it is not the same test. # pycurl.version_info()[8] is a tuple of protocols supported by libcurl if 'https' not in pycurl.version_info()[8]: @@ -707,7 +764,7 @@ # XXX move to pycurl library if 'OpenSSL/' in pycurl.version: -@@ -161,7 +152,7 @@ def only_ssl_backends(*backends): +@@ -175,7 +165,7 @@ def only_ssl_backends(*backends): else: current_backend = 'none' if current_backend not in backends: @@ -716,7 +773,7 @@ return fn(*args, **kwargs) -@@ -169,25 +160,22 @@ def only_ssl_backends(*backends): +@@ -183,25 +173,22 @@ def only_ssl_backends(*backends): return decorator def only_ipv6(fn): @@ -744,7 +801,7 @@ return fn(*args, **kwargs) -@@ -200,7 +188,6 @@ def guard_unknown_libcurl_option(fn): +@@ -214,7 +201,6 @@ def guard_unknown_libcurl_option(fn): where libcurl does not provide a way of detecting whether the required libraries were compiled against.''' @@ -752,7 +809,7 @@ import pycurl @functools.wraps(fn) -@@ -211,7 +198,7 @@ def guard_unknown_libcurl_option(fn): +@@ -225,7 +211,7 @@ def guard_unknown_libcurl_option(fn): exc = sys.exc_info()[1] # E_UNKNOWN_OPTION is available as of libcurl 7.21.5 if hasattr(pycurl, 'E_UNKNOWN_OPTION') and exc.args[0] == pycurl.E_UNKNOWN_OPTION: @@ -761,7 +818,7 @@ return decorated -@@ -286,12 +273,12 @@ def DefaultCurlLocalhost(port): +@@ -300,12 +286,12 @@ def DefaultCurlLocalhost(port): '''This is a default curl with localhost -> 127.0.0.1 name mapping on windows systems, because they don't have it in the hosts file. ''' @@ -777,8 +834,10 @@ return curl def with_real_write_file(fn): ---- a/tests/memory_mgmt_test.py -+++ b/tests/memory_mgmt_test.py +Index: pycurl-7.43.0.6/tests/memory_mgmt_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/memory_mgmt_test.py ++++ pycurl-7.43.0.6/tests/memory_mgmt_test.py @@ -9,7 +9,7 @@ import unittest import gc import flaky @@ -847,8 +906,10 @@ c.close() gc.collect() assert ref() is None ---- a/tests/multi_memory_mgmt_test.py -+++ b/tests/multi_memory_mgmt_test.py +Index: pycurl-7.43.0.6/tests/multi_memory_mgmt_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/multi_memory_mgmt_test.py ++++ pycurl-7.43.0.6/tests/multi_memory_mgmt_test.py @@ -7,21 +7,21 @@ import unittest import gc import flaky @@ -911,8 +972,10 @@ m.remove_handle(ref()) gc.collect() assert ref() is None ---- a/tests/multi_timer_test.py -+++ b/tests/multi_timer_test.py +Index: pycurl-7.43.0.6/tests/multi_timer_test.py +=================================================================== +--- pycurl-7.43.0.6.orig/tests/multi_timer_test.py ++++ pycurl-7.43.0.6/tests/multi_timer_test.py @@ -5,7 +5,7 @@ from . import localhost import pycurl