Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

test_lazy_choices_help fails on Python 3.14

Aperta
#1,641 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
52/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
python
Ambito
cli, testing-qa

Direzione di ricerca

Inizia da tests/test_cli_utils.py::test_lazy_choices_help e riproduci il fallimento usando Python 3.14 e i comandi uv indicati. Traccia l’inizializzazione di ArgumentParser e LazyChoices per scoprire perché getter viene chiamato troppo presto, quindi fai passare il test senza modificarne il comportamento lazy previsto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug new

Checklist

  • I've searched for similar issues.
  • I'm using the latest version of HTTPie (from git HEAD)

Minimal reproduction code and steps

This is with Python 3.14.0b3 and b4 alike.

uv venv --python=python3.14 venv
. venv/bin/activate
uv pip install '.[dev]'
uv pip install -U httpbin flask werkzeug  # to support Python 3.14
python -m pytest --verbose -k test_lazy_choices_help

Current result

============================= test session starts ==============================
platform linux -- Python 3.14.0b3, pytest-8.4.1, pluggy-1.6.0 -- .../httpie/venv/bin/python
cachedir: .pytest_cache
rootdir: .../httpie
configfile: pytest.ini
plugins: mock-3.14.1, httpbin-2.1.0, cov-6.2.1
collecting ... collected 1028 items / 1027 deselected / 1 selected

tests/test_cli_utils.py::test_lazy_choices_help FAILED                   [100%]

=================================== FAILURES ===================================
____________________________ test_lazy_choices_help ____________________________

self = <Mock name='mock.getter' id='140611738470112'>

    def assert_not_called(self):
        """assert that the mock was never called.
        """
        if self.call_count != 0:
            msg = ("Expected '%s' to not have been called. Called %s times.%s"
                   % (self._mock_name or 'mock',
                      self.call_count,
                      self._calls_repr()))
>           raise AssertionError(msg)
E           AssertionError: Expected 'getter' to not have been called. Called 1 times.
E           Calls: [call()].

/usr/lib64/python3.14/unittest/mock.py:946: AssertionError

During handling of the above exception, another exception occurred:

    def test_lazy_choices_help():
        mock = Mock()
        getter = mock.getter
        getter.return_value = ['a', 'b', 'c']
    
        help_formatter = mock.help_formatter
        help_formatter.return_value = '<my help>'
    
        parser = ArgumentParser()
        parser.register('action', 'lazy_choices', LazyChoices)
        parser.add_argument(
            '--lazy-option',
            default='a',
            metavar='SYMBOL',
            action='lazy_choices',
            getter=getter,
            help_formatter=help_formatter,
            cache=False  # for test purposes
        )
    
        # Parser initialization doesn't call it.
>       getter.assert_not_called()
E       AssertionError: Expected 'getter' to not have been called. Called 1 times.
E       Calls: [call()].

tests/test_cli_utils.py:73: AssertionError
=============================== warnings summary ===============================
httpie/cli/definition.py:526
  .../httpie/httpie/cli/definition.py:526: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
    type=FileType('a+b'),

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_cli_utils.py::test_lazy_choices_help - AssertionError: Expe...
================ 1 failed, 1027 deselected, 1 warning in 0.20s =================

Expected result

Tests pass.

Lingua principale
Python
Stelle
38.6k
Fork
4k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di httpie/cli

Tutte le issue di httpie/cli

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.