Closed5

Pydanticで面白そうな機能を見つけたので書く

須藤ナノ須藤ナノ

自分のアプリの設定をPydanticのBaseModelのように書ける。
ちなみに.envファイルからも読み込めるっぽい。

須藤ナノ須藤ナノ

メモがてら使い方を書いておく

インストール

pydantic本体のインストールも忘れずに

pip install -U pydantic-settings

or

poetry add -U pydantic-settings

主な使い方

pydanticBaseModelと使用感は全く同じ

class Settings(BaseSettings):
    api_key  = Field(..., validation_alias='MY_API_KEY')

validation_aliasを使用すると、api_keyの代わりに指定した値(ここではMY_API_KEY)が読み込まれる

Configの書き方

  1. クラスの中にConfigクラスを書く方法
from pydantic_settings import BaseSettings
from pydantic import Field


class Settings(BaseSettings):
    (...省略)
    class Config:
        extra = "ignore" # pydanticのConfigも行けそう?
        env_file = ".env"
        env_file_encoding= "utf-8" # 日本語環境はこれを書いたほうが良さげ
        env_prefix = "MY_" # envファイルから読み込むときのプレフィックス
        case_sensitive = True # 大文字と小文字を区別する。デフォルトはFalse
  1. model_config = SettingConfigDict()で書く
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import Field


class Settings(BaseSettings):
    (...省略)
    model_config = SettingsConfigDict(env_file=".env") # さっきと同じように書ける
須藤ナノ須藤ナノ

設定ソースはjson,toml,yamlが行けそう
バリデーションもできるし最強では????

須藤ナノ須藤ナノ

dockerの環境変数の読み取りでも使えるしまじで良さげなので
いいねついたら記事で書くかもです

このスクラップは27日前にクローズされました