Module brevettiai.io.credentials
Expand source code
import logging
from abc import ABC, abstractmethod
from typing import List
from dataclasses import dataclass, field
log = logging.getLogger(__name__)
class LoginError(Exception):
    pass
class Credentials(ABC):
    """
    Abstract class for credential managers
    """
    @abstractmethod
    def get_credentials(self, resource_id, resource_type="dataset", mode="r"):
        pass
    @abstractmethod
    def set_credentials(self, type, user, secret, **kwargs):
        pass
@dataclass
class CredentialsChain(Credentials):
    """
    Credentials chain grouping a number of credentials into one trying all of them in order
    """
    chain: List[Credentials] = field(default_factory=list)
    def get_credentials(self, resource_id, resource_type="dataset", mode="r"):
        if not self.chain:
            raise LoginError("Credentials chain empty")
        exceptions = []
        for credentials in self.chain:
            try:
                return credentials.get_credentials(resource_id, resource_type, mode)
            except LoginError as ex:
                exceptions.append(ex)
        raise LoginError(f"Error logging in with credentials chain", exceptions)
    def set_credentials(self, type, user, secret, **kwargs):
        for cred in self.chain:
            cred.set_credentials(type, user, secret, **kwargs)
Classes
class Credentials- 
Abstract class for credential managers
Expand source code
class Credentials(ABC): """ Abstract class for credential managers """ @abstractmethod def get_credentials(self, resource_id, resource_type="dataset", mode="r"): pass @abstractmethod def set_credentials(self, type, user, secret, **kwargs): passAncestors
- abc.ABC
 
Subclasses
- AWSConfigCredentials
 - SagemakerCredentials
 - CredentialsChain
 - JobCredentials
 - PlatformDatasetCredentials
 
Methods
def get_credentials(self, resource_id, resource_type='dataset', mode='r')- 
Expand source code
@abstractmethod def get_credentials(self, resource_id, resource_type="dataset", mode="r"): pass def set_credentials(self, type, user, secret, **kwargs)- 
Expand source code
@abstractmethod def set_credentials(self, type, user, secret, **kwargs): pass 
 class CredentialsChain (chain: List[Credentials] = <factory>)- 
Credentials chain grouping a number of credentials into one trying all of them in order
Expand source code
class CredentialsChain(Credentials): """ Credentials chain grouping a number of credentials into one trying all of them in order """ chain: List[Credentials] = field(default_factory=list) def get_credentials(self, resource_id, resource_type="dataset", mode="r"): if not self.chain: raise LoginError("Credentials chain empty") exceptions = [] for credentials in self.chain: try: return credentials.get_credentials(resource_id, resource_type, mode) except LoginError as ex: exceptions.append(ex) raise LoginError(f"Error logging in with credentials chain", exceptions) def set_credentials(self, type, user, secret, **kwargs): for cred in self.chain: cred.set_credentials(type, user, secret, **kwargs)Ancestors
- Credentials
 - abc.ABC
 
Subclasses
Class variables
var chain : List[Credentials]
Methods
def get_credentials(self, resource_id, resource_type='dataset', mode='r')- 
Expand source code
def get_credentials(self, resource_id, resource_type="dataset", mode="r"): if not self.chain: raise LoginError("Credentials chain empty") exceptions = [] for credentials in self.chain: try: return credentials.get_credentials(resource_id, resource_type, mode) except LoginError as ex: exceptions.append(ex) raise LoginError(f"Error logging in with credentials chain", exceptions) def set_credentials(self, type, user, secret, **kwargs)- 
Expand source code
def set_credentials(self, type, user, secret, **kwargs): for cred in self.chain: cred.set_credentials(type, user, secret, **kwargs) 
 class LoginError (*args, **kwargs)- 
Common base class for all non-exit exceptions.
Expand source code
class LoginError(Exception): passAncestors
- builtins.Exception
 - builtins.BaseException