Comment for bounded_lru_cache_wrapper seems incorrect
@tim-one ci sta già lavorando.
Dal 17/7/2022.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
https://github.com/python/cpython/blob/c22f134211743cd5ad14cec1dd4f527bee542b4c/Modules/_functoolsmodule.c#L975-L976
However the __eq__ method call actually could be made for the deletion of the oldest entry.
from functools import lru_cache
class A:
def __init__(self, name):
self.name = name
self.counter = []
def __hash__(self):
return 0 # mock hash collision
def __eq__(self, __o: 'A'):
self.counter.append(__o.name)
return self is __o
@lru_cache(maxsize=2)
def foo(_):
return 0
a, b, c = A('a'), A('b'), A('c')
foo(a)
foo(b)
# make 'b' be the oldest-used entry
# but not the oldest-inserted entry
foo(a)
a.counter.clear()
foo(c) # will evict 'b'
# The assertion shows that
# 'a' was compared with 'b' for the deletion of 'b'
assert 'b' in a.counter
print(a.counter) # ['c', 'c', 'b', 'c']
It seems that reentrant here might cause the assertion in L1092 failed:
https://github.com/python/cpython/blob/c22f134211743cd5ad14cec1dd4f527bee542b4c/Modules/_functoolsmodule.c#L1092-L1099
Since link has been extracted but hasn't been popped from cache dict, link list could be empty while cache dict is full.
- Lingua principale
- Python
- Stelle
- 77.2k
- Fork
- 36k
- Merge medio
- 1g 9h
- PR unite (30g)
- 558
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di python/cpython
-
docs pending
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
stdlib type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
stdlib type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
build type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
stdlib topic-email type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Tutte le issue di python/cpython
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
zostera/django-bootstrap4#894 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
use-agent-os/agent-os#3276 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
NousResearch/hermes-agent#117848 ·