diff options
Diffstat (limited to 'community/py3-flask-sqlalchemy/python-3.12.patch')
-rw-r--r-- | community/py3-flask-sqlalchemy/python-3.12.patch | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/community/py3-flask-sqlalchemy/python-3.12.patch b/community/py3-flask-sqlalchemy/python-3.12.patch new file mode 100644 index 00000000000..796ee443e9c --- /dev/null +++ b/community/py3-flask-sqlalchemy/python-3.12.patch @@ -0,0 +1,122 @@ +From 2cbf3f24fd6b300c2d6ce2aa2921cea95a606d61 Mon Sep 17 00:00:00 2001 +From: Steve Kowalik <steven@wedontsleep.org> +Date: Sat, 3 Feb 2024 12:14:56 +1100 +Subject: [PATCH] Stop using datetime.utcnow() in tests + +datetime.utcnow() is deprecated for Python 3.12+, and raises a warning. +Since warnings are treated as errors, this results in test failures. +Since utcnow calls are done by the SQLAlchemy mapping machinery, we need +to use a function. + +Fixes #1303 +--- + tests/test_model.py | 37 +++++++++++++++++++------------------ + 1 file changed, 19 insertions(+), 18 deletions(-) + +diff --git a/tests/test_model.py b/tests/test_model.py +index 0968a1e2..fc56d28d 100644 +--- a/tests/test_model.py ++++ b/tests/test_model.py +@@ -2,6 +2,7 @@ + + import typing as t + from datetime import datetime ++from datetime import timezone + + import pytest + import sqlalchemy as sa +@@ -14,6 +15,10 @@ + from flask_sqlalchemy.model import Model + + ++def utc_now() -> datetime: ++ return datetime.now(tz=timezone.utc) ++ ++ + def test_default_model_class_1x(app: Flask) -> None: + db = SQLAlchemy(app) + +@@ -147,12 +152,12 @@ def test_abstractmodel(app: Flask, model_class: t.Any) -> None: + class TimestampModel(db.Model): + __abstract__ = True + created: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, nullable=False, insert_default=datetime.utcnow, init=False ++ db.DateTime, nullable=False, insert_default=utc_now, init=False + ) + updated: sa_orm.Mapped[datetime] = sa_orm.mapped_column( + db.DateTime, +- insert_default=datetime.utcnow, +- onupdate=datetime.utcnow, ++ insert_default=utc_now, ++ onupdate=utc_now, + init=False, + ) + +@@ -167,10 +172,10 @@ class Post(TimestampModel): + class TimestampModel(db.Model): # type: ignore[no-redef] + __abstract__ = True + created: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, nullable=False, default=datetime.utcnow ++ db.DateTime, nullable=False, default=utc_now + ) + updated: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow ++ db.DateTime, default=utc_now, onupdate=utc_now + ) + + class Post(TimestampModel): # type: ignore[no-redef] +@@ -181,10 +186,8 @@ class Post(TimestampModel): # type: ignore[no-redef] + + class TimestampModel(db.Model): # type: ignore[no-redef] + __abstract__ = True +- created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) +- updated = db.Column( +- db.DateTime, onupdate=datetime.utcnow, default=datetime.utcnow +- ) ++ created = db.Column(db.DateTime, nullable=False, default=utc_now) ++ updated = db.Column(db.DateTime, onupdate=utc_now, default=utc_now) + + class Post(TimestampModel): # type: ignore[no-redef] + id = db.Column(db.Integer, primary_key=True) +@@ -207,12 +210,12 @@ def test_mixinmodel(app: Flask, model_class: t.Any) -> None: + + class TimestampMixin(sa_orm.MappedAsDataclass): + created: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, nullable=False, insert_default=datetime.utcnow, init=False ++ db.DateTime, nullable=False, insert_default=utc_now, init=False + ) + updated: sa_orm.Mapped[datetime] = sa_orm.mapped_column( + db.DateTime, +- insert_default=datetime.utcnow, +- onupdate=datetime.utcnow, ++ insert_default=utc_now, ++ onupdate=utc_now, + init=False, + ) + +@@ -226,10 +229,10 @@ class Post(TimestampMixin, db.Model): + + class TimestampMixin: # type: ignore[no-redef] + created: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, nullable=False, default=datetime.utcnow ++ db.DateTime, nullable=False, default=utc_now + ) + updated: sa_orm.Mapped[datetime] = sa_orm.mapped_column( +- db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow ++ db.DateTime, default=utc_now, onupdate=utc_now + ) + + class Post(TimestampMixin, db.Model): # type: ignore[no-redef] +@@ -239,10 +242,8 @@ class Post(TimestampMixin, db.Model): # type: ignore[no-redef] + else: + + class TimestampMixin: # type: ignore[no-redef] +- created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) +- updated = db.Column( +- db.DateTime, onupdate=datetime.utcnow, default=datetime.utcnow +- ) ++ created = db.Column(db.DateTime, nullable=False, default=utc_now) ++ updated = db.Column(db.DateTime, onupdate=utc_now, default=utc_now) + + class Post(TimestampMixin, db.Model): # type: ignore[no-redef] + id = db.Column(db.Integer, primary_key=True) |