inspect.getsource returns unrelated code
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
The documentation of inspect.getsource states:
Return the text of the source code for an object. [...]
But the function returns slightly more code. It returns all lines of source code that overlap the object, even if the rest of the lines belong to different objects.
For example, the following code creates two lambdas in the same line, so inspect.getsource will return the code of both lambdas instead of just one.
import inspect
# Two function declarations in the same line
x = lambda: 1; y = lambda: 2
# prints "x = lambda: 1; y = lambda: 2\n"
print(repr(inspect.getsource(y)))
The returned code is not even necessarily valid Python, as the following list comprehension demonstrates:
import inspect
funcs = [
lambda: 1 for
_ in range(3)
]
# prints ' lambda: 1 for\n', including indentation and a stray "for"
print(repr(inspect.getsource(funcs[0])))
Background
I was trying to access the abstract syntax tree of a function (for JIT compilation), but that does not appear to be possible for lambdas.
Linked PRs
- gh-143301
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece em inspect.getsource e reproduza os dois exemplos da issue. Em seguida, examine a implementação ao redor e os testes existentes para extração de código-fonte. Esclareça o comportamento pretendido para lambdas que compartilham uma linha ou abrangem a sintaxe de compreensão, e adicione cobertura de regressão mostrando o que deve ser retornado. Um pull request vinculado, gh-143301, indica que o trabalho já foi transferido para outro lugar.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- tooling
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100