Skip to content

Commit ccce296

Browse files
committed
Added pydantic v2 support
1 parent ea024c5 commit ccce296

File tree

6 files changed

+20
-14
lines changed

6 files changed

+20
-14
lines changed

debug_toolbar/panels/sql.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import sqlparse
88
from fastapi import Request, Response
99
from fastapi.encoders import jsonable_encoder
10-
from pydantic.color import Color
10+
from pydantic_extra_types.color import Color
1111
from sqlparse import tokens as T
1212

1313
from debug_toolbar.panels import Panel

debug_toolbar/settings.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@
22

33
from jinja2 import BaseLoader, ChoiceLoader, Environment, PackageLoader
44
from jinja2.ext import Extension
5-
from pydantic import BaseSettings, Field, IPvAnyAddress, root_validator
6-
from pydantic.color import Color
5+
from pydantic import Field, IPvAnyAddress, model_validator
6+
from pydantic_extra_types.color import Color
7+
from pydantic_settings import BaseSettings, SettingsConfigDict
78

89

910
class DebugToolbarSettings(BaseSettings):
11+
model_config = SettingsConfigDict(
12+
title="Debug Toolbar",
13+
env_prefix="DT_",
14+
case_sensitive=False,
15+
)
16+
1017
DEFAULT_PANELS: t.List[str] = Field(
1118
[
1219
"debug_toolbar.panels.versions.VersionsPanel",
@@ -128,11 +135,6 @@ class DebugToolbarSettings(BaseSettings):
128135
),
129136
)
130137

131-
class Config:
132-
title = "Debug Toolbar"
133-
env_prefix = "DT_"
134-
case_sensitive = True
135-
136138
def __init__(self, **settings: t.Any) -> None:
137139
super().__init__(**settings)
138140
loaders = self.JINJA_LOADERS + [PackageLoader("debug_toolbar", "templates")]
@@ -143,6 +145,6 @@ def __init__(self, **settings: t.Any) -> None:
143145
for extension in self.JINJA_EXTENSIONS:
144146
self.JINJA_ENV.add_extension(extension)
145147

146-
@root_validator(pre=True)
147-
def ci(cls, values: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]:
148-
return {k.upper(): v for k, v in values.items()}
148+
@model_validator(mode="before")
149+
def ci(cls, data: dict):
150+
return {k.upper(): v for k, v in data.items()}

debug_toolbar/templates/panels/settings.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% macro pprint_settings(settings, exclude=None) %}
2-
{% if settings.__config__.title %}<h4>{{ settings.__config__.title }}</h4>{% endif %}
2+
{% if settings.model_config.title %}<h4>{{ settings.model_config.title }}</h4>{% endif %}
33

44
<table>
55
<thead>

debug_toolbar/utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from fastapi import Request
88
from fastapi.routing import APIRoute
9-
from pydantic.color import Color
9+
from pydantic_extra_types.color import Color
1010
from starlette.routing import Match
1111

1212

docs/src/panels/settings.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from debug_toolbar.middleware import DebugToolbarMiddleware
22
from fastapi import FastAPI
3-
from pydantic import BaseSettings, SecretStr
3+
from pydantic import SecretStr
4+
from pydantic_settings import BaseSettings
45

56

67
class APISettings(BaseSettings):

pyproject.toml

+3
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ dependencies = [
4545
"fastapi >=0.70.0",
4646
"anyio >=3.0.0",
4747
"Jinja2 >=2.9",
48+
"pydantic >=2.0",
49+
"pydantic-extra-types >=2.0.0",
50+
"pydantic-settings >=2.0.0",
4851
"pyinstrument >=3.0.0",
4952
"sqlparse >=0.2.0",
5053
]

0 commit comments

Comments
 (0)