אז החלטתי לעשות שימוש במודול: FILECMP
יש לי פונקציה שמקבלת אובייקט מתוך המודול: DIRCMP
כשניסיתי לעשות ANNOTATION קיבלתי את ההערה הבאה (רק בSTRICT): "Missing type parameters for generic type "dircmp""
חיפשתי בכל רחבי האינטרנט ולא ממש הצלחתי למצוא משהו שיעזור לי, אז אני שואל פה…
foo(dcmp: filecmp.dircmp) -> None:
...
כרגע שמתי שם ANY…
aviadamar
אתה צריך ספציפית את האובייקט הזה לייבא גם לתוך הקוד (בנוסף על הספריה) ואז לקשר אליו באמצעות שם האובייקט בלבד.
נסה תראה אם זה עובד לך.
ombental
ניסיתי לעשות
from filecmp import dircmp
עדיין לא עבד…
aviadamar
מה כל ההערה שהוא זורק לך ? רק מה שרשמת ?
ombental
כן
זה דורש איזה פעולה של להמציא GENERIC TYPE - מה שנראה לי מורכב מדי בשביל אובייקט שכבר קיים…
את Path של pathlib הוא ידע לזהות…
כשעושים: type(filecmp.dircmp)
הוא אומר:
<class 'type'>
aviadamar
יש אפשרות בטייפינג להכניס לזה גם טיפוס למשל מחרוזת כדי להגדיר לו את הטייפ.
תנסה את השורה הבאה:
def foo(obj: dircmp[str]) -> None:
ombental
אז הוא עובר את הMYPY אבל לא מריץ את הקוד:
Traceback (most recent call last):
File ".\wit.py", line 95, in <module>
def check_if_same(dcmp: filecmp.dircmp[str]) -> bool:
TypeError: 'type' object is not subscriptable
aviadamar
תעשה
from filecmp import dircmp
ואז תרשום את השורה כמו שכתבתי לך זה אמור לעבוד.
ombental
ניסיתי לפני שפרסמתי את השאילתא -> עושה את אותה התקלה…
aviadamar
אצלי עשיתי וזה עובד עם strict … אני לא ידוע אולי אתה מנסה לעשות עליו [ ] במקום אחר ולא בהכרח זה מתייחס לחתימת הפונקציה ? זה הדבר היחיד שעוד אני יכול לחשוב עליו.