Source code for poast.openapi3.client.config

"""
Base class for poast OpenAPI 3.0 client configs.
"""

import copy
import requests


[docs]class ClientConfig: """ Configuration object used to customize OpenApiClient creation. Attributes: logger (logging.Logger): optional logger client created using this config session_cls (type): a requests.Session-like class used to create HTTP sessions request_cls (type): a requests.Request-like class used to create HTTP requests headers (dict): a list of headers common to all requests for client created from this config cookies (dict): a list of cookies common to all requests for client created from this config Notes: - headers and cookies are copied via the `copy` module! """ __slots__ = ( 'logger', 'session_cls', 'request_cls', 'headers', 'cookies', )
[docs] def __init__(self, logger=None, session_cls=None, request_cls=None, headers: dict = None, cookies: dict = None): """ Utility class to package up client configuration for re-use across multiple clients. NOTE: headers and cookies are copied via the `copy` module! """ self.logger = logger if session_cls is None: session_cls = requests.Session self.session_cls = requests.Session if request_cls is None: request_cls = requests.Request self.request_cls = request_cls if headers is None: self.headers = {} else: self.headers = copy.copy(headers) if cookies is None: self.cookies = {} else: self.cookies = copy.copy(cookies) return
[docs] def __setattr__(self, name: str, value): """ Prevent anything but logger from being set to None. """ if (name != 'logger') and (value is None): raise TypeError( f'{self.__class__.__qualname__}.{name} cannot be None') return super().__setattr__(name, value)