Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(configs): Update pydantic settings in config files #6023

Merged
merged 3 commits into from
Jul 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion api/configs/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

from .app_config import DifyConfig

dify_config = DifyConfig()
12 changes: 4 additions & 8 deletions api/configs/app_config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from pydantic import computed_field
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import Field, computed_field
from pydantic_settings import SettingsConfigDict

from configs.deploy import DeploymentConfig
from configs.enterprise import EnterpriseFeatureConfig
Expand All @@ -9,13 +9,7 @@
from configs.packaging import PackagingInfo


# TODO: Both `BaseModel` and `BaseSettings` has `model_config` attribute but they are in different types.
# This inheritance is depends on the order of the classes.
# It is better to use `BaseSettings` as the base class.
class DifyConfig(
# based on pydantic-settings
BaseSettings,

# Packaging info
PackagingInfo,

Expand All @@ -35,11 +29,13 @@ class DifyConfig(
# **Before using, please contact business@dify.ai by email to inquire about licensing matters.**
EnterpriseFeatureConfig,
):
DEBUG: bool = Field(default=False, description='whether to enable debug mode.')

model_config = SettingsConfigDict(
# read from dotenv format config file
env_file='.env',
env_file_encoding='utf-8',
frozen=True,

# ignore extra attributes
extra='ignore',
Expand Down
5 changes: 3 additions & 2 deletions api/configs/deploy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from pydantic import BaseModel, Field
from pydantic import Field
from pydantic_settings import BaseSettings


class DeploymentConfig(BaseModel):
class DeploymentConfig(BaseSettings):
"""
Deployment configs
"""
Expand Down
5 changes: 3 additions & 2 deletions api/configs/enterprise/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from pydantic import BaseModel, Field
from pydantic import Field
from pydantic_settings import BaseSettings


class EnterpriseFeatureConfig(BaseModel):
class EnterpriseFeatureConfig(BaseSettings):
"""
Enterprise feature configs.
**Before using, please contact business@dify.ai by email to inquire about licensing matters.**
Expand Down
2 changes: 0 additions & 2 deletions api/configs/extra/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from pydantic import BaseModel

from configs.extra.notion_config import NotionConfig
from configs.extra.sentry_config import SentryConfig

Expand Down
5 changes: 3 additions & 2 deletions api/configs/extra/notion_config.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from typing import Optional

from pydantic import BaseModel, Field
from pydantic import Field
from pydantic_settings import BaseSettings


class NotionConfig(BaseModel):
class NotionConfig(BaseSettings):
"""
Notion integration configs
"""
Expand Down
5 changes: 3 additions & 2 deletions api/configs/extra/sentry_config.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from typing import Optional

from pydantic import BaseModel, Field, NonNegativeFloat
from pydantic import Field, NonNegativeFloat
from pydantic_settings import BaseSettings


class SentryConfig(BaseModel):
class SentryConfig(BaseSettings):
"""
Sentry configs
"""
Expand Down
47 changes: 24 additions & 23 deletions api/configs/feature/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from typing import Optional

from pydantic import AliasChoices, BaseModel, Field, NonNegativeInt, PositiveInt, computed_field
from pydantic import AliasChoices, Field, NonNegativeInt, PositiveInt, computed_field
from pydantic_settings import BaseSettings

from configs.feature.hosted_service import HostedServiceConfig


class SecurityConfig(BaseModel):
class SecurityConfig(BaseSettings):
"""
Secret Key configs
"""
Expand All @@ -22,7 +23,7 @@ class SecurityConfig(BaseModel):
default=24,
)

class AppExecutionConfig(BaseModel):
class AppExecutionConfig(BaseSettings):
"""
App Execution configs
"""
Expand All @@ -32,7 +33,7 @@ class AppExecutionConfig(BaseModel):
)


class CodeExecutionSandboxConfig(BaseModel):
class CodeExecutionSandboxConfig(BaseSettings):
"""
Code Execution Sandbox configs
"""
Expand All @@ -47,7 +48,7 @@ class CodeExecutionSandboxConfig(BaseModel):
)


class EndpointConfig(BaseModel):
class EndpointConfig(BaseSettings):
"""
Module URL configs
"""
Expand Down Expand Up @@ -76,7 +77,7 @@ class EndpointConfig(BaseModel):
)


class FileAccessConfig(BaseModel):
class FileAccessConfig(BaseSettings):
"""
File Access configs
"""
Expand All @@ -95,7 +96,7 @@ class FileAccessConfig(BaseModel):
)


class FileUploadConfig(BaseModel):
class FileUploadConfig(BaseSettings):
"""
File Uploading configs
"""
Expand All @@ -120,7 +121,7 @@ class FileUploadConfig(BaseModel):
)


class HttpConfig(BaseModel):
class HttpConfig(BaseSettings):
"""
HTTP configs
"""
Expand Down Expand Up @@ -152,7 +153,7 @@ def WEB_API_CORS_ALLOW_ORIGINS(self) -> list[str]:
return self.inner_WEB_API_CORS_ALLOW_ORIGINS.split(',')


class InnerAPIConfig(BaseModel):
class InnerAPIConfig(BaseSettings):
"""
Inner API configs
"""
Expand All @@ -167,7 +168,7 @@ class InnerAPIConfig(BaseModel):
)


class LoggingConfig(BaseModel):
class LoggingConfig(BaseSettings):
"""
Logging configs
"""
Expand Down Expand Up @@ -199,7 +200,7 @@ class LoggingConfig(BaseModel):
)


class ModelLoadBalanceConfig(BaseModel):
class ModelLoadBalanceConfig(BaseSettings):
"""
Model load balance configs
"""
Expand All @@ -209,7 +210,7 @@ class ModelLoadBalanceConfig(BaseModel):
)


class BillingConfig(BaseModel):
class BillingConfig(BaseSettings):
"""
Platform Billing Configurations
"""
Expand All @@ -219,7 +220,7 @@ class BillingConfig(BaseModel):
)


class UpdateConfig(BaseModel):
class UpdateConfig(BaseSettings):
"""
Update configs
"""
Expand All @@ -229,7 +230,7 @@ class UpdateConfig(BaseModel):
)


class WorkflowConfig(BaseModel):
class WorkflowConfig(BaseSettings):
"""
Workflow feature configs
"""
Expand All @@ -250,7 +251,7 @@ class WorkflowConfig(BaseModel):
)


class OAuthConfig(BaseModel):
class OAuthConfig(BaseSettings):
"""
oauth configs
"""
Expand Down Expand Up @@ -280,7 +281,7 @@ class OAuthConfig(BaseModel):
)


class ModerationConfig(BaseModel):
class ModerationConfig(BaseSettings):
"""
Moderation in app configs.
"""
Expand All @@ -292,7 +293,7 @@ class ModerationConfig(BaseModel):
)


class ToolConfig(BaseModel):
class ToolConfig(BaseSettings):
"""
Tool configs
"""
Expand All @@ -303,7 +304,7 @@ class ToolConfig(BaseModel):
)


class MailConfig(BaseModel):
class MailConfig(BaseSettings):
"""
Mail Configurations
"""
Expand Down Expand Up @@ -359,7 +360,7 @@ class MailConfig(BaseModel):
)


class RagEtlConfig(BaseModel):
class RagEtlConfig(BaseSettings):
"""
RAG ETL Configurations.
"""
Expand All @@ -385,7 +386,7 @@ class RagEtlConfig(BaseModel):
)


class DataSetConfig(BaseModel):
class DataSetConfig(BaseSettings):
"""
Dataset configs
"""
Expand All @@ -396,7 +397,7 @@ class DataSetConfig(BaseModel):
)


class WorkspaceConfig(BaseModel):
class WorkspaceConfig(BaseSettings):
"""
Workspace configs
"""
Expand All @@ -407,7 +408,7 @@ class WorkspaceConfig(BaseModel):
)


class IndexingConfig(BaseModel):
class IndexingConfig(BaseSettings):
"""
Indexing configs.
"""
Expand All @@ -418,7 +419,7 @@ class IndexingConfig(BaseModel):
)


class ImageFormatConfig(BaseModel):
class ImageFormatConfig(BaseSettings):
MULTIMODAL_SEND_IMAGE_FORMAT: str = Field(
description='multi model send image format, support base64, url, default is base64',
default='base64',
Expand Down
19 changes: 10 additions & 9 deletions api/configs/feature/hosted_service/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from typing import Optional

from pydantic import BaseModel, Field, NonNegativeInt
from pydantic import Field, NonNegativeInt
from pydantic_settings import BaseSettings


class HostedOpenAiConfig(BaseModel):
class HostedOpenAiConfig(BaseSettings):
"""
Hosted OpenAI service config
"""
Expand Down Expand Up @@ -68,7 +69,7 @@ class HostedOpenAiConfig(BaseModel):
)


class HostedAzureOpenAiConfig(BaseModel):
class HostedAzureOpenAiConfig(BaseSettings):
"""
Hosted OpenAI service config
"""
Expand All @@ -94,7 +95,7 @@ class HostedAzureOpenAiConfig(BaseModel):
)


class HostedAnthropicConfig(BaseModel):
class HostedAnthropicConfig(BaseSettings):
"""
Hosted Azure OpenAI service config
"""
Expand Down Expand Up @@ -125,7 +126,7 @@ class HostedAnthropicConfig(BaseModel):
)


class HostedMinmaxConfig(BaseModel):
class HostedMinmaxConfig(BaseSettings):
"""
Hosted Minmax service config
"""
Expand All @@ -136,7 +137,7 @@ class HostedMinmaxConfig(BaseModel):
)


class HostedSparkConfig(BaseModel):
class HostedSparkConfig(BaseSettings):
"""
Hosted Spark service config
"""
Expand All @@ -147,7 +148,7 @@ class HostedSparkConfig(BaseModel):
)


class HostedZhipuAIConfig(BaseModel):
class HostedZhipuAIConfig(BaseSettings):
"""
Hosted Minmax service config
"""
Expand All @@ -158,7 +159,7 @@ class HostedZhipuAIConfig(BaseModel):
)


class HostedModerationConfig(BaseModel):
class HostedModerationConfig(BaseSettings):
"""
Hosted Moderation service config
"""
Expand All @@ -174,7 +175,7 @@ class HostedModerationConfig(BaseModel):
)


class HostedFetchAppTemplateConfig(BaseModel):
class HostedFetchAppTemplateConfig(BaseSettings):
"""
Hosted Moderation service config
"""
Expand Down
Loading