sanic-api 0.2.7__tar.gz → 0.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {sanic-api-0.2.7 → sanic-api-0.2.9}/PKG-INFO +2 -2
  2. {sanic-api-0.2.7 → sanic-api-0.2.9}/pyproject.toml +4 -7
  3. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/model.py +3 -2
  4. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/config/__init__.py +0 -1
  5. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/config/setting.py +2 -2
  6. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/utils.py +2 -2
  7. sanic-api-0.2.7/sanic_api/config/base.py +0 -110
  8. {sanic-api-0.2.7 → sanic-api-0.2.9}/LICENSE.txt +0 -0
  9. {sanic-api-0.2.7 → sanic-api-0.2.9}/README.MD +0 -0
  10. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/__init__.py +0 -0
  11. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/__main__.py +0 -0
  12. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/__init__.py +0 -0
  13. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t1/__init__.py +0 -0
  14. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t1/t1_1.py +0 -0
  15. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t1/t1_2.py +0 -0
  16. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t2/__init__.py +0 -0
  17. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t2/t2.py +0 -0
  18. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t2/t3/__init__.py +0 -0
  19. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/t2/t3/t3.py +0 -0
  20. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/user.py +0 -0
  21. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/api/validator.py +0 -0
  22. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/app.py +0 -0
  23. {sanic-api-0.2.7 → sanic-api-0.2.9}/example/settings.py +0 -0
  24. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/__init__.py +0 -0
  25. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/__init__.py +0 -0
  26. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/api.py +0 -0
  27. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/exception.py +0 -0
  28. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/extend.py +0 -0
  29. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/handle_exception.py +0 -0
  30. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/api/validators.py +0 -0
  31. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/config/sanic.py +0 -0
  32. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/config/sanic_api.py +0 -0
  33. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/enum.py +0 -0
  34. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/logger/__init__.py +0 -0
  35. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/logger/config.py +0 -0
  36. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/logger/extend.py +0 -0
  37. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/logger/sanic_http.py +0 -0
  38. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/openapi/__init__.py +0 -0
  39. {sanic-api-0.2.7 → sanic-api-0.2.9}/sanic_api/openapi/openapi.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sanic-api
3
- Version: 0.2.7
3
+ Version: 0.2.9
4
4
  Summary: Sanic 框架实用API工具集,拥有自动生成文档、参数校验、配置的导入、日志功能的优化等功能,更好的助力接口的开发
5
5
  License: MIT
6
6
  Author-email: 昊色居士 <xhrtxh@gmail.com>
7
- Requires-Python: >=3.8
7
+ Requires-Python: >=3.8,<3.12
8
8
  Description-Content-Type: text/markdown
9
9
 
10
10
  ![logo](https://images.haose.pro/2022/12/19/logo_17%3A34%3A07_qkt9yi4d7u.png)
@@ -1,28 +1,25 @@
1
1
  [project]
2
2
  name = "sanic-api"
3
- version = "0.2.7"
3
+ version = "0.2.9"
4
4
  description = "Sanic 框架实用API工具集,拥有自动生成文档、参数校验、配置的导入、日志功能的优化等功能,更好的助力接口的开发"
5
5
  authors = [
6
6
  { name = "昊色居士", email = "xhrtxh@gmail.com" },
7
7
  ]
8
8
  dependencies = [
9
- "sanic>=22.3",
10
- "pydantic[dotenv]>=1.10.2",
11
- "sanic-ext>=22.12",
9
+ "sanic[ext]>=23.6.0",
12
10
  "loguru>=0.6.0",
13
11
  "pygments>=2.13.0",
14
12
  "ujson>=5.7.0",
15
13
  "orjson>=3.8.6",
16
14
  "setuptools>=68.0.0",
15
+ "hs-config>=0.1.0",
17
16
  ]
18
- requires-python = ">=3.8"
17
+ requires-python = ">=3.8,<3.12"
19
18
  readme = "README.MD"
20
19
 
21
20
  [project.license]
22
21
  text = "MIT"
23
22
 
24
- [project.optional-dependencies]
25
-
26
23
  [build-system]
27
24
  requires = [
28
25
  "pdm-pep517>=1.0.0",
@@ -1,7 +1,8 @@
1
1
  from typing import Optional, Union
2
2
 
3
- from pydantic.fields import ModelField, ModelPrivateAttr
3
+ from pydantic.fields import ModelPrivateAttr
4
4
  from pydantic.main import BaseModel
5
+ from pydantic_core.core_schema import ModelField
5
6
 
6
7
 
7
8
  class ResponseModel(BaseModel):
@@ -10,7 +11,7 @@ class ResponseModel(BaseModel):
10
11
  """
11
12
 
12
13
  def __new__(cls, *args, **kwargs):
13
- for _field, value in cls.__fields__.items():
14
+ for _field, value in cls.model_fields.items():
14
15
  if not isinstance(value, ModelField):
15
16
  continue
16
17
  value.required = False
@@ -1,2 +1 @@
1
- from .base import SettingsBase
2
1
  from .setting import DefaultSettings
@@ -1,12 +1,12 @@
1
+ from hs_config import ConfigBase
1
2
  from pydantic import Field
2
3
 
3
- from sanic_api.config.base import SettingsBase
4
4
  from sanic_api.config.sanic import SanicConfig
5
5
  from sanic_api.config.sanic_api import SanicApiConfig
6
6
  from sanic_api.enum import RunModeEnum
7
7
 
8
8
 
9
- class DefaultSettings(SettingsBase):
9
+ class DefaultSettings(ConfigBase):
10
10
  """
11
11
  配置类
12
12
  """
@@ -75,9 +75,9 @@ def auto_blueprint(sanic_app: Sanic, base_api_module_name: str) -> None:
75
75
 
76
76
  # 遍历所有__init__.py文件,查找蓝图并创建对应的蓝图组
77
77
  init_files: List[Path] = list(base_api_dir.glob("**/__init__.py"))
78
- for init_file in reversed(init_files):
78
+ for file in reversed(init_files):
79
79
  # 忽略__init__.py
80
- init_file: Path = init_file.parent
80
+ init_file: Path = file.parent
81
81
  # 获取该蓝图所在的模块路径和名称
82
82
  module_path: str = init_file.relative_to(base_api_dir.parent).with_suffix("").as_posix()
83
83
  module_name: str = module_path.replace("/", ".")
@@ -1,110 +0,0 @@
1
- import json
2
- from configparser import ConfigParser
3
- from pathlib import Path
4
- from typing import Any, Dict, Tuple
5
-
6
- import yaml
7
- from pydantic import BaseSettings
8
- from pydantic.env_settings import SettingsSourceCallable
9
-
10
- from sanic_api.utils import getpath_by_root
11
-
12
-
13
- class CustomSettingsSource:
14
- """
15
- 自定义的配置文件来源基类
16
- """
17
-
18
- def __init__(self, path: Path):
19
- self.path = path
20
-
21
- def __repr__(self) -> str:
22
- return f"{self.__class__.__name__}(path={self.path!r})"
23
-
24
-
25
- class JsonSettingsSource(CustomSettingsSource):
26
- """
27
- json文件来源导入配置项
28
- """
29
-
30
- def __call__(self, settings: BaseSettings) -> Dict[str, Any]:
31
- encoding = settings.__config__.env_file_encoding
32
- return json.loads(self.path.read_text(encoding))
33
-
34
-
35
- class IniSettingsSource(CustomSettingsSource):
36
- """
37
- ini文件来源导入配置项
38
- """
39
-
40
- def __call__(self, settings: BaseSettings) -> Dict[str, Any]:
41
- encoding = settings.__config__.env_file_encoding
42
- parser = ConfigParser()
43
- parser.read(self.path, encoding)
44
- return getattr(parser, "_sections", {}).get("settings", {})
45
-
46
-
47
- class YamlSettingsSource(CustomSettingsSource):
48
- """
49
- Yaml文件来源导入配置项
50
- """
51
-
52
- def __call__(self, settings: BaseSettings) -> Dict[str, Any]:
53
- encoding = settings.__config__.env_file_encoding
54
- return yaml.safe_load(self.path.read_text(encoding))
55
-
56
-
57
- class SettingsBase(BaseSettings):
58
- """
59
- 项目设置的基类
60
- """
61
-
62
- class Config:
63
- root_config_dir = getpath_by_root("./configs")
64
- env_file = root_config_dir / ".env"
65
- env_file_encoding = "utf-8"
66
- env_nested_delimiter = "__"
67
-
68
- @classmethod
69
- def customise_sources(
70
- cls,
71
- init_settings: SettingsSourceCallable,
72
- env_settings: SettingsSourceCallable,
73
- file_secret_settings: SettingsSourceCallable,
74
- ) -> Tuple[SettingsSourceCallable, ...]:
75
- """
76
- 自定义配置来源
77
- Args:
78
- init_settings: 初始化设置
79
- env_settings:环境变量设置
80
- file_secret_settings:加密文件设置
81
-
82
- Returns:
83
-
84
- """
85
- # 默认的设置
86
- default_settings = {
87
- init_settings,
88
- env_settings,
89
- file_secret_settings,
90
- }
91
-
92
- # json 配置文件
93
- json_file = cls.root_config_dir / "settings.json"
94
- if json_file.exists():
95
- json_settings_source = JsonSettingsSource(json_file)
96
- default_settings.add(json_settings_source)
97
-
98
- # ini配置文件
99
- ini_file = cls.root_config_dir / "settings.ini"
100
- if ini_file.exists():
101
- ini_settings_source = IniSettingsSource(ini_file)
102
- default_settings.add(ini_settings_source)
103
-
104
- # yaml配置文件
105
- yaml_file = cls.root_config_dir / "settings.yaml"
106
- if yaml_file.exists():
107
- yaml_settings_source = YamlSettingsSource(yaml_file)
108
- default_settings.add(yaml_settings_source)
109
-
110
- return tuple(default_settings)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes