'Constructor.
Args:
email: An optional string of the user\'s email address. It defaults to
the current user\'s email address.
federated_identity: federated identity of user. It defaults to the current
user\'s federated identity.
federated_provider: federated provider url of user.
Raises:
UserNotFoundError: Raised if the user is not logged in and both email
and federated identity are empty.'

def __init__(self, email=None, _auth_domain=None, _user_id=None, federated_identity=None, federated_provider=None, _strict_mode=True):

    if (_auth_domain is None):
        _auth_domain = os.environ.get('AUTH_DOMAIN')
    assert _auth_domain
    if ((email is None) and (federated_identity is None)):
        email = os.environ.get('USER_EMAIL', email)
        _user_id = os.environ.get('USER_ID', _user_id)
        federated_identity = os.environ.get('FEDERATED_IDENTITY', federated_identity)
        federated_provider = os.environ.get('FEDERATED_PROVIDER', federated_provider)
    if (email is None):
        email = ''
    if ((not email) and (not federated_identity) and _strict_mode):
        raise UserNotFoundError
    self.__email = email
    self.__federated_identity = federated_identity
    self.__federated_provider = federated_provider
    self.__auth_domain = _auth_domain
    self.__user_id = (_user_id or None)
