Allow `FrameType` to be instantiated
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
Feature or enhancement
Proposal:
For some reason, FrameType is not allowed to be instantiated. This creates problems when trying to (for example) control an exception traceback, which is common for debuggers, among other uses. This is also inconsistant with most other internal types that exposed to Python and in the types module.
The only reason I can think of is because PyFrame_New requires a PyThreadState object, which is not exposed to Python. However, there are several ways around this:
- Run
PyThreadState_GetUnchecked, raisingRuntimeError(or another error) ifNULLis returned - Expose frames'
PyThreadStateto the interpreter - Pass another frame as a parameter, and get its thread state
This should be relatively trivial to implement and I can't think of any downsides, backwards compatibility concerns, or maintenance overhead. I can probably write a PR if one of the solutions to the thread state parameter is decided.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
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 revisando o caminho de instanciação de FrameType e os pontos de entrada PyFrame_New e PyThreadState_GetUnchecked mencionados na issue. Decida como a instanciação deve obter ou validar um estado de thread e, em seguida, confirme que FrameType pode ser criado a partir do Python sem quebrar os casos de uso indicados de traceback e depurador.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- backend-api-design
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Pouca atividade
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 45/100