Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

**kwargs unexpectedly parses flags for later chained method

Aberta
#659 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
55/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
python
Domínio
cli

Direção de pesquisa

Reproduza o comportamento com o comando mostrado python -m fire e as chamadas encadeadas a transform e do_something. Comece rastreando a análise de argumentos para chamadas de métodos encadeadas; considera-se concluído quando as flags após transform são passadas para do_something em vez de serem absorvidas pelos kwargs de transform, com cobertura para este exemplo.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Suppose we have the following program

from dataclasses import dataclass

@dataclass
class MyClass:
    x: int

    def transform(self, **kwargs):
        return MyClass(self.x * kwargs.get("multiplier", 2))

    def do_something(self, msg):
        print(f"{msg}: {self.x}")

my_obj = MyClass(3)

And we call it with python -m fire my_module my_obj transform --multiplier=3 do_something --msg="test", then the --msg is parsed when calling transform into the kwargs dict. Then it errors saying --msg is missing. Can we instead support parsing flags before the next chained method call? The kwargs is useful for example, to transform the object in ways that only implementation classes know what to do.

My current workarounds are (1) pass msg as positional arg to do_something, (2) have do_something take **kwargs and call transform within it. Neither is ideal as (1) would surprise anyone who uses my code and (2) adds extra plumbing that could be avoided.

Linguagem predominante
Python
Estrelas
28.2k
Forks
1.5k
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de google/python-fire

Todas as issues de google/python-fire

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.