Skip to content

KeyError: 'follow_redirects' #945

@erikcw

Description

@erikcw

I'm trying to use vcrpy with httpdbg to help me trace down which tests are still talking to 3rd party services despite VCR cassettes being present.

This had been working well until recently. Now it's crashing with the following KeyError. Would it make sense to change this line to HTTPX_REDIRECT_PARAM = _httpx_signature.parameters.get("follow_redirects") or similar? From what I can see HTTPX_REDIRECT_PARAM isn't actually being used anywhere, maybe it could be removed entirely?

pyhttpdbg --script manage.py test 
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
  httpdbg - HTTP(S) requests available at http://localhost:4909/
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
Found 1 test(s).
Creating test database for alias 'default'...
Traceback (most recent call last):
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/stubs/httpx_stubs.py", line 17, in <module>
    HTTPX_REDIRECT_PARAM = _httpx_signature.parameters["follow_redirects"]
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
KeyError: 'follow_redirects'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/httpdbg/mode_script.py", line 22, in run_script
    runpy.run_path(argv[0], run_name="__main__")
  File "<frozen runpy>", line 286, in run_path
  File "<frozen runpy>", line 98, in _run_module_code
  File "<frozen runpy>", line 88, in _run_code
  File "manage.py", line 23, in <module>
    main()
  File "manage.py", line 19, in main
    execute_from_command_line(sys.argv)
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/commands/test.py", line 24, in run_from_argv
    super().run_from_argv(argv)
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 416, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 460, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/commands/test.py", line 63, in handle
    failures = test_runner.run_tests(test_labels)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/test/runner.py", line 1092, in run_tests
    old_config = self.setup_databases(
                 ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/test/runner.py", line 990, in setup_databases
    return _setup_databases(
           ^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/test/utils.py", line 204, in setup_databases
    connection.creation.create_test_db(
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/db/backends/base/creation.py", line 78, in create_test_db
    call_command(
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 460, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 107, in wrapper
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/commands/migrate.py", line 380, in handle
    emit_post_migrate_signal(
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/core/management/sql.py", line 52, in emit_post_migrate_signal
    models.signals.post_migrate.send(
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/django/dispatch/dispatcher.py", line 189, in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/payments/apps.py", line 11, in populate_stripe_models
    tests_utils.setup_test_payments()
  File "/Users/erik/DropboxMaestral/home/git/backend/payments/tests/utils.py", line 359, in setup_test_payments
    _setup_test_stripe()
  File "/Users/erik/DropboxMaestral/home/git/backend/payments/tests/utils.py", line 396, in _setup_test_stripe
    with setup_vcr.use_cassette(
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/cassette.py", line 84, in __enter__
    return next(self.__finish)
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/cassette.py", line 58, in _patch_generator
    for patcher in CassettePatcherBuilder(cassette).build():
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/patch.py", line 129, in _build_patchers_from_mock_triples
    for args in mock_triples:
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/patch.py", line 313, in _httpx
    from .stubs.httpx_stubs import async_vcr_send, sync_vcr_send
  File "/Users/erik/DropboxMaestral/home/git/backend/.venv/lib/python3.12/site-packages/vcr/stubs/httpx_stubs.py", line 19, in <module>
    HTTPX_REDIRECT_PARAM = _httpx_signature.parameters["allow_redirects"]
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'allow_redirects'
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
  httpdbg - HTTP(S) requests available at http://localhost:4909/
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
Waiting until all the requests have been loaded in the web interface.
Press Ctrl+C to quit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions