libentry 1.28.5__py3-none-any.whl → 1.29__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.
libentry/mcp/service.py CHANGED
@@ -812,8 +812,11 @@ class Route:
812
812
 
813
813
  class FlaskServer(Flask):
814
814
 
815
- def __init__(self, service):
815
+ def __init__(self, service, options: Dict[str, Any]):
816
816
  super().__init__(__name__)
817
+ self.options = options
818
+ self.access_control_allow_origin = self.options.get("access_control_allow_origin")
819
+ self.access_control_allow_methods = self.options.get("access_control_allow_methods")
817
820
 
818
821
  self.service_routes = {}
819
822
  self.builtin_routes = {}
@@ -876,10 +879,20 @@ class FlaskServer(Flask):
876
879
  return routes
877
880
 
878
881
  def ok(self, body: Union[str, Iterable[str], None], mimetype: str):
879
- return self.response_class(body, status=200, mimetype=mimetype)
882
+ response = self.response_class(body, status=200, mimetype=mimetype)
883
+ if self.access_control_allow_origin:
884
+ response.headers["Access-Control-Allow-Origin"] = "*"
885
+ if self.access_control_allow_methods:
886
+ response.headers["Access-Control-Allow-Methods"] = "GET, POST"
887
+ return response
880
888
 
881
889
  def error(self, body: str, mimetype=MIME.plain.value):
882
- return self.response_class(body, status=500, mimetype=mimetype)
890
+ response = self.response_class(body, status=500, mimetype=mimetype)
891
+ if self.access_control_allow_origin:
892
+ response.headers["Access-Control-Allow-Origin"] = "*"
893
+ if self.access_control_allow_methods:
894
+ response.headers["Access-Control-Allow-Methods"] = "GET, POST"
895
+ return response
883
896
 
884
897
  @api.get("/")
885
898
  def index(self, name: str = None):
@@ -937,7 +950,7 @@ class GunicornApplication(BaseApplication):
937
950
  service = self._create_service(self.service_type, self.service_config)
938
951
  logger.info("Service initialized.")
939
952
 
940
- return FlaskServer(service)
953
+ return FlaskServer(service, self.options)
941
954
 
942
955
  @staticmethod
943
956
  def _create_service(service_type, service_config):
@@ -1014,6 +1027,21 @@ class RunServiceConfig(BaseModel):
1014
1027
  description="SSL certificate file.",
1015
1028
  default=None
1016
1029
  )
1030
+ access_control_allow_origin: Optional[str] = Field(
1031
+ title="Access control allow origin",
1032
+ description="Access control allow origin.",
1033
+ default="*"
1034
+ )
1035
+ access_control_allow_methods: Optional[str] = Field(
1036
+ title="Access control allow methods",
1037
+ description="Access control allow methods.",
1038
+ default="GET, POST"
1039
+ )
1040
+ name: Optional[str] = Field(
1041
+ title="服务实例名称",
1042
+ description="服务实例名称,会在进程命令行中显示。",
1043
+ default=None
1044
+ )
1017
1045
 
1018
1046
 
1019
1047
  def run_service(
@@ -1063,6 +1091,14 @@ def run_service(
1063
1091
  for name, value in kwargs.items():
1064
1092
  setattr(run_config, name, value)
1065
1093
 
1094
+ if run_config.name is None:
1095
+ name = service_type.__name__
1096
+ module = service_type.__module__
1097
+ if module != "builtins":
1098
+ name = f"{module}.{name}"
1099
+ run_config.name = name
1100
+ run_config.name = f"{run_config.name} ({run_config.host}:{run_config.port})"
1101
+
1066
1102
  logger.info("Starting gunicorn server.")
1067
1103
 
1068
1104
  def ssl_context(config, _default_ssl_context_factory):
@@ -1086,7 +1122,10 @@ def run_service(
1086
1122
  "keyfile": run_config.keyfile,
1087
1123
  "certfile": run_config.certfile,
1088
1124
  "worker_class": run_config.worker_class,
1089
- "ssl_context": ssl_context
1125
+ "ssl_context": ssl_context,
1126
+ "access_control_allow_origin": run_config.access_control_allow_origin,
1127
+ "access_control_allow_methods": run_config.access_control_allow_methods,
1128
+ "proc_name": run_config.name,
1090
1129
  }
1091
1130
  for name, value in options.items():
1092
1131
  logger.info(f"Option {name}: {value}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: libentry
3
- Version: 1.28.5
3
+ Version: 1.29
4
4
  Summary: Entries for experimental utilities.
5
5
  Home-page: https://github.com/XoriieInpottn/libentry
6
6
  Author: xi
@@ -13,7 +13,7 @@ libentry/utils.py,sha256=vCm6UyAlibnPOlPJHZO57u3TXhw5PZmGM5_vBAPUnB4,1981
13
13
  libentry/mcp/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
14
14
  libentry/mcp/api.py,sha256=hhveOjDYhWiEEq3C7wSAOdpbPn9JP1T1CW3QYWrLHa4,3679
15
15
  libentry/mcp/client.py,sha256=_O-O6OETwHidhiFmg7P01NIrVhHgEetwFeFfJNqRt6M,24899
16
- libentry/mcp/service.py,sha256=Zl031pZS-4wJjp0YG6825iDgcKNev8RdOANkWwO7WkU,40272
16
+ libentry/mcp/service.py,sha256=k7kDAEOq5kUQ1Jz9YsIBIPAage_Ub-jjkX59DzQznmE,42082
17
17
  libentry/mcp/types.py,sha256=aAoVO4jjqEvDzNneuZapmRYonLLnGsbcLoypVyRNNYg,12389
18
18
  libentry/service/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
19
19
  libentry/service/common.py,sha256=OVaW2afgKA6YqstJmtnprBCqQEUZEWotZ6tHavmJJeU,42
@@ -22,10 +22,10 @@ libentry/service/list.py,sha256=ElHWhTgShGOhaxMUEwVbMXos0NQKjHsODboiQ-3AMwE,1397
22
22
  libentry/service/running.py,sha256=FrPJoJX6wYxcHIysoatAxhW3LajCCm0Gx6l7__6sULQ,5105
23
23
  libentry/service/start.py,sha256=mZT7b9rVULvzy9GTZwxWnciCHgv9dbGN2JbxM60OMn4,1270
24
24
  libentry/service/stop.py,sha256=wOpwZgrEJ7QirntfvibGq-XsTC6b3ELhzRW2zezh-0s,1187
25
- libentry-1.28.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
26
- libentry-1.28.5.dist-info/METADATA,sha256=rhLcVPpUZwKrf8GvmtwGHFOLBxinwuVHd57oho_lpPE,1135
27
- libentry-1.28.5.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
28
- libentry-1.28.5.dist-info/entry_points.txt,sha256=1v_nLVDsjvVJp9SWhl4ef2zZrsLTBtFWgrYFgqvQBgc,61
29
- libentry-1.28.5.dist-info/top_level.txt,sha256=u2uF6-X5fn2Erf9PYXOg_6tntPqTpyT-yzUZrltEd6I,9
30
- libentry-1.28.5.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
31
- libentry-1.28.5.dist-info/RECORD,,
25
+ libentry-1.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
26
+ libentry-1.29.dist-info/METADATA,sha256=z588Zlo18mTULlQQLoeNEKpVVKONPW3EeAqzK2AP47Q,1133
27
+ libentry-1.29.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
28
+ libentry-1.29.dist-info/entry_points.txt,sha256=1v_nLVDsjvVJp9SWhl4ef2zZrsLTBtFWgrYFgqvQBgc,61
29
+ libentry-1.29.dist-info/top_level.txt,sha256=u2uF6-X5fn2Erf9PYXOg_6tntPqTpyT-yzUZrltEd6I,9
30
+ libentry-1.29.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
31
+ libentry-1.29.dist-info/RECORD,,