mirror of
https://github.com/clearml/clearml-server
synced 2025-06-26 23:15:47 +00:00
Initial commit
This commit is contained in:
52
server/service_repo/__init__.py
Normal file
52
server/service_repo/__init__.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from typing import Text, Sequence, Callable, Union
|
||||
|
||||
from funcsigs import signature
|
||||
from jsonmodels import models
|
||||
|
||||
from .apicall import APICall, APICallResult
|
||||
from .endpoint import EndpointFunc, Endpoint
|
||||
from .service_repo import ServiceRepo
|
||||
|
||||
|
||||
__all__ = ["endpoint"]
|
||||
|
||||
|
||||
LegacyEndpointFunc = Callable[[APICall], None]
|
||||
|
||||
|
||||
def endpoint(
|
||||
name: Text,
|
||||
min_version: Text = "1.0",
|
||||
required_fields: Sequence[Text] = None,
|
||||
request_data_model: models.Base = None,
|
||||
response_data_model: models.Base = None,
|
||||
validate_schema=False,
|
||||
):
|
||||
""" Endpoint decorator, used to declare a method as an endpoint handler """
|
||||
|
||||
def decorator(f: Union[EndpointFunc, LegacyEndpointFunc]) -> EndpointFunc:
|
||||
# Backwards compatibility: support endpoints with both old-style signature (call) and new-style signature
|
||||
# (call, company, request_model)
|
||||
func = f
|
||||
if len(signature(f).parameters) == 1:
|
||||
# old-style
|
||||
def adapter(call, *_, **__):
|
||||
return f(call)
|
||||
|
||||
func = adapter
|
||||
|
||||
ServiceRepo.register(
|
||||
Endpoint(
|
||||
name=name,
|
||||
func=func,
|
||||
min_version=min_version,
|
||||
required_fields=required_fields,
|
||||
request_data_model=request_data_model,
|
||||
response_data_model=response_data_model,
|
||||
validate_schema=validate_schema,
|
||||
)
|
||||
)
|
||||
|
||||
return func
|
||||
|
||||
return decorator
|
||||
Reference in New Issue
Block a user