Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
kloczek opened this issue May 7, 2022 · 29 comments

Comments

@kloczek
Copy link

kloczek commented May 7, 2022

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.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix>
  • run pytest with PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
@kloczek
Copy link
Author

kloczek commented May 7, 2022

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

+ 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 = <boto.pyami.config.Config object at 0x7fbb7e2119d0>, provider = <boto.provider.Provider object at 0x7fbb7d953280>
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: <urlopen error timed out>
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 = <boto.pyami.config.Config object at 0x7fbb7e2119d0>, provider = <boto.provider.Provider object at 0x7fbb7cc27310>
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: <urlopen error timed out>
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 = <boto.pyami.config.Config object at 0x7fbb7e2119d0>, provider = <boto.provider.Provider object at 0x7fbb7d7ebc40>
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 = <boto.pyami.config.Config object at 0x7fbb7e2119d0>, provider = <boto.provider.Provider object at 0x7fbb7cd1c4c0>
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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fbb7cd14850>, 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] <https://github.com/urllib3/urllib3/issues/651>
        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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fbb7cd14850>
conn = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-48/test_status_code_https_0/atts.yaml object at 0x7fbb7cd14460>, 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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fbb7cd14850>
conn = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-48/test_status_code_https_0/atts.yaml object at 0x7fbb7cd14460>

    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 = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-48/test_status_code_https_0/atts.yaml object at 0x7fbb7cd14460>, args = (), kwargs = {}
force_reset = <function force_reset at 0x7fbb7dfadee0>

    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 = <urllib3.connection.HTTPSConnection object at 0x7fbb7cd11250>

    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 = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, 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 = <ssl.SSLContext object at 0x7fbb7cd0c1c0>
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 = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, ssl_context = <ssl.SSLContext object at 0x7fbb7cd0c1c0>
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 = <ssl.SSLContext object at 0x7fbb7cd0c1c0>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>
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 = <class 'ssl.SSLSocket'>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, server_side = False
do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = <ssl.SSLContext object at 0x7fbb7cd0c1c0>, 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 = <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, 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 = <requests.adapters.HTTPAdapter object at 0x7fbb7cd38970>, request = <PreparedRequest [GET]>, 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 <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) <timeouts>` 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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fbb7cd14850>, 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] <https://github.com/urllib3/urllib3/issues/651>
        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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fbb7cd14850>, _stacktrace = <traceback object at 0x7fbb7cd1fd40>

    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 = <pytest_httpbin.serve.SecureServer object at 0x7fbb7d876f40>, 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 = <requests.adapters.HTTPAdapter object at 0x7fbb7cd38970>, request = <PreparedRequest [GET]>, 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 <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) <timeouts>` 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: <Response [301 Moved Permanently]>
FAILED tests/integration/test_httpx.py::test_relative_redirects[DoAsyncRequest-https] - AssertionError: <Response [301 Moved Permanently]>
FAILED tests/integration/test_httpx.py::test_relative_redirects[DoSyncRequest-http] - AssertionError: <Response [301 Moved Permanently]>
FAILED tests/integration/test_httpx.py::test_relative_redirects[DoSyncRequest-https] - AssertionError: <Response [301 Moved Permanently]>
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
Copy link

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

@kloczek
Copy link
Author

kloczek commented Jun 29, 2022

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

+ 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 = <boto.pyami.config.Config object at 0x7f8533abbb50>, provider = <boto.provider.Provider object at 0x7f8532fc0fd0>
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: <urlopen error timed out>
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 = <boto.pyami.config.Config object at 0x7f8533abbb50>, provider = <boto.provider.Provider object at 0x7f8532539a90>
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: <urlopen error timed out>
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 = <boto.pyami.config.Config object at 0x7f8533abbb50>, provider = <boto.provider.Provider object at 0x7f8532595b20>
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 = <boto.pyami.config.Config object at 0x7f8533abbb50>, provider = <boto.provider.Provider object at 0x7f85323f36d0>
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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f853243ac70>, 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] <https://github.com/urllib3/urllib3/issues/651>
        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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f853243ac70>
conn = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-203/test_status_code_https_0/atts.yaml object at 0x7f85325b21f0>, 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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f853243ac70>
conn = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-203/test_status_code_https_0/atts.yaml object at 0x7f85325b21f0>

    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 = <vcr.patch.VCRRequestsHTTPSConnection/tmp/pytest-of-tkloczko/pytest-203/test_status_code_https_0/atts.yaml object at 0x7f85325b21f0>, args = (), kwargs = {}
force_reset = <function force_reset at 0x7f85338713a0>

    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 = <urllib3.connection.HTTPSConnection object at 0x7f85325b2d90>

    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 = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, 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 = <ssl.SSLContext object at 0x7f853259c3c0>
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 = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, ssl_context = <ssl.SSLContext object at 0x7f853259c3c0>
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 = <ssl.SSLContext object at 0x7f853259c3c0>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>
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 = <class 'ssl.SSLSocket'>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, server_side = False
do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = <ssl.SSLContext object at 0x7f853259c3c0>, 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 = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, ssl_context = <ssl.SSLContext object at 0x7f85318f9340>
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 = <ssl.SSLContext object at 0x7f85318f9340>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>
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 = <class 'ssl.SSLSocket'>, sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, server_side = False
do_handshake_on_connect = True, suppress_ragged_eofs = True, server_hostname = None, context = <ssl.SSLContext object at 0x7f85318f9340>, 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 = <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>, 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 = <requests.adapters.HTTPAdapter object at 0x7f8531a6d340>, request = <PreparedRequest [GET]>, 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 <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) <timeouts>` 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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f8531a6d790>, 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] <https://github.com/urllib3/urllib3/issues/651>
        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 = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f8531a6d790>, _stacktrace = <traceback object at 0x7f8531849680>

    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 = <pytest_httpbin.serve.SecureServer object at 0x7f8533058460>
httpbin = <pytest_httpbin.serve.Server object at 0x7f8532f7ed30>

    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 = <requests.adapters.HTTPAdapter object at 0x7f8531a6d340>, request = <PreparedRequest [GET]>, 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 <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) <timeouts>` 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
Copy link
Author

kloczek commented Aug 31, 2022

Just tested 4.2.1.
Only will quote summary

============================================================================= 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
Copy link
Author

kloczek commented May 24, 2023

gentle ping .. 🤔

@kloczek
Copy link
Author

kloczek commented May 24, 2023

Summary from testing latest 4.3.0

===================================================================================== 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
Copy link
Collaborator

hartwork commented May 24, 2023

@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 🙏

@kloczek
Copy link
Author

kloczek commented May 24, 2023

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
Copy link
Author

kloczek commented May 24, 2023

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
Copy link
Collaborator

hartwork commented May 25, 2023

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 (postmanlabs/httpbin#673) which is pulled in by pytest-httpbin (kevin1024/pytest-httpbin#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

@hartwork hartwork changed the title 4.1.1: pytest is failing Tests failing with Werkzeug >=2.1.0 / remove all use of pytest-httpbin (and httpbin.org) from test suite? May 25, 2023
@kevin1024
Copy link
Owner

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

@kloczek
Copy link
Author

kloczek commented May 25, 2023

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
Copy link
Author

kloczek commented May 25, 2023

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
Copy link
Collaborator

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! 👍 👍

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 except there was zero python -m pytest in here above before you brought it up. Zero, I checked.

@kloczek
Copy link
Author

kloczek commented Jul 4, 2023

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

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

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
Copy link
Author

kloczek commented Jul 4, 2023

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

@kloczek
Copy link
Author

kloczek commented Jul 4, 2023

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

@hartwork
Copy link
Collaborator

hartwork commented Jul 4, 2023

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

@kloczek
Copy link
Author

kloczek commented Jul 4, 2023

@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
Copy link
Collaborator

hartwork commented Jul 4, 2023

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

REQUESTS_CA_BUNDLE=`python -m pytest_httpbin.certs`

@hartwork
Copy link
Collaborator

hartwork commented Jul 4, 2023

@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
Copy link
Author

kloczek commented Jul 4, 2023

@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

+ 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
Copy link
Collaborator

hartwork commented Jul 4, 2023

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 #645 (comment) 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
Copy link
Author

kloczek commented Jul 4, 2023

@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
Copy link
Owner

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
Copy link
Collaborator

@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
Copy link
Owner

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

@hartwork
Copy link
Collaborator

@kevin1024 thanks!

I think there is a small mixup in reated commit psf/httpbin@e7d491f: 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
Copy link
Author

kloczek commented Mar 29, 2024

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:
+ 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 = <click.testing.CliRunner object at 0x7f12a84587c0>

    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 = <click.testing.CliRunner object at 0x7f12a84587c0>

    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 = <click.testing.CliRunner object at 0x7f12a84587c0>

    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 = <click.testing.CliRunner object at 0x7f12a84587c0>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_fail_getitem_negative_index>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_getitem>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_len_fail>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_list>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_slice>

    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 = <tests.test_non_counting_layer.TestNonCountingLayer testMethod=test_warn_slice_negative_index>

    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 = <closed Collection '/tmp/pytest-of-tkloczko/pytest-217/test_schema_default_fields_wro0/test.gpx:test', mode 'w' at 0x7f12a7f95d90>
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 = <tests.test_unicode.TestUnicodeStringField testMethod=test_write_mismatch>

    @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 =====================================================

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants