kevin1024 / vcrpy

Automatically mock your HTTP interactions to simplify and speed up testing
MIT License
2.69k stars 387 forks source link

Tests failing with Werkzeug >=2.1.0 / remove all use of pytest-httpbin (and httpbin.org) from test suite? #645

Open kloczek opened 2 years ago

kloczek commented 2 years ago

I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

kloczek commented 2 years ago

Here is pytest output. At the enad are some pytest warnings as well.

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.1.1-5.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.1.1-5.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra =========================================================================== test session starts ============================================================================ platform linux -- Python 3.8.13, pytest-7.1.2, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/vcrpy-4.1.1 plugins: httpbin-1.0.2, anyio-3.5.0, asyncio-0.18.2, aiohttp-1.0.4, mock-3.7.0 asyncio: mode=auto collected 389 items / 1 skipped tests/integration/test_aiohttp.py ................................... [ 8%] tests/integration/test_basic.py ..... [ 10%] tests/integration/test_boto.py .FFFF [ 11%] tests/integration/test_boto3.py sss [ 12%] tests/integration/test_config.py ..... [ 13%] tests/integration/test_disksaver.py .. [ 14%] tests/integration/test_filter.py ........ [ 16%] tests/integration/test_httplib2.py ......... [ 18%] tests/integration/test_requests.py ............... [ 22%] tests/integration/test_urllib2.py ......... [ 24%] tests/integration/test_urllib3.py ........ [ 26%] tests/integration/test_httplib2.py ......... [ 29%] tests/integration/test_requests.py pytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F [ 32%] tests/integration/test_urllib2.py ......... [ 35%] tests/integration/test_urllib3.py ........ [ 37%] tests/integration/test_httplib2.py . [ 37%] tests/integration/test_httpx.py ....................FF........FFFFFFFFFFFF [ 48%] tests/integration/test_ignore.py .... [ 49%] tests/integration/test_matchers.py .............. [ 52%] tests/integration/test_multiple.py . [ 53%] tests/integration/test_proxy.py . [ 53%] tests/integration/test_record_mode.py ........ [ 55%] tests/integration/test_register_matcher.py .. [ 56%] tests/integration/test_register_persister.py .. [ 56%] tests/integration/test_register_serializer.py . [ 56%] tests/integration/test_request.py .. [ 57%] tests/integration/test_requests.py .spytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F... [ 58%] tests/integration/test_stubs.py .... [ 59%] tests/integration/test_urllib2.py . [ 60%] tests/integration/test_urllib3.py ... [ 60%] tests/integration/test_wild.py ...... [ 62%] tests/unit/test_cassettes.py ............................. [ 69%] tests/unit/test_errors.py .... [ 70%] tests/unit/test_filters.py ................... [ 75%] tests/unit/test_json_serializer.py . [ 76%] tests/unit/test_matchers.py ......................... [ 82%] tests/unit/test_migration.py ... [ 83%] tests/unit/test_persist.py .... [ 84%] tests/unit/test_request.py ................. [ 88%] tests/unit/test_response.py .... [ 89%] tests/unit/test_serialize.py ............... [ 93%] tests/unit/test_stubs.py .. [ 94%] tests/unit/test_vcr.py ...................... [ 99%] tests/unit/test_vcr_import.py . [100%] ================================================================================= FAILURES ================================================================================= __________________________________________________________________________ test_boto_without_vcr ___________________________________________________________________________ def test_boto_without_vcr(): > s3_conn = S3Connection() tests/integration/test_boto.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib64/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: ERROR boto:utils.py:236 Unable to read instance data, giving up _______________________________________________________________________ test_boto_medium_difficulty ________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-48/test_boto_medium_difficulty0') def test_boto_medium_difficulty(tmpdir): > s3_conn = S3Connection() tests/integration/test_boto.py:34: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib64/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: ERROR boto:utils.py:236 Unable to read instance data, giving up _________________________________________________________________________ test_boto_hardcore_mode __________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-48/test_boto_hardcore_mode0') def test_boto_hardcore_mode(tmpdir): with vcr.use_cassette(str(tmpdir.join("boto-hardcore.yml"))): > s3_conn = S3Connection() tests/integration/test_boto.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1358, in do_open r = h.getresponse() File "/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.1.1-5.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py", line 244, in getresponse self.real_connection.request( File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out ERROR boto:utils.py:236 Unable to read instance data, giving up ______________________________________________________________________________ test_boto_iam _______________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-48/test_boto_iam0') def test_boto_iam(tmpdir): try: boto.config.add_section("Boto") except DuplicateSectionError: pass # Ensure that boto uses HTTPS boto.config.set("Boto", "is_secure", "true") # Ensure that boto uses CertValidatingHTTPSConnection boto.config.set("Boto", "https_validate_certificates", "true") with vcr.use_cassette(str(tmpdir.join("boto-iam.yml"))): > iam_conn = boto.iam.connect_to_region("universal") tests/integration/test_boto.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/iam/__init__.py:90: in connect_to_region return region.connect(**kw_params) /usr/lib/python3.8/site-packages/boto/iam/__init__.py:44: in connect return self.connection_cls(host=self.endpoint, **kw_params) /usr/lib/python3.8/site-packages/boto/iam/connection.py:66: in __init__ super(IAMConnection, self).__init__(aws_access_key_id, /usr/lib/python3.8/site-packages/boto/connection.py:1091: in __init__ super(AWSQueryConnection, self).__init__( /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'iam.amazonaws.com', config = , provider = requested_capability = ['hmac-v4'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1358, in do_open r = h.getresponse() File "/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.1.1-5.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py", line 244, in getresponse self.real_connection.request( File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out ERROR boto:utils.py:236 Unable to read instance data, giving up _________________________________________________________________________ test_status_code[https] __________________________________________________________________________ self = , method = 'GET', url = '/', body = None headers = {'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None, release_conn = False, chunked = False, body_pos = None response_kw = {'decode_content': False, 'preload_content': False}, parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True, http_tunnel_required = False, err = None, clean_exit = False def urlopen( self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw ): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method provided by :class:`.RequestMethods`, such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``response_kw.get('preload_content', True)``. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = response_kw.get("preload_content", True) # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = six.ensure_str(_encode_target(url)) else: url = six.ensure_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() headers.update(self.proxy_headers) # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout is_new_proxy_conn = self.proxy is not None and not getattr( conn, "sock", None ) if is_new_proxy_conn and http_tunnel_required: self._prepare_proxy(conn) # Make the request on the httplib connection object. > httplib_response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, ) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:703: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = conn = , method = 'GET', url = '/' timeout = Timeout(connect=None, read=None, total=None), chunked = False httplib_request_kw = {'body': None, 'headers': {'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}} timeout_obj = Timeout(connect=None, read=None, total=None) def _make_request( self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw ): """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param timeout: Socket timeout in seconds for the request. This can be a float or integer, which will set the same timeout value for the socket connect and the socket read, or an instance of :class:`urllib3.util.Timeout`, which gives you more fine-grained control over your timeouts. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = timeout_obj.connect_timeout # Trigger any extra validation we need to do. try: > self._validate_conn(conn) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:386: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = conn = def _validate_conn(self, conn): """ Called right before a request is made, after the socket is created. """ super(HTTPSConnectionPool, self)._validate_conn(conn) # Force connect early to allow us to validate the connection. if not getattr(conn, "sock", None): # AppEngine might not have `.sock` > conn.connect() /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1040: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = (), kwargs = {} force_reset = def connect(self, *args, **kwargs): """ httplib2 uses this. Connects to the server I'm assuming. Only pass to the baseclass if we don't have a recorded response and are not write-protected. """ if hasattr(self, "_vcr_request") and self.cassette.can_play_response_for(self._vcr_request): # We already have a response we are going to play, don't # actually connect return if self.cassette.write_protected: # Cassette is write-protected, don't actually connect return from vcr.patch import force_reset with force_reset(): > return self.real_connection.connect(*args, **kwargs) ../../BUILDROOT/python-vcrpy-4.1.1-5.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): # Add certificate verification self.sock = conn = self._new_conn() hostname = self.host tls_in_tls = False if self._is_using_tunnel(): if self.tls_in_tls_required: self.sock = conn = self._connect_tls_proxy(hostname, conn) tls_in_tls = True # Calls self._set_hostport(), so self.host is # self._tunnel_host below. self._tunnel() # Mark this connection as not reusable self.auto_open = 0 # Override the host with the one we're requesting data from. hostname = self._tunnel_host server_hostname = hostname if self.server_hostname is not None: server_hostname = self.server_hostname is_time_off = datetime.date.today() < RECENT_DATE if is_time_off: warnings.warn( ( "System time is way off (before {0}). This will probably " "lead to SSL verification errors" ).format(RECENT_DATE), SystemTimeWarning, ) # Wrap socket using verification with the root certs in # trusted_root_certs default_ssl_context = False if self.ssl_context is None: default_ssl_context = True self.ssl_context = create_urllib3_context( ssl_version=resolve_ssl_version(self.ssl_version), cert_reqs=resolve_cert_reqs(self.cert_reqs), ) context = self.ssl_context context.verify_mode = resolve_cert_reqs(self.cert_reqs) # Try to load OS default certs if none are given. # Works well on Windows (requires Python3.4+) if ( not self.ca_certs and not self.ca_cert_dir and not self.ca_cert_data and default_ssl_context and hasattr(context, "load_default_certs") ): context.load_default_certs() > self.sock = ssl_wrap_socket( sock=conn, keyfile=self.key_file, certfile=self.cert_file, key_password=self.key_password, ca_certs=self.ca_certs, ca_cert_dir=self.ca_cert_dir, ca_cert_data=self.ca_cert_data, server_hostname=server_hostname, ssl_context=context, tls_in_tls=tls_in_tls, ) /usr/lib/python3.8/site-packages/urllib3/connection.py:414: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sock = , keyfile = None, certfile = None, cert_reqs = None ca_certs = '/etc/pki/tls/certs/ca-bundle.crt', server_hostname = '127.0.0.1', ssl_version = None, ciphers = None, ssl_context = ca_cert_dir = None, key_password = None, ca_cert_data = None, tls_in_tls = False def ssl_wrap_socket( sock, keyfile=None, certfile=None, cert_reqs=None, ca_certs=None, server_hostname=None, ssl_version=None, ciphers=None, ssl_context=None, ca_cert_dir=None, key_password=None, ca_cert_data=None, tls_in_tls=False, ): """ All arguments except for server_hostname, ssl_context, and ca_cert_dir have the same meaning as they do when using :func:`ssl.wrap_socket`. :param server_hostname: When SNI is supported, the expected hostname of the certificate :param ssl_context: A pre-made :class:`SSLContext` object. If none is provided, one will be created using :func:`create_urllib3_context`. :param ciphers: A string of ciphers we wish the client to support. :param ca_cert_dir: A directory containing CA certificates in multiple separate files, as supported by OpenSSL's -CApath flag or the capath argument to SSLContext.load_verify_locations(). :param key_password: Optional password if the keyfile is encrypted. :param ca_cert_data: Optional string containing CA certificates in PEM format suitable for passing as the cadata parameter to SSLContext.load_verify_locations() :param tls_in_tls: Use SSLTransport to wrap the existing socket. """ context = ssl_context if context is None: # Note: This branch of code and all the variables in it are no longer # used by urllib3 itself. We should consider deprecating and removing # this code. context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers) if ca_certs or ca_cert_dir or ca_cert_data: try: context.load_verify_locations(ca_certs, ca_cert_dir, ca_cert_data) except (IOError, OSError) as e: raise SSLError(e) elif ssl_context is None and hasattr(context, "load_default_certs"): # try to load OS default certs; works well on Windows (require Python3.4+) context.load_default_certs() # Attempt to detect if we get the goofy behavior of the # keyfile being encrypted and OpenSSL asking for the # passphrase via the terminal and instead error out. if keyfile and key_password is None and _is_key_file_encrypted(keyfile): raise SSLError("Client private key is encrypted, password is required") if certfile: if key_password is None: context.load_cert_chain(certfile, keyfile) else: context.load_cert_chain(certfile, keyfile, key_password) try: if hasattr(context, "set_alpn_protocols"): context.set_alpn_protocols(ALPN_PROTOCOLS) except NotImplementedError: # Defensive: in CI, we always have set_alpn_protocols pass # If we detect server_hostname is an IP address then the SNI # extension should not be used according to RFC3546 Section 3.1 use_sni_hostname = server_hostname and not is_ipaddress(server_hostname) # SecureTransport uses server_hostname in certificate verification. send_sni = (use_sni_hostname and HAS_SNI) or ( IS_SECURETRANSPORT and server_hostname ) # Do not warn the user if server_hostname is an invalid SNI hostname. if not HAS_SNI and use_sni_hostname: warnings.warn( "An HTTPS request has been made, but the SNI (Server Name " "Indication) extension to TLS is not available on this platform. " "This may cause the server to present an incorrect TLS " "certificate, which can cause validation failures. You can upgrade to " "a newer version of Python to solve this. For more information, see " "https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html" "#ssl-warnings", SNIMissingWarning, ) if send_sni: ssl_sock = _ssl_wrap_socket_impl( sock, context, tls_in_tls, server_hostname=server_hostname ) else: > ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls) /usr/lib/python3.8/site-packages/urllib3/util/ssl_.py:453: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sock = , ssl_context = tls_in_tls = False, server_hostname = None def _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname=None): if tls_in_tls: if not SSLTransport: # Import error, ssl is not available. raise ProxySchemeUnsupported( "TLS in TLS requires support for the 'ssl' module" ) SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) return SSLTransport(sock, ssl_context, server_hostname) if server_hostname: return ssl_context.wrap_socket(sock, server_hostname=server_hostname) else: > return ssl_context.wrap_socket(sock) /usr/lib/python3.8/site-packages/urllib3/util/ssl_.py:495: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , sock = server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, session = None def wrap_socket(self, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, session=None): # SSLSocket class handles server_hostname encoding before it calls # ctx._wrap_socket() > return self.sslsocket_class._create( sock=sock, server_side=server_side, do_handshake_on_connect=do_handshake_on_connect, suppress_ragged_eofs=suppress_ragged_eofs, server_hostname=server_hostname, context=self, session=session ) /usr/lib64/python3.8/ssl.py:500: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , sock = , server_side = False do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = , session = None @classmethod def _create(cls, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, context=None, session=None): if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: raise NotImplementedError("only stream sockets are supported") if server_side: if server_hostname: raise ValueError("server_hostname can only be specified " "in client mode") if session is not None: raise ValueError("session can only be specified in " "client mode") if context.check_hostname and not server_hostname: raise ValueError("check_hostname requires server_hostname") kwargs = dict( family=sock.family, type=sock.type, proto=sock.proto, fileno=sock.fileno() ) self = cls.__new__(cls, **kwargs) super(SSLSocket, self).__init__(**kwargs) self.settimeout(sock.gettimeout()) sock.detach() self._context = context self._session = session self._closed = False self._sslobj = None self.server_side = server_side self.server_hostname = context._encode_hostname(server_hostname) self.do_handshake_on_connect = do_handshake_on_connect self.suppress_ragged_eofs = suppress_ragged_eofs # See if we are connected try: self.getpeername() except OSError as e: if e.errno != errno.ENOTCONN: raise connected = False else: connected = True self._connected = connected if connected: # create the SSL object try: self._sslobj = self._context._wrap_socket( self, server_side, self.server_hostname, owner=self, session=self._session, ) if do_handshake_on_connect: timeout = self.gettimeout() if timeout == 0.0: # non-blocking raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") > self.do_handshake() /usr/lib64/python3.8/ssl.py:1040: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , block = False @_sslcopydoc def do_handshake(self, block=False): self._check_connected() timeout = self.gettimeout() try: if timeout == 0.0 and block: self.settimeout(None) > self._sslobj.do_handshake() E ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131) /usr/lib64/python3.8/ssl.py:1309: SSLCertVerificationError During handling of the above exception, another exception occurred: self = , request = , stream = False, timeout = Timeout(connect=None, read=None, total=None) verify = True, cert = None, proxies = OrderedDict() def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies) chunked = not (request.body is None or 'Content-Length' in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError as e: # this may raise a string formatting error. err = ("Invalid timeout {}. Pass a (connect, read) " "timeout tuple, or a single float to set " "both timeouts to the same value".format(timeout)) raise ValueError(err) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: if not chunked: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout ) /usr/lib/python3.8/site-packages/requests/adapters.py:440: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET', url = '/', body = None headers = {'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None, release_conn = False, chunked = False, body_pos = None response_kw = {'decode_content': False, 'preload_content': False}, parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True, http_tunnel_required = False, err = None, clean_exit = False def urlopen( self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw ): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method provided by :class:`.RequestMethods`, such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``response_kw.get('preload_content', True)``. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = response_kw.get("preload_content", True) # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = six.ensure_str(_encode_target(url)) else: url = six.ensure_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() headers.update(self.proxy_headers) # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout is_new_proxy_conn = self.proxy is not None and not getattr( conn, "sock", None ) if is_new_proxy_conn and http_tunnel_required: self._prepare_proxy(conn) # Make the request on the httplib connection object. httplib_response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, ) # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Pass method to Response for length checking response_kw["request_method"] = method # Import httplib's response into our own wrapper object response = self.ResponseCls.from_httplib( httplib_response, pool=self, connection=response_conn, retries=retries, **response_kw ) # Everything went great! clean_exit = True except EmptyPoolError: # Didn't get a connection from the pool, no need to clean up clean_exit = True release_this_conn = False raise except ( TimeoutError, HTTPException, SocketError, ProtocolError, BaseSSLError, SSLError, CertificateError, ) as e: # Discard the connection for these exceptions. It will be # replaced during the next _get_conn() call. clean_exit = False def _is_ssl_error_message_from_http_proxy(ssl_error): # We're trying to detect the message 'WRONG_VERSION_NUMBER' but # SSLErrors are kinda all over the place when it comes to the message, # so we try to cover our bases here! message = " ".join(re.split("[^a-z]", str(ssl_error).lower())) return ( "wrong version number" in message or "unknown protocol" in message ) # Try to detect a common user error with proxies which is to # set an HTTP proxy to be HTTPS when it should be 'http://' # (ie {'http': 'http://proxy', 'https': 'https://proxy'}) # Instead we add a nice error message and point to a URL. if ( isinstance(e, BaseSSLError) and self.proxy and _is_ssl_error_message_from_http_proxy(e) ): e = ProxyError( "Your proxy appears to only use HTTP and not HTTPS, " "try changing your proxy URL to be HTTP. See: " "https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html" "#https-proxy-error-http-proxy", SSLError(e), ) elif isinstance(e, (BaseSSLError, CertificateError)): e = SSLError(e) elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy: e = ProxyError("Cannot connect to proxy.", e) elif isinstance(e, (SocketError, HTTPException)): e = ProtocolError("Connection aborted.", e) > retries = retries.increment( method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] ) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:785: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None), method = 'GET', url = '/', response = None error = SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)')) _pool = , _stacktrace = def increment( self, method=None, url=None, response=None, error=None, _pool=None, _stacktrace=None, ): """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.HTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise six.reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise six.reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or not self._is_method_retryable(method): raise six.reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" redirect_location = response.get_redirect_location() status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): > raise MaxRetryError(_pool, url, error or ResponseError(cause)) E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))) /usr/lib/python3.8/site-packages/urllib3/util/retry.py:592: MaxRetryError During handling of the above exception, another exception occurred: httpbin_both = , tmpdir = local('/tmp/pytest-of-tkloczko/pytest-48/test_status_code_https_0') def test_status_code(httpbin_both, tmpdir): """Ensure that we can read the status code""" url = httpbin_both.url + "/" with vcr.use_cassette(str(tmpdir.join("atts.yaml"))): > status_code = requests.get(url).status_code tests/integration/test_requests.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/requests/api.py:75: in get return request('get', url, params=params, **kwargs) /usr/lib/python3.8/site-packages/requests/api.py:61: in request return session.request(method=method, url=url, **kwargs) /usr/lib/python3.8/site-packages/requests/sessions.py:529: in request resp = self.send(prep, **send_kwargs) /usr/lib/python3.8/site-packages/requests/sessions.py:645: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , request = , stream = False, timeout = Timeout(connect=None, read=None, total=None) verify = True, cert = None, proxies = OrderedDict() def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies) chunked = not (request.body is None or 'Content-Length' in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError as e: # this may raise a string formatting error. err = ("Invalid timeout {}. Pass a (connect, read) " "timeout tuple, or a single float to set " "both timeouts to the same value".format(timeout)) raise ValueError(err) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: if not chunked: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout ) # Send the request. else: if hasattr(conn, 'proxy_pool'): conn = conn.proxy_pool low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT) try: skip_host = 'Host' in request.headers low_conn.putrequest(request.method, url, skip_accept_encoding=True, skip_host=skip_host) for header, value in request.headers.items(): low_conn.putheader(header, value) low_conn.endheaders() for i in request.body: low_conn.send(hex(len(i))[2:].encode('utf-8')) low_conn.send(b'\r\n') low_conn.send(i) low_conn.send(b'\r\n') low_conn.send(b'0\r\n\r\n') # Receive the response from the server try: # For Python 2.7, use buffering of HTTP responses r = low_conn.getresponse(buffering=True) except TypeError: # For compatibility with Python 3.3+ r = low_conn.getresponse() resp = HTTPResponse.from_httplib( r, pool=conn, connection=low_conn, preload_content=False, decode_content=False ) except: # If we hit any problems here, clean up the connection. # Then, reraise so that we can handle the actual exception. low_conn.close() raise except (ProtocolError, socket.error) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. > raise SSLError(e, request=request) E requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))) /usr/lib/python3.8/site-packages/requests/adapters.py:517: SSLError [..] /usr/lib/python3.8/site-packages/requests/adapters.py:517: SSLError ============================================================================= warnings summary ============================================================================= ../../../../../usr/lib/python3.8/site-packages/pytest_aiohttp/plugin.py:28 /usr/lib/python3.8/site-packages/pytest_aiohttp/plugin.py:28: DeprecationWarning: The 'asyncio_mode' is 'legacy', switching to 'auto' for the sake of pytest-aiohttp backward compatibility. Please explicitly use 'asyncio_mode=strict' or 'asyncio_mode=auto' in pytest configuration file. config.issue_config_time_warning(LEGACY_MODE, stacklevel=2) ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_proxy.py:42 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.1.1/tests/integration/test_proxy.py:42: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_wild.py:86 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.1.1/tests/integration/test_wild.py:86: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:116: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:172: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:144: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:191: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:210: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 12 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:229: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ========================================================================= short test summary info ========================================================================== SKIPPED [1] tests/integration/test_tornado.py:12: could not import 'tornado': No module named 'tornado' SKIPPED [1] tests/integration/test_boto3.py:58: botocore version 1.25.8 does not use vendored requests anymore. SKIPPED [1] tests/integration/test_boto3.py:76: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:94: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_requests.py:119: condition: sys.version_info >= (3, 6) FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAu... FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['... FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['Hmac... FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Hand... FAILED tests/integration/test_requests.py::test_status_code[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceede... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded wi... FAILED tests/integration/test_requests.py::test_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max... FAILED tests/integration/test_requests.py::test_effective_url[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries excee... FAILED tests/integration/test_requests.py::test_auth[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceede... FAILED tests/integration/test_requests.py::test_post[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_gzip[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1... FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127... FAILED tests/integration/test_requests.py::test_post_file[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries ... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max ... FAILED tests/integration/test_httpx.py::test_redirect[DoAsyncRequest] - vcr.errors.UnhandledHTTPRequestError: "The cassette ('/tmp/pytest-of-tkloczko/pytest-48/test_redi... FAILED tests/integration/test_httpx.py::test_redirect[DoSyncRequest] - vcr.errors.UnhandledHTTPRequestError: "The cassette ('/tmp/pytest-of-tkloczko/pytest-48/test_redir... FAILED tests/integration/test_httpx.py::test_behind_proxy[DoAsyncRequest] - ValueError: Proxy keys should use proper URL forms rather than plain scheme strings. Instead ... FAILED tests/integration/test_httpx.py::test_behind_proxy[DoSyncRequest] - ValueError: Proxy keys should use proper URL forms rather than plain scheme strings. Instead o... FAILED tests/integration/test_httpx.py::test_cookies[DoAsyncRequest-http] - IndexError: list index out of range FAILED tests/integration/test_httpx.py::test_cookies[DoAsyncRequest-https] - IndexError: list index out of range FAILED tests/integration/test_httpx.py::test_cookies[DoSyncRequest-http] - IndexError: list index out of range FAILED tests/integration/test_httpx.py::test_cookies[DoSyncRequest-https] - IndexError: list index out of range FAILED tests/integration/test_httpx.py::test_relative_redirects[DoAsyncRequest-http] - AssertionError: FAILED tests/integration/test_httpx.py::test_relative_redirects[DoAsyncRequest-https] - AssertionError: FAILED tests/integration/test_httpx.py::test_relative_redirects[DoSyncRequest-http] - AssertionError: FAILED tests/integration/test_httpx.py::test_relative_redirects[DoSyncRequest-https] - AssertionError: FAILED tests/integration/test_httpx.py::test_redirect_wo_allow_redirects[DoAsyncRequest] - TypeError: request() got an unexpected keyword argument 'allow_redirects' FAILED tests/integration/test_httpx.py::test_redirect_wo_allow_redirects[DoSyncRequest] - TypeError: request() got an unexpected keyword argument 'allow_redirects' FAILED tests/integration/test_requests.py::test_cross_scheme - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36463): Max retries exceeded with... ========================================================= 34 failed, 351 passed, 5 skipped, 76 warnings in 44.38s ========================================================== ```
dogweather commented 2 years ago

Version 4.1.1 is 1.5 years old. Maybe try grabbing from master?

kloczek commented 2 years ago

Just tested new 4.2.0. I see some inmprovements as less units now are failing.

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.2.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.2.0-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra =========================================================================== test session starts ============================================================================ platform linux -- Python 3.8.13, pytest-7.1.2, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.0 plugins: anyio-3.6.1, asyncio-0.18.2, aiohttp-1.0.4, httpbin-1.0.2, mock-3.8.1 asyncio: mode=auto collected 390 items / 1 skipped tests/integration/test_aiohttp.py .................................... [ 9%] tests/integration/test_basic.py ..... [ 10%] tests/integration/test_boto.py .FFFF [ 11%] tests/integration/test_boto3.py sss [ 12%] tests/integration/test_config.py ..... [ 13%] tests/integration/test_disksaver.py .. [ 14%] tests/integration/test_filter.py ........ [ 16%] tests/integration/test_httplib2.py ........ [ 18%] tests/integration/test_requests.py ............... [ 22%] tests/integration/test_urllib2.py ........ [ 24%] tests/integration/test_urllib3.py ....... [ 26%] tests/integration/test_httplib2.py ........ [ 28%] tests/integration/test_requests.py pytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F [ 32%] tests/integration/test_urllib2.py ........ [ 34%] tests/integration/test_urllib3.py ....... [ 35%] tests/integration/test_httplib2.py .. [ 36%] tests/integration/test_httpx.py .......................................... [ 47%] tests/integration/test_ignore.py .... [ 48%] tests/integration/test_matchers.py .............. [ 51%] tests/integration/test_multiple.py . [ 52%] tests/integration/test_proxy.py . [ 52%] tests/integration/test_record_mode.py ........ [ 54%] tests/integration/test_register_matcher.py .. [ 54%] tests/integration/test_register_persister.py .. [ 55%] tests/integration/test_register_serializer.py . [ 55%] tests/integration/test_request.py .. [ 56%] tests/integration/test_requests.py .spytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F... [ 57%] tests/integration/test_stubs.py .... [ 58%] tests/integration/test_urllib2.py .. [ 59%] tests/integration/test_urllib3.py .... [ 60%] tests/integration/test_wild.py ...... [ 61%] tests/unit/test_cassettes.py ............................. [ 69%] tests/unit/test_errors.py .... [ 70%] tests/unit/test_filters.py ...................... [ 75%] tests/unit/test_json_serializer.py . [ 76%] tests/unit/test_matchers.py ......................... [ 82%] tests/unit/test_migration.py ... [ 83%] tests/unit/test_persist.py .... [ 84%] tests/unit/test_request.py ................. [ 88%] tests/unit/test_response.py .... [ 89%] tests/unit/test_serialize.py ............... [ 93%] tests/unit/test_stubs.py .. [ 94%] tests/unit/test_vcr.py ...................... [ 99%] tests/unit/test_vcr_import.py . [100%] ================================================================================= FAILURES ================================================================================= __________________________________________________________________________ test_boto_without_vcr ___________________________________________________________________________ def test_boto_without_vcr(): > s3_conn = S3Connection() tests/integration/test_boto.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib64/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: ERROR boto:utils.py:236 Unable to read instance data, giving up _______________________________________________________________________ test_boto_medium_difficulty ________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-203/test_boto_medium_difficulty0') def test_boto_medium_difficulty(tmpdir): > s3_conn = S3Connection() tests/integration/test_boto.py:34: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib64/python3.8/urllib/request.py", line 1354, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1357, in do_open raise URLError(err) urllib.error.URLError: ERROR boto:utils.py:236 Unable to read instance data, giving up _________________________________________________________________________ test_boto_hardcore_mode __________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-203/test_boto_hardcore_mode0') def test_boto_hardcore_mode(tmpdir): with vcr.use_cassette(str(tmpdir.join("boto-hardcore.yml"))): > s3_conn = S3Connection() tests/integration/test_boto.py:49: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/s3/connection.py:188: in __init__ super(S3Connection, self).__init__(host, /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 's3.amazonaws.com', config = , provider = requested_capability = ['s3'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1358, in do_open r = h.getresponse() File "/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.2.0-2.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py", line 244, in getresponse self.real_connection.request( File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out ERROR boto:utils.py:236 Unable to read instance data, giving up ______________________________________________________________________________ test_boto_iam _______________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-203/test_boto_iam0') def test_boto_iam(tmpdir): try: boto.config.add_section("Boto") except DuplicateSectionError: pass # Ensure that boto uses HTTPS boto.config.set("Boto", "is_secure", "true") # Ensure that boto uses CertValidatingHTTPSConnection boto.config.set("Boto", "https_validate_certificates", "true") with vcr.use_cassette(str(tmpdir.join("boto-iam.yml"))): > iam_conn = boto.iam.connect_to_region("universal") tests/integration/test_boto.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/boto/iam/__init__.py:90: in connect_to_region return region.connect(**kw_params) /usr/lib/python3.8/site-packages/boto/iam/__init__.py:44: in connect return self.connection_cls(host=self.endpoint, **kw_params) /usr/lib/python3.8/site-packages/boto/iam/connection.py:66: in __init__ super(IAMConnection, self).__init__(aws_access_key_id, /usr/lib/python3.8/site-packages/boto/connection.py:1091: in __init__ super(AWSQueryConnection, self).__init__( /usr/lib/python3.8/site-packages/boto/connection.py:568: in __init__ self._auth_handler = auth.get_auth_handler( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ host = 'iam.amazonaws.com', config = , provider = requested_capability = ['hmac-v4'] def get_auth_handler(host, config, provider, requested_capability=None): """Finds an AuthHandler that is ready to authenticate. Lists through all the registered AuthHandlers to find one that is willing to handle for the requested capabilities, config and provider. :type host: string :param host: The name of the host :type config: :param config: :type provider: :param provider: Returns: An implementation of AuthHandler. Raises: boto.exception.NoAuthHandlerFound """ ready_handlers = [] auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability) for handler in auth_handlers: try: ready_handlers.append(handler(host, config, provider)) except boto.auth_handler.NotReadyToAuthenticate: pass if not ready_handlers: checked_handlers = auth_handlers names = [handler.__name__ for handler in checked_handlers] > raise boto.exception.NoAuthHandlerFound( 'No handler was ready to authenticate. %d handlers were checked.' ' %s ' 'Check your credentials' % (len(names), str(names))) E boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials /usr/lib/python3.8/site-packages/boto/auth.py:1018: NoAuthHandlerFound ---------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------- ERROR boto:utils.py:230 Caught exception reading instance data Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/boto/utils.py", line 217, in retry_url r = opener.open(req, timeout=timeout) File "/usr/lib64/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/usr/lib64/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/usr/lib64/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib64/python3.8/urllib/request.py", line 1383, in http_open return self.do_open(http.client.HTTPConnection, req) File "/usr/lib64/python3.8/urllib/request.py", line 1358, in do_open r = h.getresponse() File "/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-4.2.0-2.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py", line 244, in getresponse self.real_connection.request( File "/usr/lib64/python3.8/http/client.py", line 1256, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1302, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1251, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib64/python3.8/http/client.py", line 1011, in _send_output self.send(msg) File "/usr/lib64/python3.8/http/client.py", line 951, in send self.connect() File "/usr/lib64/python3.8/http/client.py", line 922, in connect self.sock = self._create_connection( File "/usr/lib64/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib64/python3.8/socket.py", line 796, in create_connection sock.connect(sa) socket.timeout: timed out ERROR boto:utils.py:236 Unable to read instance data, giving up _________________________________________________________________________ test_status_code[https] __________________________________________________________________________ self = , method = 'GET', url = '/', body = None headers = {'User-Agent': 'python-requests/2.28.0', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None, release_conn = False, chunked = False, body_pos = None response_kw = {'decode_content': False, 'preload_content': False}, parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True, http_tunnel_required = False, err = None, clean_exit = False def urlopen( self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw ): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method provided by :class:`.RequestMethods`, such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``response_kw.get('preload_content', True)``. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = response_kw.get("preload_content", True) # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = six.ensure_str(_encode_target(url)) else: url = six.ensure_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() headers.update(self.proxy_headers) # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout is_new_proxy_conn = self.proxy is not None and not getattr( conn, "sock", None ) if is_new_proxy_conn and http_tunnel_required: self._prepare_proxy(conn) # Make the request on the httplib connection object. > httplib_response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, ) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:703: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = conn = , method = 'GET', url = '/' timeout = Timeout(connect=None, read=None, total=None), chunked = False httplib_request_kw = {'body': None, 'headers': {'User-Agent': 'python-requests/2.28.0', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}} timeout_obj = Timeout(connect=None, read=None, total=None) def _make_request( self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw ): """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param timeout: Socket timeout in seconds for the request. This can be a float or integer, which will set the same timeout value for the socket connect and the socket read, or an instance of :class:`urllib3.util.Timeout`, which gives you more fine-grained control over your timeouts. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = timeout_obj.connect_timeout # Trigger any extra validation we need to do. try: > self._validate_conn(conn) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:386: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = conn = def _validate_conn(self, conn): """ Called right before a request is made, after the socket is created. """ super(HTTPSConnectionPool, self)._validate_conn(conn) # Force connect early to allow us to validate the connection. if not getattr(conn, "sock", None): # AppEngine might not have `.sock` > conn.connect() /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1040: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , args = (), kwargs = {} force_reset = def connect(self, *args, **kwargs): """ httplib2 uses this. Connects to the server I'm assuming. Only pass to the baseclass if we don't have a recorded response and are not write-protected. """ if hasattr(self, "_vcr_request") and self.cassette.can_play_response_for(self._vcr_request): # We already have a response we are going to play, don't # actually connect return if self.cassette.write_protected: # Cassette is write-protected, don't actually connect return from vcr.patch import force_reset with force_reset(): > return self.real_connection.connect(*args, **kwargs) ../../BUILDROOT/python-vcrpy-4.2.0-2.fc35.x86_64/usr/lib/python3.8/site-packages/vcr/stubs/__init__.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def connect(self): # Add certificate verification self.sock = conn = self._new_conn() hostname = self.host tls_in_tls = False if self._is_using_tunnel(): if self.tls_in_tls_required: self.sock = conn = self._connect_tls_proxy(hostname, conn) tls_in_tls = True # Calls self._set_hostport(), so self.host is # self._tunnel_host below. self._tunnel() # Mark this connection as not reusable self.auto_open = 0 # Override the host with the one we're requesting data from. hostname = self._tunnel_host server_hostname = hostname if self.server_hostname is not None: server_hostname = self.server_hostname is_time_off = datetime.date.today() < RECENT_DATE if is_time_off: warnings.warn( ( "System time is way off (before {0}). This will probably " "lead to SSL verification errors" ).format(RECENT_DATE), SystemTimeWarning, ) # Wrap socket using verification with the root certs in # trusted_root_certs default_ssl_context = False if self.ssl_context is None: default_ssl_context = True self.ssl_context = create_urllib3_context( ssl_version=resolve_ssl_version(self.ssl_version), cert_reqs=resolve_cert_reqs(self.cert_reqs), ) context = self.ssl_context context.verify_mode = resolve_cert_reqs(self.cert_reqs) # Try to load OS default certs if none are given. # Works well on Windows (requires Python3.4+) if ( not self.ca_certs and not self.ca_cert_dir and not self.ca_cert_data and default_ssl_context and hasattr(context, "load_default_certs") ): context.load_default_certs() > self.sock = ssl_wrap_socket( sock=conn, keyfile=self.key_file, certfile=self.cert_file, key_password=self.key_password, ca_certs=self.ca_certs, ca_cert_dir=self.ca_cert_dir, ca_cert_data=self.ca_cert_data, server_hostname=server_hostname, ssl_context=context, tls_in_tls=tls_in_tls, ) /usr/lib/python3.8/site-packages/urllib3/connection.py:414: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sock = , keyfile = None, certfile = None, cert_reqs = None ca_certs = '/etc/pki/tls/certs/ca-bundle.crt', server_hostname = '127.0.0.1', ssl_version = None, ciphers = None, ssl_context = ca_cert_dir = None, key_password = None, ca_cert_data = None, tls_in_tls = False def ssl_wrap_socket( sock, keyfile=None, certfile=None, cert_reqs=None, ca_certs=None, server_hostname=None, ssl_version=None, ciphers=None, ssl_context=None, ca_cert_dir=None, key_password=None, ca_cert_data=None, tls_in_tls=False, ): """ All arguments except for server_hostname, ssl_context, and ca_cert_dir have the same meaning as they do when using :func:`ssl.wrap_socket`. :param server_hostname: When SNI is supported, the expected hostname of the certificate :param ssl_context: A pre-made :class:`SSLContext` object. If none is provided, one will be created using :func:`create_urllib3_context`. :param ciphers: A string of ciphers we wish the client to support. :param ca_cert_dir: A directory containing CA certificates in multiple separate files, as supported by OpenSSL's -CApath flag or the capath argument to SSLContext.load_verify_locations(). :param key_password: Optional password if the keyfile is encrypted. :param ca_cert_data: Optional string containing CA certificates in PEM format suitable for passing as the cadata parameter to SSLContext.load_verify_locations() :param tls_in_tls: Use SSLTransport to wrap the existing socket. """ context = ssl_context if context is None: # Note: This branch of code and all the variables in it are no longer # used by urllib3 itself. We should consider deprecating and removing # this code. context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers) if ca_certs or ca_cert_dir or ca_cert_data: try: context.load_verify_locations(ca_certs, ca_cert_dir, ca_cert_data) except (IOError, OSError) as e: raise SSLError(e) elif ssl_context is None and hasattr(context, "load_default_certs"): # try to load OS default certs; works well on Windows (require Python3.4+) context.load_default_certs() # Attempt to detect if we get the goofy behavior of the # keyfile being encrypted and OpenSSL asking for the # passphrase via the terminal and instead error out. if keyfile and key_password is None and _is_key_file_encrypted(keyfile): raise SSLError("Client private key is encrypted, password is required") if certfile: if key_password is None: context.load_cert_chain(certfile, keyfile) else: context.load_cert_chain(certfile, keyfile, key_password) try: if hasattr(context, "set_alpn_protocols"): context.set_alpn_protocols(ALPN_PROTOCOLS) except NotImplementedError: # Defensive: in CI, we always have set_alpn_protocols pass # If we detect server_hostname is an IP address then the SNI # extension should not be used according to RFC3546 Section 3.1 use_sni_hostname = server_hostname and not is_ipaddress(server_hostname) # SecureTransport uses server_hostname in certificate verification. send_sni = (use_sni_hostname and HAS_SNI) or ( IS_SECURETRANSPORT and server_hostname ) # Do not warn the user if server_hostname is an invalid SNI hostname. if not HAS_SNI and use_sni_hostname: warnings.warn( "An HTTPS request has been made, but the SNI (Server Name " "Indication) extension to TLS is not available on this platform. " "This may cause the server to present an incorrect TLS " "certificate, which can cause validation failures. You can upgrade to " "a newer version of Python to solve this. For more information, see " "https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html" "#ssl-warnings", SNIMissingWarning, ) if send_sni: ssl_sock = _ssl_wrap_socket_impl( sock, context, tls_in_tls, server_hostname=server_hostname ) else: > ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls) /usr/lib/python3.8/site-packages/urllib3/util/ssl_.py:453: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sock = , ssl_context = tls_in_tls = False, server_hostname = None def _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname=None): if tls_in_tls: if not SSLTransport: # Import error, ssl is not available. raise ProxySchemeUnsupported( "TLS in TLS requires support for the 'ssl' module" ) SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) return SSLTransport(sock, ssl_context, server_hostname) if server_hostname: return ssl_context.wrap_socket(sock, server_hostname=server_hostname) else: > return ssl_context.wrap_socket(sock) /usr/lib/python3.8/site-packages/urllib3/util/ssl_.py:495: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , sock = server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, session = None def wrap_socket(self, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, session=None): # SSLSocket class handles server_hostname encoding before it calls # ctx._wrap_socket() > return self.sslsocket_class._create( sock=sock, server_side=server_side, do_handshake_on_connect=do_handshake_on_connect, suppress_ragged_eofs=suppress_ragged_eofs, server_hostname=server_hostname, context=self, session=session ) /usr/lib64/python3.8/ssl.py:500: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , sock = , server_side = False do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = , session = None @classmethod def _create(cls, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, context=None, session=None): if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: raise NotImplementedError("only stream sockets are supported") if server_side: if server_hostname: raise ValueError("server_hostname can only be specified " "in client mode") if session is not None: raise ValueError("session can only be specified in " "client mode") if context.check_hostname and not server_hostname: raise ValueError("check_hostname requires server_hostname") kwargs = dict( family=sock.family, type=sock.type, proto=sock.proto, fileno=sock.fileno() ) self = cls.__new__(cls, **kwargs) super(SSLSocket, self).__init__(**kwargs) self.settimeout(sock.gettimeout()) sock.detach() self._context = context self._session = session self._closed = False self._sslobj = None self.server_side = server_side self.server_hostname = context._encode_hostname(server_hostname) self.do_handshake_on_connect = do_handshake_on_connect self.suppress_ragged_eofs = suppress_ragged_eofs # See if we are connected try: self.getpeername() except OSError as e: if e.errno != errno.ENOTCONN: raise connected = False else: connected = True self._connected = connected if connected: # create the SSL object try: self._sslobj = self._context._wrap_socket( self, server_side, self.server_hostname, owner=self, session=self._session, ) if do_handshake_on_connect: timeout = self.gettimeout() if timeout == 0.0: # non-blocking raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") > self.do_handshake() /usr/lib64/python3.8/ssl.py:1040: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [..] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sock = , ssl_context = tls_in_tls = False, server_hostname = None def _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname=None): if tls_in_tls: if not SSLTransport: # Import error, ssl is not available. raise ProxySchemeUnsupported( "TLS in TLS requires support for the 'ssl' module" ) SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) return SSLTransport(sock, ssl_context, server_hostname) if server_hostname: return ssl_context.wrap_socket(sock, server_hostname=server_hostname) else: > return ssl_context.wrap_socket(sock) /usr/lib/python3.8/site-packages/urllib3/util/ssl_.py:495: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , sock = server_side = False, do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, session = None def wrap_socket(self, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, session=None): # SSLSocket class handles server_hostname encoding before it calls # ctx._wrap_socket() > return self.sslsocket_class._create( sock=sock, server_side=server_side, do_handshake_on_connect=do_handshake_on_connect, suppress_ragged_eofs=suppress_ragged_eofs, server_hostname=server_hostname, context=self, session=session ) /usr/lib64/python3.8/ssl.py:500: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cls = , sock = , server_side = False do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = , session = None @classmethod def _create(cls, sock, server_side=False, do_handshake_on_connect=True, suppress_ragged_eofs=True, server_hostname=None, context=None, session=None): if sock.getsockopt(SOL_SOCKET, SO_TYPE) != SOCK_STREAM: raise NotImplementedError("only stream sockets are supported") if server_side: if server_hostname: raise ValueError("server_hostname can only be specified " "in client mode") if session is not None: raise ValueError("session can only be specified in " "client mode") if context.check_hostname and not server_hostname: raise ValueError("check_hostname requires server_hostname") kwargs = dict( family=sock.family, type=sock.type, proto=sock.proto, fileno=sock.fileno() ) self = cls.__new__(cls, **kwargs) super(SSLSocket, self).__init__(**kwargs) self.settimeout(sock.gettimeout()) sock.detach() self._context = context self._session = session self._closed = False self._sslobj = None self.server_side = server_side self.server_hostname = context._encode_hostname(server_hostname) self.do_handshake_on_connect = do_handshake_on_connect self.suppress_ragged_eofs = suppress_ragged_eofs # See if we are connected try: self.getpeername() except OSError as e: if e.errno != errno.ENOTCONN: raise connected = False else: connected = True self._connected = connected if connected: # create the SSL object try: self._sslobj = self._context._wrap_socket( self, server_side, self.server_hostname, owner=self, session=self._session, ) if do_handshake_on_connect: timeout = self.gettimeout() if timeout == 0.0: # non-blocking raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") > self.do_handshake() /usr/lib64/python3.8/ssl.py:1040: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , block = False @_sslcopydoc def do_handshake(self, block=False): self._check_connected() timeout = self.gettimeout() try: if timeout == 0.0 and block: self.settimeout(None) > self._sslobj.do_handshake() E ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131) /usr/lib64/python3.8/ssl.py:1309: SSLCertVerificationError During handling of the above exception, another exception occurred: self = , request = , stream = False, timeout = Timeout(connect=None, read=None, total=None) verify = True, cert = None, proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: if not chunked: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, ) /usr/lib/python3.8/site-packages/requests/adapters.py:489: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , method = 'GET', url = '/', body = None headers = {'User-Agent': 'python-requests/2.28.0', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'} retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False timeout = Timeout(connect=None, read=None, total=None), pool_timeout = None, release_conn = False, chunked = False, body_pos = None response_kw = {'decode_content': False, 'preload_content': False}, parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) destination_scheme = None, conn = None, release_this_conn = True, http_tunnel_required = False, err = None, clean_exit = False def urlopen( self, method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_Default, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw ): """ Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you'll need to specify all the raw details. .. note:: More commonly, it's appropriate to use a convenience method provided by :class:`.RequestMethods`, such as :meth:`request`. .. note:: `release_conn` will only behave as expected if `preload_content=False` because we want to make `preload_content=False` the default behaviour someday soon without breaking backwards compatibility. :param method: HTTP request method (such as GET, POST, PUT, etc.) :param url: The URL to perform the request on. :param body: Data to send in the request body, either :class:`str`, :class:`bytes`, an iterable of :class:`str`/:class:`bytes`, or a file-like object. :param headers: Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers. :param retries: Configure the number of retries to allow before raising a :class:`~urllib3.exceptions.MaxRetryError` exception. Pass ``None`` to retry until you receive a response. Pass a :class:`~urllib3.util.retry.Retry` object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry. If ``False``, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned. :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. :param redirect: If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too. :param assert_same_host: If ``True``, will make sure that the host of the pool requests is consistent else will raise HostChangedError. When ``False``, you can use the pool on an HTTP proxy and request foreign hosts. :param timeout: If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of :class:`urllib3.util.Timeout`. :param pool_timeout: If set and the pool is set to block=True, then this method will block for ``pool_timeout`` seconds and raise EmptyPoolError if no connection is available within the time period. :param release_conn: If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when `preload_content=True`). This is useful if you're not preloading the response's content immediately. You will need to call ``r.release_conn()`` on the response ``r`` to return the connection back into the pool. If None, it takes the value of ``response_kw.get('preload_content', True)``. :param chunked: If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False. :param int body_pos: Position to seek to in file-like body in the event of a retry or redirect. Typically this won't need to be set because urllib3 will auto-populate the value when needed. :param \\**response_kw: Additional parameters are passed to :meth:`urllib3.response.HTTPResponse.from_httplib` """ parsed_url = parse_url(url) destination_scheme = parsed_url.scheme if headers is None: headers = self.headers if not isinstance(retries, Retry): retries = Retry.from_int(retries, redirect=redirect, default=self.retries) if release_conn is None: release_conn = response_kw.get("preload_content", True) # Check host if assert_same_host and not self.is_same_host(url): raise HostChangedError(self, url, retries) # Ensure that the URL we're connecting to is properly encoded if url.startswith("/"): url = six.ensure_str(_encode_target(url)) else: url = six.ensure_str(parsed_url.url) conn = None # Track whether `conn` needs to be released before # returning/raising/recursing. Update this variable if necessary, and # leave `release_conn` constant throughout the function. That way, if # the function recurses, the original value of `release_conn` will be # passed down into the recursive call, and its value will be respected. # # See issue #651 [1] for details. # # [1] release_this_conn = release_conn http_tunnel_required = connection_requires_http_tunnel( self.proxy, self.proxy_config, destination_scheme ) # Merge the proxy headers. Only done when not using HTTP CONNECT. We # have to copy the headers dict so we can safely change it without those # changes being reflected in anyone else's copy. if not http_tunnel_required: headers = headers.copy() headers.update(self.proxy_headers) # Must keep the exception bound to a separate variable or else Python 3 # complains about UnboundLocalError. err = None # Keep track of whether we cleanly exited the except block. This # ensures we do proper cleanup in finally. clean_exit = False # Rewind body position, if needed. Record current position # for future rewinds in the event of a redirect/retry. body_pos = set_file_position(body, body_pos) try: # Request a connection from the queue. timeout_obj = self._get_timeout(timeout) conn = self._get_conn(timeout=pool_timeout) conn.timeout = timeout_obj.connect_timeout is_new_proxy_conn = self.proxy is not None and not getattr( conn, "sock", None ) if is_new_proxy_conn and http_tunnel_required: self._prepare_proxy(conn) # Make the request on the httplib connection object. httplib_response = self._make_request( conn, method, url, timeout=timeout_obj, body=body, headers=headers, chunked=chunked, ) # If we're going to release the connection in ``finally:``, then # the response doesn't need to know about the connection. Otherwise # it will also try to release it and we'll have a double-release # mess. response_conn = conn if not release_conn else None # Pass method to Response for length checking response_kw["request_method"] = method # Import httplib's response into our own wrapper object response = self.ResponseCls.from_httplib( httplib_response, pool=self, connection=response_conn, retries=retries, **response_kw ) # Everything went great! clean_exit = True except EmptyPoolError: # Didn't get a connection from the pool, no need to clean up clean_exit = True release_this_conn = False raise except ( TimeoutError, HTTPException, SocketError, ProtocolError, BaseSSLError, SSLError, CertificateError, ) as e: # Discard the connection for these exceptions. It will be # replaced during the next _get_conn() call. clean_exit = False def _is_ssl_error_message_from_http_proxy(ssl_error): # We're trying to detect the message 'WRONG_VERSION_NUMBER' but # SSLErrors are kinda all over the place when it comes to the message, # so we try to cover our bases here! message = " ".join(re.split("[^a-z]", str(ssl_error).lower())) return ( "wrong version number" in message or "unknown protocol" in message ) # Try to detect a common user error with proxies which is to # set an HTTP proxy to be HTTPS when it should be 'http://' # (ie {'http': 'http://proxy', 'https': 'https://proxy'}) # Instead we add a nice error message and point to a URL. if ( isinstance(e, BaseSSLError) and self.proxy and _is_ssl_error_message_from_http_proxy(e) ): e = ProxyError( "Your proxy appears to only use HTTP and not HTTPS, " "try changing your proxy URL to be HTTP. See: " "https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html" "#https-proxy-error-http-proxy", SSLError(e), ) elif isinstance(e, (BaseSSLError, CertificateError)): e = SSLError(e) elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy: e = ProxyError("Cannot connect to proxy.", e) elif isinstance(e, (SocketError, HTTPException)): e = ProtocolError("Connection aborted.", e) > retries = retries.increment( method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] ) /usr/lib/python3.8/site-packages/urllib3/connectionpool.py:785: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Retry(total=0, connect=None, read=False, redirect=None, status=None), method = 'GET', url = '/', response = None error = SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)')) _pool = , _stacktrace = def increment( self, method=None, url=None, response=None, error=None, _pool=None, _stacktrace=None, ): """Return a new Retry object with incremented retry counters. :param response: A response object, or None, if the server did not return a response. :type response: :class:`~urllib3.response.HTTPResponse` :param Exception error: An error encountered during the request, or None if the response was received successfully. :return: A new ``Retry`` object. """ if self.total is False and error: # Disabled, indicate to re-raise the error. raise six.reraise(type(error), error, _stacktrace) total = self.total if total is not None: total -= 1 connect = self.connect read = self.read redirect = self.redirect status_count = self.status other = self.other cause = "unknown" status = None redirect_location = None if error and self._is_connection_error(error): # Connect retry? if connect is False: raise six.reraise(type(error), error, _stacktrace) elif connect is not None: connect -= 1 elif error and self._is_read_error(error): # Read retry? if read is False or not self._is_method_retryable(method): raise six.reraise(type(error), error, _stacktrace) elif read is not None: read -= 1 elif error: # Other retry? if other is not None: other -= 1 elif response and response.get_redirect_location(): # Redirect retry? if redirect is not None: redirect -= 1 cause = "too many redirects" redirect_location = response.get_redirect_location() status = response.status else: # Incrementing because of a server error like a 500 in # status_forcelist and the given method is in the allowed_methods cause = ResponseError.GENERIC_ERROR if response and response.status: if status_count is not None: status_count -= 1 cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) status = response.status history = self.history + ( RequestHistory(method, url, error, status, redirect_location), ) new_retry = self.new( total=total, connect=connect, read=read, redirect=redirect, status=status_count, other=other, history=history, ) if new_retry.is_exhausted(): > raise MaxRetryError(_pool, url, error or ResponseError(cause)) E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))) /usr/lib/python3.8/site-packages/urllib3/util/retry.py:592: MaxRetryError During handling of the above exception, another exception occurred: tmpdir = local('/tmp/pytest-of-tkloczko/pytest-203/test_cross_scheme1'), httpbin_secure = httpbin = def test_cross_scheme(tmpdir, httpbin_secure, httpbin): """Ensure that requests between schemes are treated separately""" # First fetch a url under http, and then again under https and then # ensure that we haven't served anything out of cache, and we have two # requests / response pairs in the cassette with vcr.use_cassette(str(tmpdir.join("cross_scheme.yaml"))) as cass: > requests.get(httpbin_secure + "/") tests/integration/test_requests.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/requests/api.py:73: in get return request("get", url, params=params, **kwargs) /usr/lib/python3.8/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) /usr/lib/python3.8/site-packages/requests/sessions.py:587: in request resp = self.send(prep, **send_kwargs) /usr/lib/python3.8/site-packages/requests/sessions.py:701: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , request = , stream = False, timeout = Timeout(connect=None, read=None, total=None) verify = True, cert = None, proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest ` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) ` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: if not chunked: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, ) # Send the request. else: if hasattr(conn, "proxy_pool"): conn = conn.proxy_pool low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT) try: skip_host = "Host" in request.headers low_conn.putrequest( request.method, url, skip_accept_encoding=True, skip_host=skip_host, ) for header, value in request.headers.items(): low_conn.putheader(header, value) low_conn.endheaders() for i in request.body: low_conn.send(hex(len(i))[2:].encode("utf-8")) low_conn.send(b"\r\n") low_conn.send(i) low_conn.send(b"\r\n") low_conn.send(b"0\r\n\r\n") # Receive the response from the server r = low_conn.getresponse() resp = HTTPResponse.from_httplib( r, pool=conn, connection=low_conn, preload_content=False, decode_content=False, ) except Exception: # If we hit any problems here, clean up the connection. # Then, raise so that we can handle the actual exception. low_conn.close() raise except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. > raise SSLError(e, request=request) E requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)'))) /usr/lib/python3.8/site-packages/requests/adapters.py:563: SSLError ============================================================================= warnings summary ============================================================================= ../../../../../usr/lib/python3.8/site-packages/pytest_aiohttp/plugin.py:28 /usr/lib/python3.8/site-packages/pytest_aiohttp/plugin.py:28: DeprecationWarning: The 'asyncio_mode' is 'legacy', switching to 'auto' for the sake of pytest-aiohttp backward compatibility. Please explicitly use 'asyncio_mode=strict' or 'asyncio_mode=auto' in pytest configuration file. config.issue_config_time_warning(LEGACY_MODE, stacklevel=2) ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_proxy.py:42 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.0/tests/integration/test_proxy.py:42: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_wild.py:86 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.0/tests/integration/test_wild.py:86: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:116: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:172: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:144: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:191: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:210: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:229: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ========================================================================= short test summary info ========================================================================== SKIPPED [1] tests/integration/test_tornado.py:12: could not import 'tornado': No module named 'tornado' SKIPPED [1] tests/integration/test_boto3.py:58: botocore version 1.27.17 does not use vendored requests anymore. SKIPPED [1] tests/integration/test_boto3.py:76: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:94: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_requests.py:116: condition: sys.version_info >= (3, 6) FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAu... FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['... FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['Hmac... FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Hand... FAILED tests/integration/test_requests.py::test_status_code[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceede... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded wi... FAILED tests/integration/test_requests.py::test_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max... FAILED tests/integration/test_requests.py::test_effective_url[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries excee... FAILED tests/integration/test_requests.py::test_auth[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceede... FAILED tests/integration/test_requests.py::test_post[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_gzip[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1... FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127... FAILED tests/integration/test_requests.py::test_post_file[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries ... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max ... FAILED tests/integration/test_requests.py::test_cross_scheme - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=44819): Max retries exceeded with... ========================================================= 20 failed, 366 passed, 5 skipped, 136 warnings in 48.74s ========================================================= ```

As you see there are some warnings about use rfc3986 module.

kloczek commented 2 years ago

Just tested 4.2.1. Only will quote summary

```console ============================================================================= warnings summary ============================================================================= ../../../../../usr/lib/python3.8/site-packages/botocore/httpsession.py:41 /usr/lib/python3.8/site-packages/botocore/httpsession.py:41: DeprecationWarning: 'urllib3.contrib.pyopenssl' module is deprecated and will be removed in a future release of urllib3 2.x. Read more in this issue: https://github.com/urllib3/urllib3/issues/2680 from urllib3.contrib.pyopenssl import orig_util_SSLContext as SSLContext ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_proxy.py:42 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_proxy.py:42: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_tornado.py:53 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:53: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:65 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:65: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:77 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:77: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:90 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:90: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:103 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:103: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:118 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:118: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:141 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:141: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:156 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:156: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:168 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:168: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:187 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:187: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:212 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:212: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:224 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:224: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:242 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:242: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:258 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:258: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:274 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:274: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:288 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:288: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:295 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:295: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:309 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:309: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:322 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:322: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:337 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_tornado.py:337: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:53 tests/integration/test_tornado.py:53: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_status_code will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:65 tests/integration/test_tornado.py:65: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_headers will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:77 tests/integration/test_tornado.py:77: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_body will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:90 tests/integration/test_tornado.py:90: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_effective_url will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:103 tests/integration/test_tornado.py:103: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:118 tests/integration/test_tornado.py:118: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth_failed will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:141 tests/integration/test_tornado.py:141: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_post will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:156 tests/integration/test_tornado.py:156: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_redirects will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:168 tests/integration/test_tornado.py:168: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:187 tests/integration/test_tornado.py:187: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_gzip will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:212 tests/integration/test_tornado.py:212: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:224 tests/integration/test_tornado.py:224: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:241 tests/integration/test_tornado.py:241: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:258 tests/integration/test_tornado.py:258: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:273 tests/integration/test_tornado.py:273: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:288 tests/integration/test_tornado.py:288: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:295 tests/integration/test_tornado.py:295: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:309 tests/integration/test_tornado.py:309: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:322 tests/integration/test_tornado.py:322: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:337 tests/integration/test_tornado.py:337: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored @pytest.mark.gen_test tests/integration/test_wild.py:86 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.2.1/tests/integration/test_wild.py:86: PytestDeprecationWarning: @pytest.yield_fixture is deprecated. Use @pytest.fixture instead; they are the same. @pytest.yield_fixture(scope="session") tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:116: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:172: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:144: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:191: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:210: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( tests/integration/test_httpx.py: 22 warnings /usr/lib/python3.8/site-packages/rfc3986/_mixin.py:229: DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ========================================================================= short test summary info ========================================================================== SKIPPED [1] tests/integration/test_boto3.py:58: botocore version 1.27.62 does not use vendored requests anymore. SKIPPED [1] tests/integration/test_boto3.py:76: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:94: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_requests.py:116: condition: sys.version_info >= (3, 6) XFAIL tests/integration/test_tornado.py::test_status_code reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_status_code will be ignored XFAIL tests/integration/test_tornado.py::test_headers reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_headers will be ignored XFAIL tests/integration/test_tornado.py::test_body reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_body will be ignored XFAIL tests/integration/test_tornado.py::test_effective_url reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_effective_url will be ignored XFAIL tests/integration/test_tornado.py::test_auth reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth will be ignored XFAIL tests/integration/test_tornado.py::test_auth_failed reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth_failed will be ignored XFAIL tests/integration/test_tornado.py::test_post reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_post will be ignored XFAIL tests/integration/test_tornado.py::test_redirects reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_redirects will be ignored XFAIL tests/integration/test_tornado.py::test_cross_scheme reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored XFAIL tests/integration/test_tornado.py::test_gzip reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_gzip will be ignored XFAIL tests/integration/test_tornado.py::test_https_with_cert_validation_disabled reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raises_in_future reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raise_error_disabled reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raises_in_future reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raise_error_disabled reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_with_decorator_use_cassette reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_exception_can_be_caught reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored XFAIL tests/integration/test_tornado.py::test_existing_references_get_patched reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_existing_instances_get_patched reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_request_time_is_set reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAu... FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['... FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['Hmac... FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Hand... FAILED tests/integration/test_requests.py::test_status_code[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceede... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded wi... FAILED tests/integration/test_requests.py::test_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max... FAILED tests/integration/test_requests.py::test_effective_url[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries excee... FAILED tests/integration/test_requests.py::test_auth[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceede... FAILED tests/integration/test_requests.py::test_post[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_gzip[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded with ... FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1... FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127... FAILED tests/integration/test_requests.py::test_post_file[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded ... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries ... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max ... FAILED tests/integration/test_requests.py::test_cross_scheme - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36041): Max retries exceeded with... =================================================== 20 failed, 366 passed, 4 skipped, 20 xfailed, 176 warnings in 46.89s =================================================== ```

Do you have aby idea why those units may be failing? And/or is it anything else what I can try to diagnose those fails? 🤔

kloczek commented 1 year ago

gentle ping .. 🤔

kloczek commented 1 year ago

Summary from testing latest 4.3.0

```console ===================================================================================== warnings summary ====================================================================================== ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_tornado.py:47 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:47: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:59 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:59: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:71 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:71: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:84 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:84: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:97 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:97: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:112 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:112: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:135 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:135: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:150 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:150: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:162 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:162: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:181 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:181: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:206 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:206: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:218 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:218: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:236 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:236: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:252 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:252: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:268 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:268: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:282 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:282: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:289 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:289: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:303 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:303: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:316 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:316: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:331 /home/tkloczko/rpmbuild/BUILD/vcrpy-4.3.0/tests/integration/test_tornado.py:331: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:47 tests/integration/test_tornado.py:47: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_status_code will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:59 tests/integration/test_tornado.py:59: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_headers will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:71 tests/integration/test_tornado.py:71: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_body will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:84 tests/integration/test_tornado.py:84: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_effective_url will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:97 tests/integration/test_tornado.py:97: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:112 tests/integration/test_tornado.py:112: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth_failed will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:135 tests/integration/test_tornado.py:135: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_post will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:150 tests/integration/test_tornado.py:150: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_redirects will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:162 tests/integration/test_tornado.py:162: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:181 tests/integration/test_tornado.py:181: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_gzip will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:206 tests/integration/test_tornado.py:206: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:218 tests/integration/test_tornado.py:218: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:235 tests/integration/test_tornado.py:235: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:252 tests/integration/test_tornado.py:252: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:267 tests/integration/test_tornado.py:267: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:282 tests/integration/test_tornado.py:282: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:289 tests/integration/test_tornado.py:289: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:303 tests/integration/test_tornado.py:303: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:316 tests/integration/test_tornado.py:316: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:331 tests/integration/test_tornado.py:331: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored @pytest.mark.gen_test -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================================================================================== short test summary info ================================================================================== SKIPPED [1] tests/integration/test_boto3.py:60: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:77: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_requests.py:117: condition: sys.version_info >= (3, 6) XFAIL tests/integration/test_tornado.py::test_status_code - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_status_code will be ignored XFAIL tests/integration/test_tornado.py::test_headers - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_headers will be ignored XFAIL tests/integration/test_tornado.py::test_body - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_body will be ignored XFAIL tests/integration/test_tornado.py::test_effective_url - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_effective_url will be ignored XFAIL tests/integration/test_tornado.py::test_auth - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth will be ignored XFAIL tests/integration/test_tornado.py::test_auth_failed - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth_failed will be ignored XFAIL tests/integration/test_tornado.py::test_post - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_post will be ignored XFAIL tests/integration/test_tornado.py::test_redirects - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_redirects will be ignored XFAIL tests/integration/test_tornado.py::test_cross_scheme - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored XFAIL tests/integration/test_tornado.py::test_gzip - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_gzip will be ignored XFAIL tests/integration/test_tornado.py::test_https_with_cert_validation_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_with_decorator_use_cassette - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_exception_can_be_caught - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored XFAIL tests/integration/test_tornado.py::test_existing_references_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_existing_instances_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_request_time_is_set - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials FAILED tests/integration/test_requests.py::test_status_code[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... FAILED tests/integration/test_requests.py::test_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /status/200 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_effective_url[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /redirect-to?url=/html (Caused by SSLError(SSLCertVerificationError(1, '... FAILED tests/integration/test_requests.py::test_auth[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /basic-auth/user/passwd (Caused by SSLError(SSLCertVerificationError(1, ... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /basic-auth/user/passwd (Caused by SSLError(SSLCertVerificationError(1, ... FAILED tests/integration/test_requests.py::test_post[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /redirect-to?url=bytes/1024 (Caused by SSLError(SSLCertVerificationError... FAILED tests/integration/test_requests.py::test_gzip[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /gzip (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_post_file[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_cross_scheme - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=45907): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... ======================================================= 20 failed, 388 passed, 3 skipped, 20 xfailed, 41 warnings in 74.26s (0:01:14) ======================================================= ```
hartwork commented 1 year ago

@kloczek there is a probably a problem in how you run the tests, more on that below. Here is how to see the tests pass with plain pytest (meaning without tox unlike vcrpy's CI), starting with an empty venv:

cd "$(mktemp -d)"
wget https://github.com/kevin1024/vcrpy/archive/refs/tags/v4.3.0.tar.gz
tar xf v4.3.0.tar.gz 
cd vcrpy-4.3.0/
python3.10 -m venv venv
source venv/bin/activate
pip install -e .
pip install pytest aiohttp boto3 httpx requests pytest-httpbin tornado httplib2 pytest-aiohttp 'urllib3<2' Werkzeug==2.0.3  # NOTE LAST TWO!
REQUESTS_CA_BUNDLE=`python -m pytest_httpbin.certs` pytest -ra  # NOTE REQUESTS_CA_BUNDLE!

Note the two things marked with NOTE in that^^ block.

@kloczek please run the tests this very way and report back any failures. We can then work from there. Thanks :pray:

kloczek commented 1 year ago

First of all python -m foo should be never used because python when starts module that way add current directory to sys.path, This is why pytest module provides wrapper script. No use 'python -m pytest` was discussed hundreds times on pytest forum and maintained many times told that running pytest that way in nothing more than asking for troubles.

Second: I'm not interested to test any module in source tree because after packaging exact module will be NEVER used that way. This is why it was developed "testing as installed" methodology.

Third: I'm not interested to test any module against exact version of other modules taken from pypi. I'm trying to form set of packaged modules which will be working together in that set. This is why I've added list of modules with versions installed in build env during the testing vcrpy. Currently that set has +1.13k of packaged modules which are mostly latest version of all modules in that set. Latest version ot the werkzeug is not 2.0.0 but 2.3.4 (I'll be soon testing everything against 2.3.4). 2.0.0 has been released almost year ago and since than many things has been fixed in that module. I'm not going to roll back to 2.0.0 in my distribution because this will break many other modules. Sooner or later you will be probably this or another way forced to use latest version of the werkzeug so maybe now is the best moment to have look on that.

FYI: I'm not complaining or trying to you to force to upgrade werkzeug to latest version. I'm only reporting how testing with exact set of modules behaves. Just please try to understand that my goals are embedded in much broader landscape.

kloczek commented 1 year ago

Just checked and looks like werkzeug is not on the install time vcrpy dependencies list so if werkzeug is causing that issue looks like it is only test suite issue.

hartwork commented 1 year ago

Hi @kloczek,

I don't see how your criticism of python -m applies to our case. All that python -m pytest_httpbin.certs as used above does is produce a filename to a certificate to be put into the environment, e.g. see:

# python -m pytest_httpbin.certs
/tmp/tmp.MLDZlkbUla/vcrpy-4.3.0/venv/lib/python3.10/site-packages/pytest_httpbin/certs/cacert.pem

The call to pytest itself did not use python -m, see above. I don't see how that would be a problem to any test environment, including distro packging. I've been packaging for Linux distros myself, I understand what situation packaging and Linux distros are in regarding Python dependencies. Please let me know what I am missing or misunderstanding here.


The pinning of Werkzeug is unfortunate and caused by httpbin (https://github.com/postmanlabs/httpbin/issues/673) which is pulled in by pytest-httpbin (https://github.com/kevin1024/pytest-httpbin/issues/72). Given that httpbin's last release is of 2018, mid-term fix upstream here is probably to replace all use of httpbin (and httpbin.org) in the current test suite by something else. I will edit the title of this ticket now to better reflect what needs to be done. A short-term fix downstream for Fedora could be fixing httpbin packaging to support Werkzeug >=2.1.0 using pull request https://github.com/postmanlabs/httpbin/pull/674/files which is what Gentoo did.

CC @kevin1024 @jairhenrique

kevin1024 commented 1 year ago

Hmm. I’m a maintainer on httpbin and might be able to move things along over there.

kloczek commented 1 year ago

don't see how your criticism of python -m applies to our case.

I'm not criticising anything or trying to connect this case to use 'python -m foo`. I'm only informing you that pytest generally should be used not that way how you are using it. Only this and nothing more 😋

kloczek commented 1 year ago

Hmm. I’m a maintainer on httpbin and might be able to move things along over there.

BTW using certs: IMO it would be good to abandon use custom copies of CA and use system CA (usually now it is /etc/pki/tls/certs/ca-bundle.crt) and/or use certs over certifi modules (which could be easily centrally patched to use system system /etc/pki/tls/certs/ca-bundle.crt). Just checked my rpm spec filers library which one modules currently are using certify

[tkloczko@pers-jacek SPECS]$ grep "python3dist(certifi)" python*
python-aiohttp-cors.spec:BuildRequires: python3dist(certifi)
python-branca.spec:BuildRequires:       python3dist(certifi)
python-elastic-transport.spec:BuildRequires:    python3dist(certifi)
python-geventhttpclient.spec:BuildRequires:     python3dist(certifi)
python-google-auth.spec:BuildRequires:  python3dist(certifi)
python-httpcore.spec:BuildRequires:     python3dist(certifi)
python-httpx.spec:BuildRequires:        python3dist(certifi)
python-jsonschema.spec:BuildRequires:   python3dist(certifi)
python-matplotlib.spec:BuildRequires:   python3dist(certifi)
python-notebook.spec:BuildRequires:     python3dist(certifi)
python-pdm.spec:BuildRequires:  python3dist(certifi)
python-pip.spec:Provides: bundled(python3dist(certifi)) = 2022.12.7
python-pyppeteer.spec:BuildRequires:    python3dist(certifi)
python-pyproj.spec:BuildRequires:       python3dist(certifi)
python-requests-file.spec:BuildRequires:        python3dist(certifi)
python-selenium.spec:BuildRequires:     python3dist(certifi)
python-seleniumbase.spec:BuildRequires: python3dist(certifi)            >= 2021.10.8
python-sphinx-json-schema-spec.spec:BuildRequires:      python3dist(certifi)
python-sphinxext-rediraffe.spec:BuildRequires:  python3dist(certifi)
python-sphobjinv.spec:BuildRequires:    python3dist(certifi)
hartwork commented 1 year ago

Hmm. I’m a maintainer on httpbin and might be able to move things along over there.

@kevin1024 that would rock the house, yes please! :+1: :+1:

I'm not criticising anything or trying to connect this case to use 'python -m foo`. I'm only informing you that pytest generally should be used not that way how you are using it. Only this and nothing more :yum:

@kloczek except there was zero python -m pytest in here above before you brought it up. Zero, I checked.

kloczek commented 1 year ago

Just FTR. Here is summary pytest output on testing 5.0.0:

```console ===================================================================================== warnings summary ====================================================================================== ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_tornado.py:46 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:46: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:58 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:58: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:70 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:70: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:83 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:83: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:96 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:96: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:111 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:111: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:134 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:134: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:149 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:149: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:161 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:161: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:180 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:180: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:205 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:205: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:217 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:217: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:235 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:235: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:251 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:251: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:267 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:267: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:281 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:281: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:288 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:288: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:302 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:302: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:315 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:315: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:330 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:330: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:46 tests/integration/test_tornado.py:46: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_status_code will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:58 tests/integration/test_tornado.py:58: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_headers will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:70 tests/integration/test_tornado.py:70: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_body will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:83 tests/integration/test_tornado.py:83: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_effective_url will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:96 tests/integration/test_tornado.py:96: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:111 tests/integration/test_tornado.py:111: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth_failed will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:134 tests/integration/test_tornado.py:134: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_post will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:149 tests/integration/test_tornado.py:149: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_redirects will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:161 tests/integration/test_tornado.py:161: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:180 tests/integration/test_tornado.py:180: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_gzip will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:205 tests/integration/test_tornado.py:205: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:217 tests/integration/test_tornado.py:217: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:234 tests/integration/test_tornado.py:234: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:251 tests/integration/test_tornado.py:251: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:266 tests/integration/test_tornado.py:266: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:281 tests/integration/test_tornado.py:281: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:288 tests/integration/test_tornado.py:288: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:302 tests/integration/test_tornado.py:302: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:315 tests/integration/test_tornado.py:315: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:330 tests/integration/test_tornado.py:330: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored @pytest.mark.gen_test tests/integration/test_requests.py::test_effective_url[http] tests/integration/test_requests.py::test_redirects[http] /usr/lib/python3.8/site-packages/werkzeug/datastructures/headers.py:330: DeprecationWarning: Passing bytes as a header value is deprecated and will not be supported in Werkzeug 3.0. _value = _str_header_value(_value) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================================================================================== short test summary info ================================================================================== SKIPPED [1] tests/integration/test_boto3.py:60: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:77: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions XFAIL tests/integration/test_tornado.py::test_status_code - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_status_code will be ignored XFAIL tests/integration/test_tornado.py::test_headers - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_headers will be ignored XFAIL tests/integration/test_tornado.py::test_body - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_body will be ignored XFAIL tests/integration/test_tornado.py::test_effective_url - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_effective_url will be ignored XFAIL tests/integration/test_tornado.py::test_auth - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth will be ignored XFAIL tests/integration/test_tornado.py::test_auth_failed - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth_failed will be ignored XFAIL tests/integration/test_tornado.py::test_post - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_post will be ignored XFAIL tests/integration/test_tornado.py::test_redirects - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_redirects will be ignored XFAIL tests/integration/test_tornado.py::test_cross_scheme - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored XFAIL tests/integration/test_tornado.py::test_gzip - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_gzip will be ignored XFAIL tests/integration/test_tornado.py::test_https_with_cert_validation_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_with_decorator_use_cassette - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_exception_can_be_caught - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored XFAIL tests/integration/test_tornado.py::test_existing_references_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_existing_instances_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_request_time_is_set - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored ERROR tests/integration/test_aiohttp.py::test_cookies[http] - KeyError: 'REQUESTS_CA_BUNDLE' ERROR tests/integration/test_aiohttp.py::test_cookies_redirect[http] - KeyError: 'REQUESTS_CA_BUNDLE' ERROR tests/integration/test_aiohttp.py::test_cookies[https] - KeyError: 'REQUESTS_CA_BUNDLE' ERROR tests/integration/test_aiohttp.py::test_cookies_redirect[https] - KeyError: 'REQUESTS_CA_BUNDLE' FAILED tests/integration/test_urllib2.py::test_random_body[http] - urllib.error.HTTPError: HTTP Error 500: Internal Server Error FAILED tests/integration/test_urllib2.py::test_multiple_requests[http] - urllib.error.HTTPError: HTTP Error 500: Internal Server Error FAILED tests/integration/test_requests.py::test_status_code[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... FAILED tests/integration/test_requests.py::test_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /status/200 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_effective_url[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /redirect-to?url=/html (Caused by SSLError(SSLCertVerificationError(1, '... FAILED tests/integration/test_requests.py::test_auth[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /basic-auth/user/passwd (Caused by SSLError(SSLCertVerificationError(1, ... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /basic-auth/user/passwd (Caused by SSLError(SSLCertVerificationError(1, ... FAILED tests/integration/test_requests.py::test_post[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /redirect-to?url=bytes/1024 (Caused by SSLError(SSLCertVerificationError... FAILED tests/integration/test_requests.py::test_gzip__decode_compressed_response_false[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /gzip (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_gzip__decode_compressed_response_true[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /gzip (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /bytes/1024 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTI... FAILED tests/integration/test_requests.py::test_post_file[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: /post (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE... FAILED tests/integration/test_urllib2.py::test_random_body[https] - urllib.error.HTTPError: HTTP Error 500: Internal Server Error FAILED tests/integration/test_urllib2.py::test_multiple_requests[https] - urllib.error.HTTPError: HTTP Error 500: Internal Server Error FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials FAILED tests/integration/test_record_mode.py::test_new_episodes_record_mode_two_times - urllib.error.HTTPError: HTTP Error 500: Internal Server Error FAILED tests/integration/test_requests.py::test_cross_scheme - requests.exceptions.SSLError: HTTPSConnectionPool(host='127.0.0.1', port=36847): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VER... FAILED tests/unit/test_unittest.py::test_get_vcr_with_matcher - assert 0 == 1 FAILED tests/unit/test_unittest.py::test_testcase_playback - AttributeError: 'MyTest' object has no attribute 'response' ======================================================= 28 failed, 394 passed, 2 skipped, 20 xfailed, 43 warnings, 4 errors in 57.66s ======================================================= ```

Full log is in attachment python-vcrpy-pytest.txt

Here is list of installed modules in build env

```console Package Version ----------------------------- --------- aiohttp 3.8.4 aiosignal 1.3.1 alabaster 0.7.13 anyio 3.6.2 asttokens 2.2.1 async-timeout 4.0.2 attrs 23.1.0 Babel 2.12.1 backcall 0.2.0 blinker 1.6.2 boto 2.49.0 boto3 1.26.164 botocore 1.29.164 Brotli 1.0.9 build 0.10.0 certifi 2022.12.7 charset-normalizer 3.1.0 click 8.1.3 decorator 5.1.1 distro 1.8.0 docutils 0.19 exceptiongroup 1.1.1 executing 1.2.0 Flask 2.2.5 frozenlist 1.3.3 gpg 1.20.0 h11 0.14.0 httpbin 0.7.0 httpcore 0.17.2 httplib2 0.21.0 httpx 0.24.1 idna 3.4 imagesize 1.4.1 importlib-metadata 6.7.0 iniconfig 2.0.0 installer 0.7.0 ipython 8.12.0 itsdangerous 2.1.2 jedi 0.18.2 Jinja2 3.1.2 jmespath 1.0.1 libcomps 0.1.19 MarkupSafe 2.1.2 matplotlib-inline 0.1.6 multidict 6.0.4 packaging 23.1 parso 0.8.3 pexpect 4.8.0 pickleshare 0.7.5 pluggy 1.0.0 prompt-toolkit 3.0.38 ptyprocess 0.7.0 pure-eval 0.2.2 Pygments 2.15.1 pyparsing 3.1.0 pyproject_hooks 1.0.0 pytest 7.4.0 pytest-aiohttp 1.0.4 pytest-asyncio 0.21.0 pytest-httpbin 2.0.0 pytest-mock 3.11.1 python-dateutil 2.8.2 pytz 2023.2 PyYAML 6.0 raven 6.10.0 requests 2.31.0 s3transfer 0.6.1 setuptools 68.0.0 six 1.16.0 sniffio 1.3.0 snowballstemmer 2.2.0 Sphinx 6.2.1 sphinxcontrib-applehelp 1.0.4 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 2.0.0 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.5 stack-data 0.6.2 tomli 2.0.1 tornado 6.3.2 traitlets 5.9.0 typing_extensions 4.7.1 urllib3 1.26.15 wcwidth 0.2.6 Werkzeug 2.3.6 wheel 0.40.0 wrapt 1.14.1 yarl 1.9.2 zipp 3.15.0 ```
kloczek commented 1 year ago

Am I passing wrong path to ca bundle? (REQUESTS_CA_BUNDLE=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem) 🤔

kloczek commented 1 year ago

After change to REQUESTS_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt pytest fails the same way.

hartwork commented 1 year ago

@kloczek that question has been answered by https://github.com/kevin1024/vcrpy/issues/645#issuecomment-1561933604 already, I believe.

kloczek commented 1 year ago

@kloczek that question has been answered by #645 (comment) already, I believe.

Only detail which I see in that reply is use Werkzeug==2.0.3 (please correct me if I'm. I'm using 2.3.6. Is this cause of the fails?

If yes: is it any plan to update to be able use latest version of the Werkzeug?

hartwork commented 1 year ago

@kloczek you were asking for REQUESTS_CA_BUNDLE. The answer is:

REQUESTS_CA_BUNDLE=`python -m pytest_httpbin.certs`
hartwork commented 1 year ago

@kloczek regarding Werkzeug please see the discussion above and https://github.com/gentoo/gentoo/blob/5ca1af4f70b22a042102c08858746e174376725a/dev-python/vcrpy/vcrpy-5.0.0.ebuild#L43-L49C3 .

kloczek commented 1 year ago

@kloczek you were asking for REQUESTS_CA_BUNDLE. The answer is:

REQUESTS_CA_BUNDLE=`python -m pytest_httpbin.certs`
[tkloczko@pers-jacek SPECS]$ python3 -m pytest_httpbin.certs
/usr/lib/python3.8/site-packages/pytest_httpbin/certs/cacert.pem

Hmm I must patch that module to use cert file from /ets/pki. After pass correct file

```console + export REQUESTS_CA_BUNDLE=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-5.0.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-vcrpy-5.0.0-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ============================= test session starts ============================== platform linux -- Python 3.8.17, pytest-7.4.0, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0 configfile: pyproject.toml plugins: anyio-3.6.2, asyncio-0.21.0, aiohttp-1.0.4, httpbin-2.0.0, mock-3.11.1 asyncio: mode=strict collected 448 items tests/integration/test_aiohttp.py ..................................EE [ 8%] tests/integration/test_httplib2.py ........ [ 9%] tests/integration/test_requests.py ................ [ 13%] tests/integration/test_urllib2.py .F.F.... [ 15%] tests/integration/test_urllib3.py ....... [ 16%] tests/integration/test_aiohttp.py EE [ 17%] tests/integration/test_httplib2.py ........ [ 18%] tests/integration/test_requests.py pytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run Fpytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F [ 22%] tests/integration/test_urllib2.py .F.F.... [ 24%] tests/integration/test_urllib3.py ....... [ 25%] tests/integration/test_aiohttp.py .. [ 26%] tests/integration/test_basic.py ..... [ 27%] tests/integration/test_boto.py .FFFF [ 28%] tests/integration/test_boto3.py ss [ 29%] tests/integration/test_config.py ........... [ 31%] tests/integration/test_disksaver.py .... [ 32%] tests/integration/test_filter.py .......... [ 34%] tests/integration/test_httplib2.py .. [ 35%] tests/integration/test_httpx.py ........................................ [ 43%] ........ [ 45%] tests/integration/test_ignore.py .... [ 46%] tests/integration/test_matchers.py .............. [ 49%] tests/integration/test_multiple.py . [ 50%] tests/integration/test_proxy.py . [ 50%] tests/integration/test_record_mode.py ....F... [ 52%] tests/integration/test_register_matcher.py .... [ 52%] tests/integration/test_register_persister.py ... [ 53%] tests/integration/test_register_serializer.py . [ 53%] tests/integration/test_request.py .. [ 54%] tests/integration/test_requests.py ..pytest-httpbin server hit an exception serving request: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1131) attempting to ignore so the rest of the tests can run F... [ 55%] tests/integration/test_stubs.py .... [ 56%] tests/integration/test_tornado.py xxxxxxxxxxxxxxxxxxxx [ 60%] tests/integration/test_urllib2.py .. [ 61%] tests/integration/test_urllib3.py .... [ 62%] tests/integration/test_wild.py ...... [ 63%] tests/unit/test_cassettes.py ............................... [ 70%] tests/unit/test_errors.py .... [ 71%] tests/unit/test_filters.py ........................ [ 76%] tests/unit/test_json_serializer.py . [ 77%] tests/unit/test_matchers.py ......................... [ 82%] tests/unit/test_migration.py ... [ 83%] tests/unit/test_persist.py .... [ 84%] tests/unit/test_request.py ................. [ 87%] tests/unit/test_response.py .... [ 88%] tests/unit/test_serialize.py ............... [ 92%] tests/unit/test_stubs.py .. [ 92%] tests/unit/test_unittest.py .......FF [ 94%] tests/unit/test_vcr.py ....................... [ 99%] tests/unit/test_vcr_import.py . [100%] ==================================== ERRORS ==================================== [...] =============================== warnings summary =============================== ../../../../../usr/lib/python3.8/site-packages/boto/plugin.py:40 /usr/lib/python3.8/site-packages/boto/plugin.py:40: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp tests/integration/test_tornado.py:46 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:46: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:58 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:58: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:70 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:70: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:83 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:83: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:96 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:96: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:111 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:111: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:134 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:134: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:149 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:149: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:161 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:161: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:180 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:180: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:205 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:205: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:217 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:217: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:235 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:235: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:251 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:251: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:267 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:267: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:281 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:281: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:288 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:288: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:302 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:302: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:315 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:315: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:330 /home/tkloczko/rpmbuild/BUILD/vcrpy-5.0.0/tests/integration/test_tornado.py:330: PytestUnknownMarkWarning: Unknown pytest.mark.gen_test - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html @pytest.mark.gen_test tests/integration/test_tornado.py:46 tests/integration/test_tornado.py:46: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_status_code will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:58 tests/integration/test_tornado.py:58: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_headers will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:70 tests/integration/test_tornado.py:70: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_body will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:83 tests/integration/test_tornado.py:83: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_effective_url will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:96 tests/integration/test_tornado.py:96: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:111 tests/integration/test_tornado.py:111: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_auth_failed will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:134 tests/integration/test_tornado.py:134: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_post will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:149 tests/integration/test_tornado.py:149: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_redirects will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:161 tests/integration/test_tornado.py:161: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:180 tests/integration/test_tornado.py:180: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_gzip will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:205 tests/integration/test_tornado.py:205: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:217 tests/integration/test_tornado.py:217: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:234 tests/integration/test_tornado.py:234: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:251 tests/integration/test_tornado.py:251: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:266 tests/integration/test_tornado.py:266: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored @pytest.mark.skipif(not supports_raise_error, reason="raise_error unavailable in tornado <= 3") tests/integration/test_tornado.py:281 tests/integration/test_tornado.py:281: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:288 tests/integration/test_tornado.py:288: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:302 tests/integration/test_tornado.py:302: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:315 tests/integration/test_tornado.py:315: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored @pytest.mark.gen_test tests/integration/test_tornado.py:330 tests/integration/test_tornado.py:330: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored @pytest.mark.gen_test tests/integration/test_requests.py::test_effective_url[http] tests/integration/test_requests.py::test_redirects[http] /usr/lib/python3.8/site-packages/werkzeug/datastructures/headers.py:330: DeprecationWarning: Passing bytes as a header value is deprecated and will not be supported in Werkzeug 3.0. _value = _str_header_value(_value) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ SKIPPED [1] tests/integration/test_boto3.py:60: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions SKIPPED [1] tests/integration/test_boto3.py:77: Encrypted Environment Variables from Travis Repository Settings are disabled on PRs from forks. https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions XFAIL tests/integration/test_tornado.py::test_status_code - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_status_code will be ignored XFAIL tests/integration/test_tornado.py::test_headers - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_headers will be ignored XFAIL tests/integration/test_tornado.py::test_body - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_body will be ignored XFAIL tests/integration/test_tornado.py::test_effective_url - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_effective_url will be ignored XFAIL tests/integration/test_tornado.py::test_auth - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth will be ignored XFAIL tests/integration/test_tornado.py::test_auth_failed - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_auth_failed will be ignored XFAIL tests/integration/test_tornado.py::test_post - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_post will be ignored XFAIL tests/integration/test_tornado.py::test_redirects - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_redirects will be ignored XFAIL tests/integration/test_tornado.py::test_cross_scheme - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cross_scheme will be ignored XFAIL tests/integration/test_tornado.py::test_gzip - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_gzip will be ignored XFAIL tests/integration/test_tornado.py::test_https_with_cert_validation_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_https_with_cert_validation_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_unsupported_features_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_unsupported_features_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raises_in_future - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raises_in_future will be ignored XFAIL tests/integration/test_tornado.py::test_cannot_overwrite_cassette_raise_error_disabled - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_cannot_overwrite_cassette_raise_error_disabled will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_with_decorator_use_cassette - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_with_decorator_use_cassette will be ignored XFAIL tests/integration/test_tornado.py::test_tornado_exception_can_be_caught - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_tornado_exception_can_be_caught will be ignored XFAIL tests/integration/test_tornado.py::test_existing_references_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_references_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_existing_instances_get_patched - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_existing_instances_get_patched will be ignored XFAIL tests/integration/test_tornado.py::test_request_time_is_set - reason: [NOTRUN] yield tests were removed in pytest 4.0 - test_request_time_is_set will be ignored ERROR tests/integration/test_aiohttp.py::test_cookies[http] - ssl.SSLError: [... ERROR tests/integration/test_aiohttp.py::test_cookies_redirect[http] - ssl.SS... ERROR tests/integration/test_aiohttp.py::test_cookies[https] - ssl.SSLError: ... ERROR tests/integration/test_aiohttp.py::test_cookies_redirect[https] - ssl.S... FAILED tests/integration/test_urllib2.py::test_random_body[http] - urllib.err... FAILED tests/integration/test_urllib2.py::test_multiple_requests[http] - urll... FAILED tests/integration/test_requests.py::test_status_code[https] - requests... FAILED tests/integration/test_requests.py::test_headers[https] - requests.exc... FAILED tests/integration/test_requests.py::test_body[https] - requests.except... FAILED tests/integration/test_requests.py::test_get_empty_content_type_json[https] FAILED tests/integration/test_requests.py::test_effective_url[https] - reques... FAILED tests/integration/test_requests.py::test_auth[https] - requests.except... FAILED tests/integration/test_requests.py::test_auth_failed[https] - requests... FAILED tests/integration/test_requests.py::test_post[https] - requests.except... FAILED tests/integration/test_requests.py::test_redirects[https] - requests.e... FAILED tests/integration/test_requests.py::test_gzip__decode_compressed_response_false[https] FAILED tests/integration/test_requests.py::test_gzip__decode_compressed_response_true[https] FAILED tests/integration/test_requests.py::test_session_created_before_use_cassette_is_patched[https] FAILED tests/integration/test_requests.py::test_nested_cassettes_with_session_created_before_nesting[https] FAILED tests/integration/test_requests.py::test_post_file[https] - requests.e... FAILED tests/integration/test_requests.py::test_filter_post_params[https] - r... FAILED tests/integration/test_requests.py::test_post_unicode_match_on_body[https] FAILED tests/integration/test_urllib2.py::test_random_body[https] - urllib.er... FAILED tests/integration/test_urllib2.py::test_multiple_requests[https] - url... FAILED tests/integration/test_boto.py::test_boto_without_vcr - boto.exception... FAILED tests/integration/test_boto.py::test_boto_medium_difficulty - boto.exc... FAILED tests/integration/test_boto.py::test_boto_hardcore_mode - boto.excepti... FAILED tests/integration/test_boto.py::test_boto_iam - boto.exception.NoAuthH... FAILED tests/integration/test_record_mode.py::test_new_episodes_record_mode_two_times FAILED tests/integration/test_requests.py::test_cross_scheme - requests.excep... FAILED tests/unit/test_unittest.py::test_get_vcr_with_matcher - assert 0 == 1 FAILED tests/unit/test_unittest.py::test_testcase_playback - AttributeError: ... = 28 failed, 394 passed, 2 skipped, 20 xfailed, 43 warnings, 4 errors in 188.28s (0:03:08) = ```
hartwork commented 1 year ago

Hmm I must patch that module to use cert file from /ets/pki.

@kloczek why do you feel there is need for that? I would expected that the httpbin package would be the place to patch then if these certificates would be a problem (I doubt they are), not VCR.py — am I missing something?

After pass correct file

Part of these errors is cut off and some of the errors seems related to use of the wrong certificates. The instructions at https://github.com/kevin1024/vcrpy/issues/645#issuecomment-1561933604 could hardly be more detailed about how to get the tests to pass. The instructions still work for 5.0.0 for me, I just tried:

cd "$(mktemp -d)"
wget https://github.com/kevin1024/vcrpy/archive/refs/tags/v5.0.0.tar.gz
tar xf v5.0.0.tar.gz 
cd vcrpy-5.0.0/
python3.10 -m venv venv
source venv/bin/activate
pip install -e .
pip install pytest aiohttp boto3 httpx requests pytest-httpbin tornado httplib2 pytest-aiohttp 'urllib3<2' Werkzeug==2.0.3  # NOTE LAST TWO!
REQUESTS_CA_BUNDLE=`python -m pytest_httpbin.certs` pytest -ra  # NOTE REQUESTS_CA_BUNDLE!

For anything that works in this context but not in your packaging context, please track down the difference and cause on your side and create new issues with clear details as I would do for the packages I maintain in Gentoo, so that we can move forward, keep this ticket on topic about werkzeug. Thank you.

kloczek commented 1 year ago

@kloczek why do you feel there is need for that? I would expected that the httpbin package would be the place to patch then if these certificates would be a problem (I doubt they are), not VCR.py — am I missing something?

No one knows why long current version of exact piece of software with own copy of ca-bundle will be used. If exact software is using system wide PKI keys/certs it iw possible to maintain that for ALL software. I'm not going to submit httpbin module patch because exact location could be OS distribution dependent it is matter of those who are maintaining OS distros to sync that location across all packages in distribution. I can only say "thank you" that accidentally I found something which is inconsistent in some resources according to some distro goals. 🙇‍♂️

To be honest I've been thinking from some time to open python RFE to provide for example sys.cert which could solve all that kind dilemmas in single point in python ecosystem with CA path (I think that will try to do that today).

For anything that works in this context but not in your packaging context, please track down the difference and cause on your side and create new issues with clear details as I would do for the packages I maintain in Gentoo, so that we can move forward, keep this ticket on topic about werkzeug. Thank you.

I'm aware that I'm usually using way freshen versions of some modules. All what I'm doing it is reporting that on use those version it is possible to see some error/fails.

In other words If someone is thinking that I'm not asking to fix those issue instantly. God .. NO!!! I'm only flagging some issues in exact env .. only this and nothing more.

Because this ticket still is opened I'm assuming that at least some of those issues are real but maybe time is not the best to address them now.

As long as in python packages on which I'm working there is obligatory enabled test suite execution + some set of external python test units with high probability I can assume all/most of those errors/fails are related to vcrpy test suites and not tested vcrpy code.

[tkloczko@pers-jacek SPECS]$ ls python-*spec | wc -l; grep ^%pytest python-*spec | wc -l
1163
1146

From that point of view this conversation allows me to assign importance of this ticket in relation to whole distribution as non-critical as well because I'm not able to point any other known me issues with vcrpy module when it is used with other modules build/install/test procedures.

And one more time: Thank you very much for provide me some really crucial details which allowed me to improve not only vcrpy module package build/install/testing procedure but as well expose some other issues in other modules 👍

Because I'm working +2.5 years on all those python modules I've learned al lot about that area however because I'm maliny specialist about packaging stuff I'm still opened on any suggestions how can I improve way of reporting python modules issues found during my work.

Sorry for a long comment but I really want to be only well understood ..

kevin1024 commented 1 year ago

I have pushed a new version of the httpbin package that has compatibility with updated versions of werkzeug. We needed to fork the httpbin package due to lack of response from the repo owner.

Does that help with this issue?

hartwork commented 1 year ago

@kevin1024 interesting, thanks! I guess it's a start. Can you point me to the Git repository backing the new 0.10.0 release? I think we should at least update the PyPI link "Homepage" at https://pypi.org/project/httpbin/ to point to the new repository.

kevin1024 commented 1 year ago

Good call! It’s here: https://github.com/psf/httpbin

hartwork commented 1 year ago

@kevin1024 thanks!

I think there is a small mixup in reated commit https://github.com/psf/httpbin/commit/e7d491f907a9cd39031904371f112c7cc1853791: The message says "Update github URL to point to the fork" but the new URL does not point to the Git repository but the PyPI page (where the user is already located). Is there a chance that you could update it once more for https://github.com/psf/httpbin ?

kloczek commented 6 months ago

I just moved to python 3.9 and pytest 8.1.1 and now I have different set of failing units

Here is pytest output: ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib/python3.9/site-packages + /usr/bin/pytest -ra -m 'not network' --ignore tests/test_fio_bounds.py ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.9.18, pytest-8.1.1, pluggy-1.4.0 GDAL: 3.8.4 (3080400) Supported drivers: CSV, DGN, DXF, ESRI Shapefile, ESRIJSON, FlatGeobuf, GML, GPKG, GeoJSON, GeoJSONSeq, Idrisi, MapInfo File, OGR_GMT, OGR_PDS, OpenFileGDB, PCIDSK, S57, SQLite, TopoJSON rootdir: /home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6 configfile: pytest.ini testpaths: tests plugins: forked-1.6.0, localserver-0.8.1, flaky-3.8.1 collected 1836 items / 5 deselected / 1831 selected tests/test__env.py ............... [ 0%] tests/test_bigint.py ... [ 0%] tests/test_binary_field.py . [ 1%] tests/test_bounds.py .....s........s.. [ 1%] tests/test_bytescollection.py ......................................s [ 4%] tests/test_collection.py ............................................................................................................ [ 9%] tests/test_collection_crs.py ...... [ 10%] tests/test_collection_legacy.py .................................. [ 12%] tests/test_compound_crs.py . [ 12%] tests/test_crs.py ................. [ 13%] tests/test_cursor_interruptions.py .................... [ 14%] tests/test_curve_geometries.py .. [ 14%] tests/test_data_paths.py FFFF... [ 14%] tests/test_datetime.py ...sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss. [ 20%] tests/test_driver_options.py . [ 20%] tests/test_drivers.py . [ 20%] tests/test_drvsupport.py sssssssssssssssssssssssssssssssssssssssssssssssss.. [ 22%] tests/test_encoding.py ... [ 23%] tests/test_env.py .......... [ 23%] tests/test_feature.py ......... [ 24%] tests/test_fio_calc.py .FFF [ 24%] tests/test_fio_cat.py FFFFFFFFFF.F.FF [ 25%] tests/test_fio_collect.py FFFFFFFF [ 25%] tests/test_fio_distrib.py FF [ 25%] tests/test_fio_dump.py FFFFFF [ 26%] tests/test_fio_filter.py .F [ 26%] tests/test_fio_info.py ....FF. [ 26%] tests/test_fio_load.py ................ [ 27%] tests/test_fio_ls.py .... [ 27%] tests/test_fio_rm.py ... [ 27%] tests/test_geojson.py ...... [ 28%] tests/test_geometry.py ................ [ 29%] tests/test_geopackage.py ... [ 29%] tests/test_http_session.py .................................... [ 31%] tests/test_integration.py . [ 31%] tests/test_layer.py ......................................................................................................... [ 36%] tests/test_listing.py .................. [ 37%] tests/test_logutils.py .... [ 38%] tests/test_memoryfile.py ...........................................s........ [ 40%] tests/test_meta.py ................................................................................................................... [ 47%] tests/test_model.py ................................... [ 49%] tests/test_multiconxn.py ........ [ 49%] tests/test_non_counting_layer.py FFFFFF [ 49%] tests/test_open.py ... [ 50%] tests/test_profile.py .. [ 50%] tests/test_props.py ...... [ 50%] tests/test_read_drivers.py .. [ 50%] tests/test_remove.py ............ [ 51%] tests/test_revolvingdoor.py . [ 51%] tests/test_rfc3339.py .............. [ 52%] tests/test_rfc64_tin.py .. [ 52%] tests/test_schema.py ........................................................sss........F. [ 55%] tests/test_schema_geom.py ........... [ 56%] tests/test_session.py .............s [ 57%] tests/test_slice.py ................................................................................................................................................................. [ 66%] ..................................................................................................................................................................................... [ 76%] .................................................................................................................. [ 82%] tests/test_subtypes.py .. [ 82%] tests/test_topojson.py . [ 82%] tests/test_transactions.py . [ 82%] tests/test_transform.py .......................... [ 83%] tests/test_unicode.py .....x. [ 84%] tests/test_version.py ..s [ 84%] tests/test_vfs.py ..................................................................................X......................................................X......................... [ 93%] ......X..................................X..................................X.................X....................... [ 99%] tests/test_write.py .... [100%] ========================================================================================= FAILURES ========================================================================================== ___________________________________________________________________________________ test_gdal_data_wheel ____________________________________________________________________________________ @pytest.mark.wheel def test_gdal_data_wheel(): """Get GDAL data path from a wheel""" > assert GDALDataFinder().search() == os.path.join(os.path.dirname(fiona.__file__), 'gdal_data') E AssertionError tests/test_data_paths.py:16: AssertionError ___________________________________________________________________________________ test_proj_data_wheel ____________________________________________________________________________________ @pytest.mark.wheel def test_proj_data_wheel(): """Get GDAL data path from a wheel""" > assert PROJDataFinder().search() == os.path.join(os.path.dirname(fiona.__file__), 'proj_data') E AssertionError tests/test_data_paths.py:22: AssertionError _________________________________________________________________________________ test_env_gdal_data_wheel __________________________________________________________________________________ @pytest.mark.wheel def test_env_gdal_data_wheel(): runner = CliRunner() result = runner.invoke(main_group, ['env', '--gdal-data']) assert result.exit_code == 0 > assert result.output.strip() == os.path.join(os.path.dirname(fiona.__file__), 'gdal_data') E AssertionError tests/test_data_paths.py:30: AssertionError _________________________________________________________________________________ test_env_proj_data_wheel __________________________________________________________________________________ @pytest.mark.wheel def test_env_proj_data_wheel(): runner = CliRunner() result = runner.invoke(main_group, ['env', '--proj-data']) assert result.exit_code == 0 > assert result.output.strip() == os.path.join(os.path.dirname(fiona.__file__), 'proj_data') E AssertionError tests/test_data_paths.py:38: AssertionError _______________________________________________________________________________________ test_calc_seq _______________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' runner = def test_calc_seq(feature_seq, runner): result = runner.invoke(main_group, ['calc', "TEST", "f.properties.AREA / f.properties.PERIMETER"], feature_seq) > assert result.exit_code == 0 E AssertionError tests/test_fio_calc.py:36: AssertionError _______________________________________________________________________________________ test_bool_seq _______________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' runner = def test_bool_seq(feature_seq, runner): result = runner.invoke(main_group, ['calc', "TEST", "f.properties.AREA > 0.015"], feature_seq) > assert result.exit_code == 0 E AssertionError tests/test_fio_calc.py:48: AssertionError __________________________________________________________________________________ test_existing_property ___________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' runner = def test_existing_property(feature_seq, runner): result = runner.invoke( main_group, ["calc", "AREA", "f.properties.AREA * 2"], feature_seq ) > assert result.exit_code == 2 E AssertionError tests/test_fio_calc.py:59: AssertionError _________________________________________________________________________________________ test_one __________________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_one(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke(main_group, ['cat', path_coutwildrnp_shp]) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:12: AssertionError _________________________________________________________________________________________ test_two __________________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_two(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke(main_group, ['cat', path_coutwildrnp_shp, path_coutwildrnp_shp]) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:19: AssertionError _______________________________________________________________________________________ test_bbox_no ________________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_bbox_no(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--bbox', '0,10,80,20'], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:29: AssertionError _______________________________________________________________________________________ test_bbox_yes _______________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_bbox_yes(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--bbox', '-109,37,-107,39'], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:39: AssertionError __________________________________________________________________________________ test_bbox_yes_two_files __________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_bbox_yes_two_files(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, path_coutwildrnp_shp, '--bbox', '-109,37,-107,39'], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:49: AssertionError ____________________________________________________________________________________ test_bbox_json_yes _____________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_bbox_json_yes(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--bbox', '[-109,37,-107,39]'], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:59: AssertionError ______________________________________________________________________________________ test_bbox_where ______________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_bbox_where(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--bbox', '-120,40,-100,50', '--where', "NAME LIKE 'Mount%'"], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:70: AssertionError _______________________________________________________________________________________ test_where_no _______________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_where_no(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--where', "STATE LIKE '%foo%'"], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:80: AssertionError ______________________________________________________________________________________ test_where_yes _______________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_where_yes(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, '--where', "NAME LIKE 'Mount%'"], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:90: AssertionError _________________________________________________________________________________ test_where_yes_two_files __________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_where_yes_two_files(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke( main_group, ['cat', path_coutwildrnp_shp, path_coutwildrnp_shp, '--where', "NAME LIKE 'Mount%'"], catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:101: AssertionError _____________________________________________________________________________________ test_multi_layer ______________________________________________________________________________________ data_dir = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data' def test_multi_layer(data_dir): layerdef = "1:coutwildrnp,1:coutwildrnp" runner = CliRunner() result = runner.invoke( main_group, ['cat', '--layer', layerdef, data_dir]) > assert result.output.count('"Feature"') == 134 E AssertionError tests/test_fio_cat.py:117: AssertionError _________________________________________________________________________________________ test_vfs __________________________________________________________________________________________ path_coutwildrnp_zip = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.zip' def test_vfs(path_coutwildrnp_zip): runner = CliRunner() result = runner.invoke(main_group, [ 'cat', f'zip://{path_coutwildrnp_zip}']) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:131: AssertionError ___________________________________________________________________________________ test_dst_crs_epsg3857 ___________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_dst_crs_epsg3857(path_coutwildrnp_shp): """Confirm fix of issue #952""" runner = CliRunner() result = runner.invoke( main_group, ["cat", "--dst-crs", "EPSG:3857", path_coutwildrnp_shp] ) > assert result.exit_code == 0 E AssertionError tests/test_fio_cat.py:141: AssertionError ______________________________________________________________________________________ test_collect_rs ______________________________________________________________________________________ feature_seq_pp_rs = '\x1e{\n "geometry": {\n "type": "Polygon", \n "coordinates": [\n [\n [\n -111.73527526855...GBUR": "FS", \n "AREA": 0.0104441, \n "STATE_FIPS": "49", \n "WILDRNP020": 336, \n "STATE": "UT"\n }\n}\n' def test_collect_rs(feature_seq_pp_rs): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--src-crs', 'EPSG:3857'], feature_seq_pp_rs, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:20: AssertionError ____________________________________________________________________________________ test_collect_no_rs _____________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_no_rs(feature_seq): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--src-crs', 'EPSG:3857'], feature_seq, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:30: AssertionError ______________________________________________________________________________________ test_collect_ld ______________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_ld(feature_seq): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--with-ld-context', '--add-ld-context-item', 'foo=bar'], feature_seq, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:40: AssertionError _________________________________________________________________________________ test_collect_rec_buffered _________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_rec_buffered(feature_seq): runner = CliRunner() result = runner.invoke(main_group, ['collect', '--record-buffered'], feature_seq) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:48: AssertionError ___________________________________________________________________________________ test_collect_noparse ____________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_noparse(feature_seq): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--no-parse'], feature_seq, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:58: AssertionError _______________________________________________________________________________ test_collect_noparse_records ________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_noparse_records(feature_seq): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--no-parse', '--record-buffered'], feature_seq, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:69: AssertionError ___________________________________________________________________________________ test_collect_src_crs ____________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' def test_collect_src_crs(feature_seq): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--no-parse', '--src-crs', 'epsg:4326'], feature_seq, catch_exceptions=False) > assert result.exit_code == 2 E AssertionError tests/test_fio_collect.py:80: AssertionError __________________________________________________________________________________ test_collect_noparse_rs __________________________________________________________________________________ feature_seq_pp_rs = '\x1e{\n "geometry": {\n "type": "Polygon", \n "coordinates": [\n [\n [\n -111.73527526855...GBUR": "FS", \n "AREA": 0.0104441, \n "STATE_FIPS": "49", \n "WILDRNP020": 336, \n "STATE": "UT"\n }\n}\n' def test_collect_noparse_rs(feature_seq_pp_rs): runner = CliRunner() result = runner.invoke( main_group, ['collect', '--no-parse'], feature_seq_pp_rs, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_collect.py:89: AssertionError _______________________________________________________________________________________ test_distrib ________________________________________________________________________________________ feature_collection_pp = '\x1e{\n "type": "FeatureCollection",\n "features": [\n {\n "geometry": {\n "type": "Polygon",\n ...: 0.0104441,\n "STATE_FIPS": "49",\n "WILDRNP020": 336,\n "STATE": "UT"\n }\n }\n ]\n}\n' def test_distrib(feature_collection_pp): runner = CliRunner() result = runner.invoke(main_group, ['distrib', ], feature_collection_pp) > assert result.exit_code == 0 E AssertionError tests/test_fio_distrib.py:12: AssertionError ____________________________________________________________________________________ test_distrib_no_rs _____________________________________________________________________________________ feature_collection = '{"type": "FeatureCollection", "features": [{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}]}' def test_distrib_no_rs(feature_collection): runner = CliRunner() result = runner.invoke(main_group, ['distrib', ], feature_collection) > assert result.exit_code == 0 E AssertionError tests/test_fio_distrib.py:19: AssertionError _________________________________________________________________________________________ test_dump _________________________________________________________________________________________ path_coutwildrnp_shp = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.shp' def test_dump(path_coutwildrnp_shp): runner = CliRunner() result = runner.invoke(main_group, ['dump', path_coutwildrnp_shp]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:16: AssertionError __________________________________________________________________________________ test_dump_layer[routes] __________________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx', layer = 'routes' @pytest.mark.parametrize("layer", ["routes", "1", "tracks", "track_points"]) def test_dump_layer(path_gpx, layer): runner = CliRunner() result = runner.invoke(main_group, ["dump", path_gpx, "--layer", layer]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:24: AssertionError ____________________________________________________________________________________ test_dump_layer[1] _____________________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx', layer = '1' @pytest.mark.parametrize("layer", ["routes", "1", "tracks", "track_points"]) def test_dump_layer(path_gpx, layer): runner = CliRunner() result = runner.invoke(main_group, ["dump", path_gpx, "--layer", layer]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:24: AssertionError __________________________________________________________________________________ test_dump_layer[tracks] __________________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx', layer = 'tracks' @pytest.mark.parametrize("layer", ["routes", "1", "tracks", "track_points"]) def test_dump_layer(path_gpx, layer): runner = CliRunner() result = runner.invoke(main_group, ["dump", path_gpx, "--layer", layer]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:24: AssertionError _______________________________________________________________________________ test_dump_layer[track_points] _______________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx', layer = 'track_points' @pytest.mark.parametrize("layer", ["routes", "1", "tracks", "track_points"]) def test_dump_layer(path_gpx, layer): runner = CliRunner() result = runner.invoke(main_group, ["dump", path_gpx, "--layer", layer]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:24: AssertionError ____________________________________________________________________________________ test_dump_layer_vfs ____________________________________________________________________________________ path_coutwildrnp_zip = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/coutwildrnp.zip' def test_dump_layer_vfs(path_coutwildrnp_zip): path = f"zip://{path_coutwildrnp_zip}" result = CliRunner().invoke(main_group, ["dump", path]) > assert result.exit_code == 0 E AssertionError tests/test_fio_dump.py:31: AssertionError _________________________________________________________________________________________ test_seq __________________________________________________________________________________________ feature_seq = '{"geometry": {"type": "Polygon", "coordinates": [[[-111.73527526855469, 41.995094299316406], [-111.65931701660156, 41...ame=Wellsville%20Mountain", "AGBUR": "FS", "AREA": 0.0104441, "STATE_FIPS": "49", "WILDRNP020": 336, "STATE": "UT"}}\n' runner = def test_seq(feature_seq, runner): result = runner.invoke(main_group, ['filter', "f.properties.AREA > 0.01"], feature_seq, catch_exceptions=False) > assert result.exit_code == 0 E AssertionError tests/test_fio_filter.py:17: AssertionError ____________________________________________________________________________________ test_info_no_count _____________________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' def test_info_no_count(path_gpx): """Make sure we can still get a `$ fio info` report on datasources that do not support feature counting, AKA `len(collection)`. """ runner = CliRunner() result = runner.invoke(main_group, ['info', path_gpx]) > assert result.exit_code == 0 E AssertionError tests/test_fio_info.py:65: AssertionError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ______________________________________________________________________________________ test_info_layer ______________________________________________________________________________________ path_gpx = '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' def test_info_layer(path_gpx): for layer in ('routes', '1'): runner = CliRunner() result = runner.invoke(main_group, [ 'info', path_gpx, '--layer', layer]) > assert result.exit_code == 0 E AssertionError tests/test_fio_info.py:78: AssertionError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ___________________________________________________________________ TestNonCountingLayer.test_fail_getitem_negative_index ___________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. _____________________________________________________________________________ TestNonCountingLayer.test_getitem _____________________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. ____________________________________________________________________________ TestNonCountingLayer.test_len_fail _____________________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. ______________________________________________________________________________ TestNonCountingLayer.test_list _______________________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. ______________________________________________________________________________ TestNonCountingLayer.test_slice ______________________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. ____________________________________________________________________ TestNonCountingLayer.test_warn_slice_negative_index ____________________________________________________________________ > cogr_ds = exc_wrap_pointer( fiona/ogrext.pyx:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise exc E fiona._err.CPLE_OpenFailedError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/_err.pyx:291: CPLE_OpenFailedError During handling of the above exception, another exception occurred: self = def setUp(self): > self.c = fiona.open(self.path_gpx, "r", layer="track_points") tests/test_non_counting_layer.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:292: in open colxn = Collection( ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:243: in __init__ self.session.start(self, **kwargs) fiona/ogrext.pyx:588: in fiona.ogrext.Session.start self.cogr_ds = gdal_open_vector(path_c, 0, drivers, kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > raise DriverError(str(exc)) E fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. fiona/ogrext.pyx:143: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ERROR fiona._env:collection.py:243 `/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. ___________________________________________________________________________ test_schema_default_fields_wrong_type ___________________________________________________________________________ tmpdir = local('/tmp/pytest-of-tkloczko/pytest-217/test_schema_default_fields_wro0') def test_schema_default_fields_wrong_type(tmpdir): """Test for SchemaError if a default field is specified with a different type""" name = str(tmpdir.join("test.gpx")) schema = { "properties": OrderedDict([("ele", "str"), ("time", "datetime")]), "geometry": "Point", } with pytest.raises(SchemaError): > with fiona.open(name, "w", driver="GPX", schema=schema) as c: tests/test_schema.py:412: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/env.py:457: in wrapper return f(*args, **kwds) ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/__init__.py:303: in open colxn = Collection( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = path = UnparsedPath(path='/tmp/pytest-of-tkloczko/pytest-217/test_schema_default_fields_wro0/test.gpx'), mode = 'w', driver = 'GPX' schema = {'geometry': 'Point', 'properties': OrderedDict([('ele', 'str'), ('time', 'datetime')])}, crs = None, encoding = None, layer = None, vsi = None, archive = None enabled_drivers = None, crs_wkt = None, ignore_fields = None, ignore_geometry = False, include_fields = None, wkt_version = None, allow_unsupported_drivers = False, kwargs = {} def __init__( self, path, mode="r", driver=None, schema=None, crs=None, encoding=None, layer=None, vsi=None, archive=None, enabled_drivers=None, crs_wkt=None, ignore_fields=None, ignore_geometry=False, include_fields=None, wkt_version=None, allow_unsupported_drivers=False, **kwargs ): """The required ``path`` is the absolute or relative path to a file, such as '/data/test_uk.shp'. In ``mode`` 'r', data can be read only. In ``mode`` 'a', data can be appended to a file. In ``mode`` 'w', data overwrites the existing contents of a file. In ``mode`` 'w', an OGR ``driver`` name and a ``schema`` are required. A Proj4 ``crs`` string is recommended. If both ``crs`` and ``crs_wkt`` keyword arguments are passed, the latter will trump the former. In 'w' mode, kwargs will be mapped to OGR layer creation options. """ self._closed = True if not isinstance(path, (str, Path)): raise TypeError("invalid path: %r" % path) if not isinstance(mode, str) or mode not in ("r", "w", "a"): raise TypeError("invalid mode: %r" % mode) if driver and not isinstance(driver, str): raise TypeError("invalid driver: %r" % driver) if schema and not hasattr(schema, "get"): raise TypeError("invalid schema: %r" % schema) # Rasterio's CRS is compatible with Fiona. This class # constructor only requires that the crs value have a to_wkt() # method. if ( crs and not isinstance(crs, compat.DICT_TYPES + (str, CRS)) and not (hasattr(crs, "to_wkt") and callable(crs.to_wkt)) ): raise TypeError("invalid crs: %r" % crs) if crs_wkt and not isinstance(crs_wkt, str): raise TypeError("invalid crs_wkt: %r" % crs_wkt) if encoding and not isinstance(encoding, str): raise TypeError("invalid encoding: %r" % encoding) if layer and not isinstance(layer, (str, int)): raise TypeError("invalid name: %r" % layer) if vsi: if not isinstance(vsi, str) or not vfs.valid_vsi(vsi): raise TypeError("invalid vsi: %r" % vsi) if archive and not isinstance(archive, str): raise TypeError("invalid archive: %r" % archive) if ignore_fields is not None and include_fields is not None: raise ValueError("Cannot specify both 'ignore_fields' and 'include_fields'") if mode == "w" and driver is None: driver = driver_from_extension(path) # Check GDAL version against drivers if ( driver in driver_mode_mingdal[mode] and get_gdal_version_tuple() < driver_mode_mingdal[mode][driver] ): min_gdal_version = ".".join( list(map(str, driver_mode_mingdal[mode][driver])) ) raise DriverError( "{driver} driver requires at least GDAL {min_gdal_version} for mode '{mode}', " "Fiona was compiled against: {gdal}".format( driver=driver, mode=mode, min_gdal_version=min_gdal_version, gdal=get_gdal_release_name(), ) ) self.session = None self.iterator = None self._len = 0 self._bounds = None self._driver = None self._schema = None self._crs = None self._crs_wkt = None self.enabled_drivers = enabled_drivers self.include_fields = include_fields self.ignore_fields = ignore_fields self.ignore_geometry = bool(ignore_geometry) self._allow_unsupported_drivers = allow_unsupported_drivers self._env = None self._closed = True # Check GDAL version against drivers if ( driver in driver_mode_mingdal[mode] and get_gdal_version_tuple() < driver_mode_mingdal[mode][driver] ): min_gdal_version = ".".join( list(map(str, driver_mode_mingdal[mode][driver])) ) raise DriverError( "{driver} driver requires at least GDAL {min_gdal_version} for mode '{mode}', " "Fiona was compiled against: {gdal}".format( driver=driver, mode=mode, min_gdal_version=min_gdal_version, gdal=get_gdal_release_name(), ) ) if vsi: self.path = vfs.vsi_path(path, vsi, archive) path = parse_path(self.path) else: path = parse_path(path) self.path = vsi_path(path) if mode == "w": if layer and not isinstance(layer, str): raise ValueError("in 'w' mode, layer names must be strings") if driver == "GeoJSON": if layer is not None: raise ValueError("the GeoJSON format does not have layers") self.name = "OgrGeoJSON" # TODO: raise ValueError as above for other single-layer formats. else: self.name = layer or os.path.basename(os.path.splitext(path.path)[0]) else: if layer in (0, None): self.name = 0 else: self.name = layer or os.path.basename(os.path.splitext(path)[0]) self.mode = mode if self.mode == "w": if driver == "Shapefile": driver = "ESRI Shapefile" if not driver: raise DriverError("no driver") if not allow_unsupported_drivers: if driver not in supported_drivers: > raise DriverError("unsupported driver: %r" % driver) E fiona.errors.DriverError: unsupported driver: 'GPX' ../../BUILDROOT/python-fiona-1.9.6-2.fc36.x86_64/usr/lib64/python3.9/site-packages/fiona/collection.py:211: DriverError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ========================================================================================= XFAILURES ========================================================================================= ________________________________________________________________________ TestUnicodeStringField.test_write_mismatch _________________________________________________________________________ self = @pytest.mark.xfail(reason="OGR silently fails to convert strings") def test_write_mismatch(self): """TOFIX: OGR silently fails to convert strings""" # Details: # # If we tell OGR that we want a latin-1 encoded output file and # give it a feature with a unicode property that can't be converted # to latin-1, no error is raised and OGR just writes the utf-8 # encoded bytes to the output file. # # This might be shapefile specific. # # Consequences: no error on write, but there will be an error # on reading the data and expecting latin-1. schema = {"geometry": "Point", "properties": {"label": "str", "num": "int"}} with fiona.open( os.path.join(self.tempdir, "test-write-fail.shp"), "w", driver="ESRI Shapefile", schema=schema, encoding="latin1", ) as c: c.writerecords( [ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"label": "徐汇区", "num": 0}, } ] ) with fiona.open(os.path.join(self.tempdir), encoding="latin1") as c: f = next(iter(c)) # Next assert fails. > assert f.properties["label"] == "徐汇区" E AssertionError tests/test_unicode.py:86: AssertionError ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:246 File doesn't exist. Creating a new one... DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:246 Created layer test-write-fail DEBUG fiona.ogrext:collection.py:246 Writing started DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:558 Transaction supported: 0 WARNING fiona._env:collection.py:558 One or several characters couldn't be converted correctly from UTF-8 to LATIN1. This warning will not be emitted anymore DEBUG fiona.ogrext:collection.py:667 Flushed data source cache DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 1 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 1 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_unicode.py:84 Next index: 1 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ========================================================================================== XPASSES ========================================================================================== ______________________________________________________________________________ VsiReadingTest.test_filter_vsi _______________________________________________________________________________ ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 20 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 21 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 67 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ______________________________________________________________________________ TestVsiReading.test_filter_vsi _______________________________________________________________________________ ------------------------------------------------------------------------------------ Captured log setup ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 20 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 21 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 67 ----------------------------------------------------------------------------------- Captured log teardown ----------------------------------------------------------------------------------- DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ______________________________________________________________________________ TestZipReading.test_filter_vsi _______________________________________________________________________________ ------------------------------------------------------------------------------------ Captured log setup ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 20 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.ogrext:test_vfs.py:62 Next index: 21 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 67 ----------------------------------------------------------------------------------- Captured log teardown ----------------------------------------------------------------------------------- DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ___________________________________________________________________________ TestZipArchiveReading.test_filter_vsi ___________________________________________________________________________ ------------------------------------------------------------------------------------ Captured log setup ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 20 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.ogrext:test_vfs.py:62 Next index: 21 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 67 ----------------------------------------------------------------------------------- Captured log teardown ----------------------------------------------------------------------------------- DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session _______________________________________________________________________ TestZipArchiveReadingAbsPath.test_filter_vsi ________________________________________________________________________ ------------------------------------------------------------------------------------ Captured log setup ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 20 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 21 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session DEBUG fiona.ogrext:test_vfs.py:62 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:62 Next index: 67 ----------------------------------------------------------------------------------- Captured log teardown ----------------------------------------------------------------------------------- DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ___________________________________________________________________________ TarArchiveReadingTest.test_filter_vsi ___________________________________________________________________________ ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG fiona._env:env.py:315 GDAL data files are available at built-in paths. DEBUG fiona._env:env.py:315 PROJ data files are available at built-in paths. DEBUG fiona.ogrext:collection.py:453 OLC_FASTSETNEXTBYINDEX: 0 DEBUG fiona.ogrext:collection.py:453 OLC_FASTFEATURECOUNT: 0 DEBUG fiona.ogrext:collection.py:453 Next index: 0 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 1 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 2 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 3 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 4 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 5 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 6 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 7 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 8 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 9 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 10 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 11 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 12 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 13 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 14 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 15 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 16 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 17 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 18 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 19 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 20 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 21 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 22 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 23 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 24 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 25 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 26 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 27 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 28 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 29 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 30 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 31 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 32 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 33 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 34 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 35 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 36 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 37 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 38 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 39 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 40 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 41 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 42 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 43 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 44 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 45 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 46 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 47 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 48 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 49 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 50 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 51 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 52 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 53 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 54 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 55 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 56 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 57 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 58 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 59 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 60 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 61 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 62 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 63 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 64 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 65 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 66 DEBUG fiona.ogrext:test_vfs.py:43 Next index: 67 DEBUG fiona.collection:collection.py:678 Flushed buffer DEBUG fiona.collection:collection.py:680 Stopped session ================================================================================== short test summary info ================================================================================== SKIPPED [2] tests/test_bounds.py:59: Driver does not support point geometries SKIPPED [1] tests/test_bytescollection.py:216: Changed behavior with gdal 2.3, possibly related to RFC 70:Guessing output format from output file name extension for utilities SKIPPED [21] tests/test_datetime.py:401: use '-m gdal' to run GDAL related tests. SKIPPED [9] tests/test_datetime.py:474: use '-m gdal' to run GDAL related tests. SKIPPED [30] tests/test_datetime.py:691: use '-m gdal' to run GDAL related tests. SKIPPED [12] tests/test_datetime.py:731: use '-m gdal' to run GDAL related tests. SKIPPED [12] tests/test_datetime.py:745: use '-m gdal' to run GDAL related tests. SKIPPED [9] tests/test_datetime.py:807: use '-m gdal' to run GDAL related tests. SKIPPED [4] tests/test_drvsupport.py:18: use '-m gdal' to run GDAL related tests. SKIPPED [14] tests/test_drvsupport.py:26: use '-m gdal' to run GDAL related tests. SKIPPED [5] tests/test_drvsupport.py:67: use '-m gdal' to run GDAL related tests. SKIPPED [11] tests/test_drvsupport.py:99: use '-m gdal' to run GDAL related tests. SKIPPED [7] tests/test_drvsupport.py:157: use '-m gdal' to run GDAL related tests. SKIPPED [5] tests/test_drvsupport.py:219: use '-m gdal' to run GDAL related tests. SKIPPED [3] tests/test_drvsupport.py:243: use '-m gdal' to run GDAL related tests. SKIPPED [1] tests/test_memoryfile.py:297: FileGDB driver not available SKIPPED [2] tests/test_schema.py:225: Only relevant for GDAL 1.x SKIPPED [1] tests/test_schema.py:241: Only relevant for GDAL 1.x SKIPPED [1] tests/test_session.py:65: Only raises on GDAL 1.x SKIPPED [1] tests/test_version.py:31: Requires travis CI environment XFAIL tests/test_unicode.py::TestUnicodeStringField::test_write_mismatch - OGR silently fails to convert strings XPASS tests/test_vfs.py::VsiReadingTest::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. XPASS tests/test_vfs.py::TestVsiReading::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. XPASS tests/test_vfs.py::TestZipReading::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. XPASS tests/test_vfs.py::TestZipArchiveReading::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. XPASS tests/test_vfs.py::TestZipArchiveReadingAbsPath::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. XPASS tests/test_vfs.py::TarArchiveReadingTest::test_filter_vsi - The number of features present in the archive differs based on the GDAL version. FAILED tests/test_data_paths.py::test_gdal_data_wheel - AssertionError FAILED tests/test_data_paths.py::test_proj_data_wheel - AssertionError FAILED tests/test_data_paths.py::test_env_gdal_data_wheel - AssertionError FAILED tests/test_data_paths.py::test_env_proj_data_wheel - AssertionError FAILED tests/test_fio_calc.py::test_calc_seq - AssertionError FAILED tests/test_fio_calc.py::test_bool_seq - AssertionError FAILED tests/test_fio_calc.py::test_existing_property - AssertionError FAILED tests/test_fio_cat.py::test_one - AssertionError FAILED tests/test_fio_cat.py::test_two - AssertionError FAILED tests/test_fio_cat.py::test_bbox_no - AssertionError FAILED tests/test_fio_cat.py::test_bbox_yes - AssertionError FAILED tests/test_fio_cat.py::test_bbox_yes_two_files - AssertionError FAILED tests/test_fio_cat.py::test_bbox_json_yes - AssertionError FAILED tests/test_fio_cat.py::test_bbox_where - AssertionError FAILED tests/test_fio_cat.py::test_where_no - AssertionError FAILED tests/test_fio_cat.py::test_where_yes - AssertionError FAILED tests/test_fio_cat.py::test_where_yes_two_files - AssertionError FAILED tests/test_fio_cat.py::test_multi_layer - AssertionError FAILED tests/test_fio_cat.py::test_vfs - AssertionError FAILED tests/test_fio_cat.py::test_dst_crs_epsg3857 - AssertionError FAILED tests/test_fio_collect.py::test_collect_rs - AssertionError FAILED tests/test_fio_collect.py::test_collect_no_rs - AssertionError FAILED tests/test_fio_collect.py::test_collect_ld - AssertionError FAILED tests/test_fio_collect.py::test_collect_rec_buffered - AssertionError FAILED tests/test_fio_collect.py::test_collect_noparse - AssertionError FAILED tests/test_fio_collect.py::test_collect_noparse_records - AssertionError FAILED tests/test_fio_collect.py::test_collect_src_crs - AssertionError FAILED tests/test_fio_collect.py::test_collect_noparse_rs - AssertionError FAILED tests/test_fio_distrib.py::test_distrib - AssertionError FAILED tests/test_fio_distrib.py::test_distrib_no_rs - AssertionError FAILED tests/test_fio_dump.py::test_dump - AssertionError FAILED tests/test_fio_dump.py::test_dump_layer[routes] - AssertionError FAILED tests/test_fio_dump.py::test_dump_layer[1] - AssertionError FAILED tests/test_fio_dump.py::test_dump_layer[tracks] - AssertionError FAILED tests/test_fio_dump.py::test_dump_layer[track_points] - AssertionError FAILED tests/test_fio_dump.py::test_dump_layer_vfs - AssertionError FAILED tests/test_fio_filter.py::test_seq - AssertionError FAILED tests/test_fio_info.py::test_info_no_count - AssertionError FAILED tests/test_fio_info.py::test_info_layer - AssertionError FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_fail_getitem_negative_index - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_getitem - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_len_fail - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_list - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_slice - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_non_counting_layer.py::TestNonCountingLayer::test_warn_slice_negative_index - fiona.errors.DriverError: '/home/tkloczko/rpmbuild/BUILD/Fiona-1.9.6/tests/data/test_gpx.gpx' not recognized as a supported file format. FAILED tests/test_schema.py::test_schema_default_fields_wrong_type - fiona.errors.DriverError: unsupported driver: 'GPX' ===================================================== 46 failed, 1627 passed, 151 skipped, 5 deselected, 1 xfailed, 6 xpassed in 18.72s ===================================================== ```