ועוד בנושא הmypy

אפשר להתעלם מחלק מהשגיאות ? יש שגיאות שזה מציין שהן לא באמת שגיאות.

הן כנראה כן באמת שגיאות :slight_smile:

אוקיי , אז למשל אני השתמשתי בפתרון הראשון כאן
כדי לתת טייפ לאינסטנסים של קלאסס מסוימת.
אז mypy רואה את זה כשגיאה :

pieces/piece.py:30: error: Name 'Board' is not defined  

או למשל :

if st[0] in final_letters_dict and len(st) > 1:
            st = final_letters_dict.get(st[0]) + st[1:]

עשיתי כאן “איבטוח” שלא יהיה מצב ש final_letters_dict.get(st[0]) יהיה שווה לNone וגם ש st[1:] לא יהיה None
עדיין הmypy רואה את זה כטעות.

translate_book.py:82: error: Unsupported left operand type for + ("None")
translate_book.py:82: note: Left operand is of type "Optional[str]"

ועוד ועוד. אני מקבל המון דברים כאלו.

כמובן, Board אכן לא מוגדר בתוך המחלקה. mypy צודק. יש לזה פתרון, מצא אותו בגוגל :slight_smile:

זו אכן טעות.
החתימה של get טוענת שהוא יכול להחזיר None, ולכן mypy צועקת.
אם זה לא אפשרי, בצע final_letters[st[0]], שזורק KeyError ולא מחזיר None במקרה שה־Key לא קיים.

גם השאר הם ככה"נ טעויות, פשוט צריך ללמוד לעבוד עם זה :slight_smile:
המטרה של mypy היא למנוע שגיאות בקוד שלך, ולכן היא קשוחה ומוודאת לעומק שאין מקומות שיש סיכוי שנפלת בהם.

2 לייקים