File: C:/Users/fred/anaconda3/Lib/site-packages/spyder/plugins/completion/providers/kite/decorators.py
# -*- coding: utf-8 -*-
# Copyright © Spyder Project Contributors
# Licensed under the terms of the MIT License
# (see spyder/__init__.py for details)
"""Kite client dispatcher decorators."""
import functools
def send_request(req=None, method=None):
"""Call function req and then send its results via HTTP."""
if req is None:
return functools.partial(send_request, method=method)
@functools.wraps(req)
def wrapper(self, *args, **kwargs):
url_params = {}
params = req(self, *args, **kwargs)
if isinstance(params, tuple):
params, url_params = params
response = self.send(method, params, url_params)
return response
wrapper._sends = method
return wrapper
def class_register(cls):
"""Class decorator that maps Kite HTTP method names to class methods."""
cls.handler_registry = {}
cls.sender_registry = {}
for method_name in dir(cls):
method = getattr(cls, method_name)
if hasattr(method, '_handle'):
cls.handler_registry.update({method._handle: method_name})
if hasattr(method, '_sends'):
cls.sender_registry.update({method._sends: method_name})
return cls
def handles(method_name):
"""Assign a Kite HTTP method name to a python handler."""
def wrapper(func):
func._handle = method_name
return func
return wrapper