sanic-api 0.4.1__py3-none-any.whl → 0.5.0__py3-none-any.whl

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.
sanic_api/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from sanic_api.logger.extension import LoggerExtend
2
2
 
3
- __version__ = "0.4.1"
3
+ __version__ = "0.5.0"
sanic_api/app.py CHANGED
@@ -43,7 +43,7 @@ class BaseApp:
43
43
  # 默认启用sanic_ext里面的后台日志记录器
44
44
  motd_display = {"envornment": settings.envornment}
45
45
  config = {"access_log": settings.access_log, "motd_display": motd_display}
46
- if settings.mode == RunModeEnum.DEBNUG:
46
+ if settings.mode == RunModeEnum.DEBUG:
47
47
  config.update({"auto_reload": settings.auto_reload, "workers": 1, "debug": True})
48
48
  else:
49
49
  config.update({"fast": True, "auto_reload": False})
@@ -158,6 +158,7 @@ class BaseApp:
158
158
 
159
159
  """
160
160
  # app.config.LOGGING = True
161
+ app.config.INSPECTOR = True
161
162
  app.config.FALLBACK_ERROR_FORMAT = "json"
162
163
  self._setup_cors(app)
163
164
 
@@ -185,7 +186,7 @@ class BaseApp:
185
186
 
186
187
  """
187
188
  cors = ",".join(self.settings.cors.origins)
188
- if self.settings.mode == RunModeEnum.DEBNUG:
189
+ if self.settings.mode == RunModeEnum.DEBUG:
189
190
  app.config.CORS_SEND_WILDCARD = True
190
191
  app.config.CORS_SUPPORTS_CREDENTIALS = self.settings.cors.supports_credentials
191
192
  app.config.CORS_ORIGINS = cors or "*"
@@ -221,7 +222,11 @@ class BaseApp:
221
222
  retention=log_config.retention,
222
223
  compression=log_config.compression,
223
224
  loki_url=log_config.loki_url,
224
- loki_labels={"application": self.name, "envornment": self.settings.envornment},
225
+ loki_labels={
226
+ "application": self.name,
227
+ "envornment": self.settings.env,
228
+ },
229
+ log_in_json=log_config.log_in_json,
225
230
  )
226
231
  Extend.register(log_ext)
227
232
 
@@ -9,7 +9,7 @@ class RunModeEnum(EnumBase):
9
9
  运行模式
10
10
  """
11
11
 
12
- DEBNUG = EnumField("debug", desc="开发模式")
12
+ DEBUG = EnumField("debug", desc="开发模式")
13
13
  PRODUCTION = EnumField("prod", desc="生产模式")
14
14
 
15
15
 
@@ -36,6 +36,9 @@ class LoggerSettings(BaseModel):
36
36
  # loji的地址。如果存在,则会把日志推送给logki
37
37
  loki_url: HttpUrl | None = Field(default=None)
38
38
 
39
+ # 日志是否以json形式打印
40
+ log_in_json: bool | None = Field(default=None)
41
+
39
42
 
40
43
  class JsonRespSettings(BaseModel):
41
44
  """
@@ -83,11 +86,11 @@ class DefaultSettings(SettingsBase):
83
86
  port: int = Field(default=6969)
84
87
 
85
88
  # 运行模式
86
- mode: RunModeEnum = Field(default=RunModeEnum.DEBNUG)
89
+ mode: RunModeEnum = Field(default=RunModeEnum.DEBUG)
87
90
 
88
91
  # 运行环境,仅作为环境标识。
89
92
  # 尽量不要使用这个字段去做逻辑判断。请使用mode去进行判断,因为测试环境、预发布环境、生产环境都应属于生产模式模式
90
- envornment: str = Field(default="dev")
93
+ env: str = Field(default="dev")
91
94
 
92
95
  # 自动重载。生产模式强制关闭
93
96
  auto_reload: bool = Field(default=False)
@@ -33,6 +33,7 @@ class LoggerExtend(Extension):
33
33
  compression: str | None = None,
34
34
  loki_url: str | None = None,
35
35
  loki_labels: dict[str, str] | None = None,
36
+ log_in_json: bool = False,
36
37
  ):
37
38
  """
38
39
  Args:
@@ -43,6 +44,7 @@ class LoggerExtend(Extension):
43
44
  compression: 日志文件压缩格式: "gz", "bz2", "xz", "lzma", "tar", "tar.gz", "tar.bz2", "tar.xz", "zip"
44
45
  loki_url: 推送loki的url
45
46
  loki_labels:loki推送时的标签
47
+ log_in_json: 日志是否以json形式打印
46
48
 
47
49
  """
48
50
  self.app = app
@@ -52,6 +54,7 @@ class LoggerExtend(Extension):
52
54
  self.compression = compression
53
55
  self.loki_url = loki_url
54
56
  self.loki_labels = loki_labels
57
+ self.log_in_json: bool = log_in_json
55
58
  self.setup()
56
59
 
57
60
  def startup(self, bootstrap) -> None:
@@ -84,9 +87,12 @@ class LoggerExtend(Extension):
84
87
  )
85
88
 
86
89
  # 基本的控制台输出
87
- log_handlers = [
88
- {"sink": sys.stdout, "format": log_format, "colorize": True},
89
- ]
90
+ if self.log_in_json:
91
+ log_handlers = [{"sink": sys.stdout, "serialize": True}]
92
+ else:
93
+ log_handlers = [
94
+ {"sink": sys.stdout, "format": log_format, "colorize": True},
95
+ ]
90
96
 
91
97
  # 日志文件输出
92
98
  if self.log_file:
@@ -109,9 +115,9 @@ class LoggerExtend(Extension):
109
115
  loki_handler = LokiLoggerHandler(
110
116
  url=self.loki_url,
111
117
  labels=self.loki_labels or {},
112
- labelKeys={},
118
+ label_keys={},
113
119
  timeout=10,
114
- defaultFormatter=LoguruFormatter(),
120
+ default_formatter=LoguruFormatter(),
115
121
  )
116
122
  log_handlers.append(
117
123
  {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sanic-api
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Sanic 框架实用API工具集,拥有自动生成文档、参数校验、配置的导入、日志功能的优化等功能,更好的助力接口的开发
5
5
  Project-URL: homepage, https://github.com/x-haose/sanic-api
6
6
  Project-URL: repository, https://github.com/x-haose/sanic-api
@@ -19,6 +19,7 @@ Classifier: Operating System :: POSIX :: Linux
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
22
23
  Classifier: Topic :: Internet :: WWW/HTTP
23
24
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
24
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -1,19 +1,20 @@
1
- sanic_api/__init__.py,sha256=jI6nwCtKn23CKvA7suU2Ll4RF7h006ERknDzKbr5rnA,75
2
- sanic_api/app.py,sha256=bFQMGBuwWqmUTi_3YJLRgzwg2TWoI8_PNvn_ExBLHkQ,8513
1
+ sanic_api/__init__.py,sha256=JdFcZ2ts1lbEsx67hEsbSn7g3gorqIo3ORMXTuERNcc,75
2
+ sanic_api/app.py,sha256=dUJUdoM962wLxq5ZHqD-z-UhcBSmxgkEL_RzabY_eac,8635
3
3
  sanic_api/api/__init__.py,sha256=MxQ7A-ALJOwznJviVt6zjhcIikhEJCKoOF-7c75qtpk,42
4
4
  sanic_api/api/error.py,sha256=RikYhTFe_z0tv4nfksH4G6lzcwp5fWjNBC36xhFj-R4,661
5
5
  sanic_api/api/model.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sanic_api/api/request.py,sha256=CzltvJ8NE4UmnUTqGXJmJ7oRtBBT5GRcDADEnf7dkUE,7017
7
7
  sanic_api/config/__init__.py,sha256=DVqXHMXANl_xUwBsLVYisr7ZPdX2ubA2_WH3GUZC-Bs,80
8
- sanic_api/config/setting.py,sha256=K4Z9oUHe4BN0tzJltmlRF5myPDHcIq8fQ0xgK19s3iw,3156
8
+ sanic_api/config/setting.py,sha256=AckX9cpJiIGVEN95mm2hdN_btsUxaidcvhWcoRno5jY,3237
9
9
  sanic_api/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  sanic_api/logger/config.py,sha256=5C-kYrE13_cgw7vNxBwBLi4F8BijHakOKs6YSzxsEMA,3031
11
- sanic_api/logger/extension.py,sha256=xj8DjGW3jN2M7MTu4mk65H1Qs-j5VwvgO0LGahoeQRU,4108
11
+ sanic_api/logger/extension.py,sha256=A6h3YijlB5VtMshiNJnOLs1nZ7bp6qt1dk31D-QVIfM,4371
12
12
  sanic_api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  sanic_api/openapi/extension.py,sha256=HCrcEgrj63FXOhx6TJyJDaee6mDuVnuSMA5EtdYUVjc,1009
14
14
  sanic_api/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  sanic_api/utils/enum.py,sha256=JGFh8o8kovcR4LF3ekuWJIiZINQspfeYrvVhmFvYK-I,1240
16
- sanic_api-0.4.1.dist-info/METADATA,sha256=U96UbCypOmruuQ_fwmn-lzxFl9RQrciTQD4eiLqfSYs,4285
17
- sanic_api-0.4.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
18
- sanic_api-0.4.1.dist-info/licenses/LICENSE.txt,sha256=T20w-F8AfuFO9CHy2mSk_An6T9eV4X4rGA01i-gp4M4,1090
19
- sanic_api-0.4.1.dist-info/RECORD,,
16
+ sanic_api-0.5.0.dist-info/METADATA,sha256=EeHsjvNDerWRYynvpNurN0EN2E3VWDRHLh7exk0tcuo,4336
17
+ sanic_api-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
18
+ sanic_api-0.5.0.dist-info/entry_points.txt,sha256=PZcvOIZEHPvUeySs8R78X0mAxDM_EQGfpdqExppTiIM,45
19
+ sanic_api-0.5.0.dist-info/licenses/LICENSE.txt,sha256=T20w-F8AfuFO9CHy2mSk_An6T9eV4X4rGA01i-gp4M4,1090
20
+ sanic_api-0.5.0.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ sanic-api = sanic_api:main