Skip to content

Instantly share code, notes, and snippets.

@foxmask
Created November 17, 2024 19:57
Show Gist options
  • Save foxmask/a26f0c171e4a4ba1737ff7d2eb0e7611 to your computer and use it in GitHub Desktop.
Save foxmask/a26f0c171e4a4ba1737ff7d2eb0e7611 to your computer and use it in GitHub Desktop.
mypy Unsupported operand types for + ("str" and "timedelta") [operator]
maillepaille.py:10: error: Incompatible types in assignment (expression has type "datetime", variable has type "str") [assignment]
maillepaille.py:15: error: Incompatible types in assignment (expression has type "date", variable has type "str") [assignment]
maillepaille.py:17: error: Incompatible types in assignment (expression has type "datetime", variable has type "str") [assignment]
maillepaille.py:19: error: Unsupported operand types for + ("str" and "timedelta") [operator]
from datetime import date, datetime, timedelta, timezone
import pytz
yesterday = ""
now = datetime.now(tz=pytz.timezone("Europe/London"))
today = date.today()
if yesterday:
yesterday = datetime.strptime(yesterday, "%Y-%m-%d").replace(tzinfo=timezone.utc)
start_of_day = yesterday
else:
yesterday = today - timedelta(days=1, seconds=-1)
start_of_day = datetime(now.year, now.month, now.day)
end_of_day = start_of_day + timedelta(days=1, seconds=-1)
@foxmask
Copy link
Author

foxmask commented Nov 17, 2024

l'exemple est "con" parce que je mets rien dans yesterday mais c'est une variable d'une fonction recevant une datetime au format string

@JulienPalard
Copy link

Son souci c'est que le type de yesterday c'est str, (cf. ligne 5), essaye ligne 5 avec yesterday: datetime|None = None (donc pareil si t'es dans une fonction avec un bon typage sur l'argument?)

@foxmask
Copy link
Author

foxmask commented Nov 17, 2024

yesterday est un query parameter qui vient de l'url genre http://localhost:8000?yesterday=2020-01-01
dans ma fonction qui la recupere c'est bien une string que je transforme en datetime comme on voit ligne 10
je viens de tester et declarer yesterday: date | None = None, parmi les parms de la fonction fonctionne (j'aurai appris un truc different de django sur ce coup là)

@JulienPalard
Copy link

Nomme la variable différement quand c'est une chaîne et une date alors, ça aidera mypy à suivre.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment