aports/community/py3-flask-sqlalchemy/python-3.12.patch
2024-04-12 11:59:22 +02:00

123 lines
5.0 KiB
Diff

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)