Behaviour change in partialmethod in Python3.11
@rhettinger já está trabalhando nisso.
Desde 7/11/2022.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Bug report
The behavior of partialmethod changed in python3.11. This caused a library that I use testsuite to fail.
Here is a minimal use case that demonstrates this:
from functools import partialmethod
class Cell:
def __init__(self):
self.alive = False
def set_state(self, state):
self.alive = bool(state)
class Wrapper:
def set_state_wrap(self, cell: Cell, state):
cell.set_state(state)
wrapper = Wrapper()
Cell.set_alive = partialmethod(wrapper.set_state_wrap, True)
cell = Cell()
cell.set_alive()
print(cell.alive)
In python3.10, this prints True. In python3.11 it errors with:
Traceback (most recent call last):
File "/home/gary/partialmethod.py", line 23, in <module>
c.set_alive()
TypeError: Wrapper.set_state_wrap() missing 1 required positional argument: 'state'
The arguments passed to Wrapper.set_state_wrap are:
python3.10: wrapper, cell, True
python3.11: cell, True
So partialmethod is forgetting that set_state_wrap is a method of wrapper, and it needs to pass that in as the first arg.
I know that the way that they are using partialmethod here is not how it is intended to be used, and feels wrong. However this change is behavior if intended should be documented.
Your environment
- CPython versions tested on: Python 3.11.0 (broken) Python 3.10.7 (working)
- Operating system and architecture: Fedora Linux 36
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Merge médio
- 1d 9h
- PRs com merge (30d)
- 558
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.
Mais de python/cpython
-
docs pending
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
build type-bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
stdlib topic-email type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Todas as issues de python/cpython
Issues semelhantes
-
area/auth bug comp/agent P3 platform/discord type/security
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
NousResearch/hermes-agent#117848 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
bancolombia/sentinel#23 ·
-
test md AbertaCI
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100