浏览代码

chore: use singular style in config class name (#5489)

tags/0.6.12
Bowen Liang 1年前
父节点
当前提交
8890978ad3
没有帐户链接到提交者的电子邮件

+ 2
- 2
api/app.py 查看文件

@@ -1,6 +1,6 @@
import os

from configs.app_configs import DifyConfigs
from configs.app_config import DifyConfig

if not os.environ.get("DEBUG") or os.environ.get("DEBUG", "false").lower() != 'true':
from gevent import monkey
@@ -83,7 +83,7 @@ def create_flask_app_with_configs() -> Flask:
"""
dify_app = DifyApp(__name__)
dify_app.config.from_object(Config())
dify_app.config.from_mapping(DifyConfigs().model_dump())
dify_app.config.from_mapping(DifyConfig().model_dump())
return dify_app



api/configs/app_configs.py → api/configs/app_config.py 查看文件

@@ -1,14 +1,14 @@
from pydantic_settings import BaseSettings, SettingsConfigDict

from configs.deploy import DeploymentConfigs
from configs.enterprise import EnterpriseFeatureConfigs
from configs.extra import ExtraServiceConfigs
from configs.feature import FeatureConfigs
from configs.middleware import MiddlewareConfigs
from configs.deploy import DeploymentConfig
from configs.enterprise import EnterpriseFeatureConfig
from configs.extra import ExtraServiceConfig
from configs.feature import FeatureConfig
from configs.middleware import MiddlewareConfig
from configs.packaging import PackagingInfo


class DifyConfigs(
class DifyConfig(
# based on pydantic-settings
BaseSettings,

@@ -16,20 +16,20 @@ class DifyConfigs(
PackagingInfo,

# Deployment configs
DeploymentConfigs,
DeploymentConfig,

# Feature configs
FeatureConfigs,
FeatureConfig,

# Middleware configs
MiddlewareConfigs,
MiddlewareConfig,

# Extra service configs
ExtraServiceConfigs,
ExtraServiceConfig,

# Enterprise feature configs
# **Before using, please contact business@dify.ai by email to inquire about licensing matters.**
EnterpriseFeatureConfigs,
EnterpriseFeatureConfig,
):

model_config = SettingsConfigDict(

+ 1
- 1
api/configs/deploy/__init__.py 查看文件

@@ -1,7 +1,7 @@
from pydantic import BaseModel, Field


class DeploymentConfigs(BaseModel):
class DeploymentConfig(BaseModel):
"""
Deployment configs
"""

+ 1
- 1
api/configs/enterprise/__init__.py 查看文件

@@ -1,7 +1,7 @@
from pydantic import BaseModel, Field


class EnterpriseFeatureConfigs(BaseModel):
class EnterpriseFeatureConfig(BaseModel):
"""
Enterprise feature configs.
**Before using, please contact business@dify.ai by email to inquire about licensing matters.**

+ 5
- 5
api/configs/extra/__init__.py 查看文件

@@ -1,12 +1,12 @@
from pydantic import BaseModel

from configs.extra.notion_configs import NotionConfigs
from configs.extra.sentry_configs import SentryConfigs
from configs.extra.notion_config import NotionConfig
from configs.extra.sentry_config import SentryConfig


class ExtraServiceConfigs(
class ExtraServiceConfig(
# place the configs in alphabet order
NotionConfigs,
SentryConfigs,
NotionConfig,
SentryConfig,
):
pass

api/configs/extra/notion_configs.py → api/configs/extra/notion_config.py 查看文件

@@ -3,7 +3,7 @@ from typing import Optional
from pydantic import BaseModel, Field


class NotionConfigs(BaseModel):
class NotionConfig(BaseModel):
"""
Notion integration configs
"""

api/configs/extra/sentry_configs.py → api/configs/extra/sentry_config.py 查看文件

@@ -3,7 +3,7 @@ from typing import Optional
from pydantic import BaseModel, Field, NonNegativeFloat


class SentryConfigs(BaseModel):
class SentryConfig(BaseModel):
"""
Sentry configs
"""

+ 45
- 45
api/configs/feature/__init__.py 查看文件

@@ -3,7 +3,7 @@ from typing import Optional
from pydantic import AliasChoices, BaseModel, Field, NonNegativeInt, PositiveInt


class SecurityConfigs(BaseModel):
class SecurityConfig(BaseModel):
"""
Secret Key configs
"""
@@ -16,7 +16,7 @@ class SecurityConfigs(BaseModel):
)


class AppExecutionConfigs(BaseModel):
class AppExecutionConfig(BaseModel):
"""
App Execution configs
"""
@@ -26,7 +26,7 @@ class AppExecutionConfigs(BaseModel):
)


class CodeExecutionSandboxConfigs(BaseModel):
class CodeExecutionSandboxConfig(BaseModel):
"""
Code Execution Sandbox configs
"""
@@ -41,7 +41,7 @@ class CodeExecutionSandboxConfigs(BaseModel):
)


class EndpointConfigs(BaseModel):
class EndpointConfig(BaseModel):
"""
Module URL configs
"""
@@ -70,7 +70,7 @@ class EndpointConfigs(BaseModel):
)


class FileAccessConfigs(BaseModel):
class FileAccessConfig(BaseModel):
"""
File Access configs
"""
@@ -89,7 +89,7 @@ class FileAccessConfigs(BaseModel):
)


class FileUploadConfigs(BaseModel):
class FileUploadConfig(BaseModel):
"""
File Uploading configs
"""
@@ -114,7 +114,7 @@ class FileUploadConfigs(BaseModel):
)


class HttpConfigs(BaseModel):
class HttpConfig(BaseModel):
"""
HTTP configs
"""
@@ -124,7 +124,7 @@ class HttpConfigs(BaseModel):
)


class InnerAPIConfigs(BaseModel):
class InnerAPIConfig(BaseModel):
"""
Inner API configs
"""
@@ -139,7 +139,7 @@ class InnerAPIConfigs(BaseModel):
)


class LoggingConfigs(BaseModel):
class LoggingConfig(BaseModel):
"""
Logging configs
"""
@@ -171,7 +171,7 @@ class LoggingConfigs(BaseModel):
)


class ModelLoadBalanceConfigs(BaseModel):
class ModelLoadBalanceConfig(BaseModel):
"""
Model load balance configs
"""
@@ -181,7 +181,7 @@ class ModelLoadBalanceConfigs(BaseModel):
)


class BillingConfigs(BaseModel):
class BillingConfig(BaseModel):
"""
Platform Billing Configurations
"""
@@ -191,7 +191,7 @@ class BillingConfigs(BaseModel):
)


class UpdateConfigs(BaseModel):
class UpdateConfig(BaseModel):
"""
Update configs
"""
@@ -201,7 +201,7 @@ class UpdateConfigs(BaseModel):
)


class WorkflowConfigs(BaseModel):
class WorkflowConfig(BaseModel):
"""
Workflow feature configs
"""
@@ -222,7 +222,7 @@ class WorkflowConfigs(BaseModel):
)


class OAuthConfigs(BaseModel):
class OAuthConfig(BaseModel):
"""
oauth configs
"""
@@ -252,7 +252,7 @@ class OAuthConfigs(BaseModel):
)


class ModerationConfigs(BaseModel):
class ModerationConfig(BaseModel):
"""
Moderation in app configs.
"""
@@ -264,7 +264,7 @@ class ModerationConfigs(BaseModel):
)


class ToolConfigs(BaseModel):
class ToolConfig(BaseModel):
"""
Tool configs
"""
@@ -275,7 +275,7 @@ class ToolConfigs(BaseModel):
)


class MailConfigs(BaseModel):
class MailConfig(BaseModel):
"""
Mail Configurations
"""
@@ -331,7 +331,7 @@ class MailConfigs(BaseModel):
)


class RagEtlConfigs(BaseModel):
class RagEtlConfig(BaseModel):
"""
RAG ETL Configurations.
"""
@@ -357,7 +357,7 @@ class RagEtlConfigs(BaseModel):
)


class DataSetConfigs(BaseModel):
class DataSetConfig(BaseModel):
"""
Dataset configs
"""
@@ -368,7 +368,7 @@ class DataSetConfigs(BaseModel):
)


class WorkspaceConfigs(BaseModel):
class WorkspaceConfig(BaseModel):
"""
Workspace configs
"""
@@ -379,7 +379,7 @@ class WorkspaceConfigs(BaseModel):
)


class IndexingConfigs(BaseModel):
class IndexingConfig(BaseModel):
"""
Indexing configs.
"""
@@ -390,36 +390,36 @@ class IndexingConfigs(BaseModel):
)


class ImageFormatConfigs(BaseModel):
class ImageFormatConfig(BaseModel):
MULTIMODAL_SEND_IMAGE_FORMAT: str = Field(
description='multi model send image format, support base64, url, default is base64',
default='base64',
)


class FeatureConfigs(
class FeatureConfig(
# place the configs in alphabet order
AppExecutionConfigs,
BillingConfigs,
CodeExecutionSandboxConfigs,
DataSetConfigs,
EndpointConfigs,
FileAccessConfigs,
FileUploadConfigs,
HttpConfigs,
ImageFormatConfigs,
InnerAPIConfigs,
IndexingConfigs,
LoggingConfigs,
MailConfigs,
ModelLoadBalanceConfigs,
ModerationConfigs,
OAuthConfigs,
RagEtlConfigs,
SecurityConfigs,
ToolConfigs,
UpdateConfigs,
WorkflowConfigs,
WorkspaceConfigs,
AppExecutionConfig,
BillingConfig,
CodeExecutionSandboxConfig,
DataSetConfig,
EndpointConfig,
FileAccessConfig,
FileUploadConfig,
HttpConfig,
ImageFormatConfig,
InnerAPIConfig,
IndexingConfig,
LoggingConfig,
MailConfig,
ModelLoadBalanceConfig,
ModerationConfig,
OAuthConfig,
RagEtlConfig,
SecurityConfig,
ToolConfig,
UpdateConfig,
WorkflowConfig,
WorkspaceConfig,
):
pass

+ 3
- 3
api/configs/middleware/__init__.py 查看文件

@@ -2,7 +2,7 @@ from typing import Optional

from pydantic import BaseModel, Field

from configs.middleware.redis_configs import RedisConfigs
from configs.middleware.redis_config import RedisConfig
from configs.middleware.vdb.chroma_configs import ChromaConfigs
from configs.middleware.vdb.milvus_configs import MilvusConfigs
from configs.middleware.vdb.opensearch_configs import OpenSearchConfigs
@@ -44,10 +44,10 @@ class KeywordStoreConfigs(BaseModel):
)


class MiddlewareConfigs(
class MiddlewareConfig(
# place the configs in alphabet order
KeywordStoreConfigs,
RedisConfigs,
RedisConfig,
StorageConfigs,

# configs of vdb and vdb providers

api/configs/middleware/redis_configs.py → api/configs/middleware/redis_config.py 查看文件

@@ -3,7 +3,7 @@ from typing import Optional
from pydantic import BaseModel, Field, NonNegativeInt, PositiveInt


class RedisConfigs(BaseModel):
class RedisConfig(BaseModel):
"""
Redis configs
"""

api/tests/unit_tests/settings/test_dify_settings.py → api/tests/unit_tests/configs/test_dify_config.py 查看文件

@@ -3,7 +3,7 @@ from textwrap import dedent
import pytest
from flask import Flask

from configs.app_configs import DifyConfigs
from configs.app_config import DifyConfig

EXAMPLE_ENV_FILENAME = '.env'

@@ -19,32 +19,32 @@ def example_env_file(tmp_path, monkeypatch) -> str:
return str(file_path)


def test_dify_configs_undefined_entry(example_env_file):
def test_dify_config_undefined_entry(example_env_file):
# load dotenv file with pydantic-settings
settings = DifyConfigs(_env_file=example_env_file)
config = DifyConfig(_env_file=example_env_file)

# entries not defined in app settings
with pytest.raises(TypeError):
# TypeError: 'AppSettings' object is not subscriptable
assert settings['LOG_LEVEL'] == 'INFO'
assert config['LOG_LEVEL'] == 'INFO'


def test_dify_configs(example_env_file):
def test_dify_config(example_env_file):
# load dotenv file with pydantic-settings
settings = DifyConfigs(_env_file=example_env_file)
config = DifyConfig(_env_file=example_env_file)

# constant values
assert settings.COMMIT_SHA == ''
assert config.COMMIT_SHA == ''

# default values
assert settings.EDITION == 'SELF_HOSTED'
assert settings.API_COMPRESSION_ENABLED is False
assert settings.SENTRY_TRACES_SAMPLE_RATE == 1.0
assert config.EDITION == 'SELF_HOSTED'
assert config.API_COMPRESSION_ENABLED is False
assert config.SENTRY_TRACES_SAMPLE_RATE == 1.0


def test_flask_configs(example_env_file):
flask_app = Flask('app')
flask_app.config.from_mapping(DifyConfigs(_env_file=example_env_file).model_dump())
flask_app.config.from_mapping(DifyConfig(_env_file=example_env_file).model_dump())
config = flask_app.config

# configs read from dotenv directly

正在加载...
取消
保存