[mypyc] TypeError: bool object expected; got numpy.bool_
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
When I run mypy check, everything seems to be ok. If I compile the code using mypyc and execute the compiled code,
at runtime , I get the error " TypeError: bool object expected; got numpy.bool_" when executing the compute_2 function. Note that compute_1 and compute_2 are almost the same. The code is given below:
from __future__ import annotations
import numpy as np
import time
import numpy.typing as npt
class Book:
def __init__(self)->None:
self.x: float = 0.1
self.y: float = 0.2
self.z: float = 0.3
self.x_d: float = 0.15
self.y_d: float = 0.25
self.z_d: float = 0.35
self.price: float = 6.5
self.new_price: np.float64 = np.float64(0.4)
self.can_sell: bool = True
self.history: npt.NDArray[np.float64] = np.array([1.2, 1.1, 1.4], dtype=np.float64)
def compare(self)->None:
if self.can_sell and self.price > self.new_price:
print('This is ok: bool and np.bool_ comparison')
def assign(self)->None:
self.x_d = self.history[0]
def compute_1(self)->None:
x_d = self.x_d
y_d = self.y_d
z_d = self.z_d
err = ((x_d - self.x) ** 2 + (y_d - self.y) ** 2 + (z_d - self.z) ** 2) ** 0.5
if err < self.price:
print("This is also ok")
def compute_2(self)->None:
x_d = self.x_d
y_d = self.y_d
z_d = self.z_d
err = ((x_d - self.x) ** 2 + (y_d - self.y) ** 2 + (z_d - self.z) ** 2)
err = err ** 0.5
if err < self.price:
print("This is not ok")
def main()->None:
b = Book()
b.compare()
b.assign()
b.compute_1()
b.compute_2()
if __name__ == '__main__':
main()
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.
Direzione di ricerca
Inizia con il riproduttore Python fornito, in particolare con i metodi Book.assign, compute_1 e compute_2, ed eseguilo tramite mypyc per riprodurre il diverso comportamento a runtime. Confronta la gestione generata delle due espressioni equivalenti e aggiungi un test di regressione se è possibile identificare la posizione del test pertinente. Il lavoro è completato quando il riproduttore compilato non solleva più il numpy.bool_ TypeError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- numpy, python
- Ambito
- compilers, tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 32/100