reyserver 1.1.38__py3-none-any.whl → 1.1.40__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.
reyserver/rbase.py CHANGED
@@ -9,12 +9,17 @@
9
9
  """
10
10
 
11
11
 
12
- from reykit.rbase import Base
12
+ from typing import Sequence
13
+ from inspect import iscoroutinefunction
14
+ from contextlib import asynccontextmanager
15
+ from fastapi import FastAPI
16
+ from reykit.rbase import CoroutineFunctionSimple, Base, is_iterable
13
17
 
14
18
 
15
19
  __all__ = (
16
20
  'ServerBase',
17
- 'ServerAPI'
21
+ 'ServerAPI',
22
+ 'generate_lifespan'
18
23
  )
19
24
 
20
25
 
@@ -28,3 +33,50 @@ class ServerAPI(ServerBase):
28
33
  """
29
34
  Server API type.
30
35
  """
36
+
37
+
38
+ def generate_lifespan(
39
+ before: CoroutineFunctionSimple | Sequence[CoroutineFunctionSimple] | None = None,
40
+ after: CoroutineFunctionSimple | Sequence[CoroutineFunctionSimple] | None = None,
41
+ ):
42
+ """
43
+ Generate function of lifespan manager.
44
+
45
+ Parameters
46
+ ----------
47
+ before : Execute before server start.
48
+ after : Execute after server end.
49
+ """
50
+
51
+ # Parameter.
52
+ if before is None:
53
+ before = ()
54
+ elif iscoroutinefunction(before):
55
+ before = (before,)
56
+ if after is None:
57
+ after = ()
58
+ elif iscoroutinefunction(after):
59
+ after = (after,)
60
+
61
+ # Define.
62
+ @asynccontextmanager
63
+ async def lifespan(app: FastAPI):
64
+ """
65
+ Server lifespan manager.
66
+
67
+ Parameters
68
+ ----------
69
+ app : Server APP.
70
+ """
71
+
72
+ # Before.
73
+ for task in before:
74
+ await task()
75
+ yield
76
+
77
+ # After.
78
+ for task in after:
79
+ await after()
80
+
81
+
82
+ return lifespan
reyserver/rdb.py ADDED
@@ -0,0 +1,11 @@
1
+ # !/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ @Time : 2025-10-07 18:03:06
6
+ @Author : Rey
7
+ @Contact : reyxbo@163.com
8
+ @Explain : Database methods.
9
+ """
10
+
11
+
reyserver/rserver.py CHANGED
@@ -10,14 +10,16 @@
10
10
 
11
11
 
12
12
  from typing import Literal
13
+ from inspect import iscoroutinefunction
13
14
  from collections.abc import Sequence, Callable, Coroutine
14
- from fastapi import FastAPI
15
+ from fastapi import FastAPI, Depends
15
16
  from fastapi.middleware.gzip import GZipMiddleware
16
17
  from fastapi.staticfiles import StaticFiles
17
18
  from uvicorn import run as uvicorn_run
19
+ from contextlib import asynccontextmanager
18
20
  from reykit.rbase import CoroutineFunctionSimple
19
21
 
20
- from .rbase import ServerBase
22
+ from .rbase import ServerBase, generate_lifespan
21
23
 
22
24
 
23
25
  __all__ = (
@@ -48,31 +50,43 @@ class Server(ServerBase):
48
50
  ----------
49
51
  public : Public directory.
50
52
  depend : Global api dependencies.
51
- before : Before
53
+ before : Execute before server start.
54
+ after : Execute after server end.
52
55
  """
53
56
 
54
57
  # Parameter.
55
58
  if type(ssl_cert) != type(ssl_key):
56
59
  raise
60
+ lifespan = generate_lifespan(before, after)
61
+ if iscoroutinefunction(depend):
62
+ depend = (depend,)
63
+ dependencies = [
64
+ Depends(depend)
65
+ for task in depend
66
+ ]
57
67
 
58
68
  # Build.
59
- self.app = FastAPI()
60
- # self.index = Folder(public) + 'index.html'
61
69
  self.ssl_cert = ssl_cert
62
70
  self.ssl_key = ssl_key
63
71
 
64
- ## Middleware.
65
- self.app.add_middleware(GZipMiddleware)
66
- # self.app.add_middleware(TrustedHostMiddleware)
67
- # self.app.add_middleware(HTTPSRedirectMiddleware)
72
+ ## App.
73
+ self.app = FastAPI(
74
+ dependencies=dependencies,
75
+ lifespan=lifespan
76
+ )
68
77
 
69
78
  ## Static.
70
79
  if public is not None:
71
80
  subapp = StaticFiles(directory=public, html=True)
72
81
  self.app.mount('/', subapp)
73
82
 
83
+ ## Middleware.
84
+ self.app.add_middleware(GZipMiddleware)
85
+ # self.app.add_middleware(TrustedHostMiddleware)
86
+ # self.app.add_middleware(HTTPSRedirectMiddleware)
87
+
74
88
 
75
- def run(self):
89
+ def run(self) -> None:
76
90
  """
77
91
  Run.
78
92
  """
@@ -85,23 +99,26 @@ class Server(ServerBase):
85
99
  )
86
100
 
87
101
 
88
- def add_api_all(self):
102
+ # def add_api_all(self) -> None:
103
+ # """
104
+ # Add all API.
105
+ # """
89
106
 
90
- self.add_api_all()
107
+ # self.add_api_all()
91
108
 
92
109
 
93
- def add_api_base(self):
110
+ # def add_api_base(self):
94
111
 
95
- # @self.app.get('/')
96
- # def index():
97
- # file_bytes = File(self.index).bytes
98
- # response = HTMLResponse(file_bytes)
99
- # return response
112
+ # # @self.app.get('/')
113
+ # # def index():
114
+ # # file_bytes = File(self.index).bytes
115
+ # # response = HTMLResponse(file_bytes)
116
+ # # return response
100
117
 
101
118
 
102
- @self.app.get('/test')
103
- def test():
104
- return {'message': 'test'}
119
+ # @self.app.get('/test')
120
+ # def test():
121
+ # return {'message': 'test'}
105
122
 
106
123
 
107
124
  def add_api_file(self): ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reyserver
3
- Version: 1.1.38
3
+ Version: 1.1.40
4
4
  Summary: Backend server method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reyserver/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -14,7 +14,11 @@ License: Copyright 2025 ReyXBo
14
14
  License-File: LICENSE
15
15
  Keywords: API,async,asynchronous,backend,rey,reyxbo,server
16
16
  Requires-Python: >=3.12
17
+ Requires-Dist: fastapi
18
+ Requires-Dist: python-multipart
19
+ Requires-Dist: reydb
17
20
  Requires-Dist: reykit
21
+ Requires-Dist: uvicorn[standard]
18
22
  Description-Content-Type: text/markdown
19
23
 
20
24
  # reyserver
@@ -0,0 +1,10 @@
1
+ reyserver/__init__.py,sha256=ZNzM6wBvBSXe1LgV40ZJ1WIAbejWNYGl8x22dmt8C60,289
2
+ reyserver/rall.py,sha256=F-vUJIf5DgP0FXI0pdTrEeEiMtN-g81_yTo4ibUL9xk,233
3
+ reyserver/rbase.py,sha256=EVLCkX2xdPNdPwkRnZ2ZSjM7kctnMoQ_FSlSNHSZt2E,1630
4
+ reyserver/rdb.py,sha256=dfM3alvIII_eDgSCYhGfmQH7kh6eYsDmz4DaprYy9c8,170
5
+ reyserver/rfile.py,sha256=P3i1wa2JYsgNFrm0pDCsDN_zFo_Xpv4XigePotVzn8s,8213
6
+ reyserver/rserver.py,sha256=e-AFB75511HTOf7XjWerCNq86-QEm_2C81psMrldxls,3085
7
+ reyserver-1.1.40.dist-info/METADATA,sha256=cI213JCteWEf_gqfUwYs1eWmLkk8lQ-vu29e5VdXQmw,1658
8
+ reyserver-1.1.40.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
9
+ reyserver-1.1.40.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
10
+ reyserver-1.1.40.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- reyserver/__init__.py,sha256=ZNzM6wBvBSXe1LgV40ZJ1WIAbejWNYGl8x22dmt8C60,289
2
- reyserver/rall.py,sha256=F-vUJIf5DgP0FXI0pdTrEeEiMtN-g81_yTo4ibUL9xk,233
3
- reyserver/rbase.py,sha256=TtCmqjofwKkE0vdOIc5WhWxbgAUd8pFgx26-VON11yA,397
4
- reyserver/rfile.py,sha256=P3i1wa2JYsgNFrm0pDCsDN_zFo_Xpv4XigePotVzn8s,8213
5
- reyserver/rserver.py,sha256=NyI9_evkZ2uGXajI75X8Paj18N1S2f9xUGgLGeQ_2ag,2546
6
- reyserver-1.1.38.dist-info/METADATA,sha256=CuZu-kkGUgw0qSvNpzMYVlhIhvF2QL7uG36GZuEn9qE,1549
7
- reyserver-1.1.38.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8
- reyserver-1.1.38.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
9
- reyserver-1.1.38.dist-info/RECORD,,