Skip to content

Commit 3fc117c

Browse files
authored
Merge pull request #24 from msamsami/fix-python39-310-compatibility
fix Python 3.9 and 3.10 compatibility issues
2 parents f7da1e8 + 7cf5e2f commit 3fc117c

File tree

17 files changed

+60
-21
lines changed

17 files changed

+60
-21
lines changed

crudadmin/admin_interface/admin_site.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
from collections.abc import AsyncGenerator, Callable
3-
from datetime import UTC, datetime
3+
from datetime import datetime, timezone
44
from typing import Any, Dict, Optional, cast
55

66
from fastapi import APIRouter, Cookie, Depends, Request, Response
@@ -19,6 +19,8 @@
1919
from .auth import AdminAuthentication
2020
from .typing import RouteResponse
2121

22+
UTC = timezone.utc
23+
2224
logger = logging.getLogger(__name__)
2325

2426
EndpointCallable = Callable[..., Any]

crudadmin/admin_interface/crud_admin.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
import logging
22
import os
3+
import sys
34
import time
45
from collections.abc import Awaitable, Callable
5-
from datetime import UTC, datetime, timedelta
6+
from datetime import datetime, timedelta, timezone
67
from typing import (
78
Any,
89
AsyncGenerator,
910
Dict,
1011
List,
1112
Optional,
1213
Type,
13-
TypeAlias,
1414
TypedDict,
1515
TypeVar,
1616
Union,
1717
cast,
1818
)
1919

20+
if sys.version_info >= (3, 10):
21+
from typing import TypeAlias
22+
else:
23+
from typing_extensions import TypeAlias
24+
2025
from fastapi import APIRouter, Depends, FastAPI, Request
2126
from fastapi.security import OAuth2PasswordBearer
2227
from fastapi.staticfiles import StaticFiles
@@ -43,6 +48,8 @@
4348
from .model_view import ModelView
4449
from .typing import RouteResponse
4550

51+
UTC = timezone.utc
52+
4653
logger = logging.getLogger("crudadmin")
4754

4855
ModelType = TypeVar("ModelType", bound=DeclarativeBase)

crudadmin/admin_user/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
from datetime import UTC, datetime
1+
from datetime import datetime, timezone
22
from typing import Optional, Type
33

44
from sqlalchemy import Boolean, DateTime, String
55
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
66

7+
UTC = timezone.utc
8+
79

810
def create_admin_user(base: Type[DeclarativeBase]) -> Type[DeclarativeBase]:
911
class AdminUser(base): # type: ignore
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1-
from datetime import UTC, datetime
1+
from datetime import datetime, timezone
22
from typing import Any, Optional
33

44
from pydantic import BaseModel, Field, field_serializer
55

6+
UTC = timezone.utc
7+
68

79
class TimestampSchema(BaseModel):
810
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
911
updated_at: Optional[datetime] = Field(default=None)
1012

1113
@field_serializer("created_at")
12-
def serialize_dt(self, created_at: datetime | None, _info: Any) -> str | None:
14+
def serialize_dt(self, created_at: Optional[datetime], _info: Any) -> Optional[str]:
1315
if created_at is not None:
1416
return created_at.isoformat()
1517
return None
1618

1719
@field_serializer("updated_at")
1820
def serialize_updated_at(
19-
self, updated_at: datetime | None, _info: Any
20-
) -> str | None:
21+
self, updated_at: Optional[datetime], _info: Any
22+
) -> Optional[str]:
2123
if updated_at is not None:
2224
return updated_at.isoformat()
2325
return None

crudadmin/event/decorators.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import functools
22
import logging
33
from collections.abc import Callable
4-
from datetime import UTC, datetime
4+
from datetime import datetime, timezone
55
from typing import Any, Dict, Optional, Type
66

77
from fastapi import Request
@@ -11,6 +11,8 @@
1111

1212
from .models import EventType
1313

14+
UTC = timezone.utc
15+
1416
logger = logging.getLogger(__name__)
1517

1618

crudadmin/event/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import UTC, datetime
1+
from datetime import datetime, timezone
22
from typing import Any, Optional, cast
33

44
from sqlalchemy import JSON, DateTime, String
@@ -7,6 +7,8 @@
77

88
from .schemas import EventStatus, EventType
99

10+
UTC = timezone.utc
11+
1012

1113
def create_admin_event_log(base: type[DeclarativeBase]) -> type[DeclarativeBase]:
1214
tablename = "admin_event_log"

crudadmin/event/service.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
import logging
3-
from datetime import UTC, datetime, timedelta
3+
from datetime import datetime, timedelta, timezone
44
from decimal import Decimal
55
from enum import Enum
66
from typing import Any, Optional, cast
@@ -19,6 +19,8 @@
1919
EventType,
2020
)
2121

22+
UTC = timezone.utc
23+
2224
logger = logging.getLogger(__name__)
2325

2426

crudadmin/session/backends/database.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"""
77

88
import logging
9-
from datetime import UTC, datetime
9+
from datetime import datetime, timezone
1010
from typing import Any, Optional, TypeVar
1111

1212
from pydantic import BaseModel
@@ -16,6 +16,8 @@
1616
from ..schemas import AdminSessionCreate, AdminSessionUpdate
1717
from ..storage import AbstractSessionStorage
1818

19+
UTC = timezone.utc
20+
1921
T = TypeVar("T", bound=BaseModel)
2022
logger = logging.getLogger(__name__)
2123

crudadmin/session/backends/memory.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import json
22
import logging
33
import re
4-
from datetime import UTC, datetime, timedelta
4+
from datetime import datetime, timedelta, timezone
55
from typing import Optional, Pattern, TypeVar
66

77
from pydantic import BaseModel
88

99
from ..storage import AbstractSessionStorage
1010

11+
UTC = timezone.utc
12+
1113
T = TypeVar("T", bound=BaseModel)
1214
logger = logging.getLogger(__name__)
1315

crudadmin/session/manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import secrets
3-
from datetime import UTC, datetime, timedelta
3+
from datetime import datetime, timedelta, timezone
44
from typing import Any, Literal, Optional
55

66
from fastapi import Request, Response
@@ -10,6 +10,8 @@
1010
from .storage import AbstractSessionStorage, get_session_storage
1111
from .user_agents_types import parse
1212

13+
UTC = timezone.utc
14+
1315
logger = logging.getLogger(__name__)
1416

1517
SamesiteType = Literal["lax", "strict", "none"]

0 commit comments

Comments
 (0)