def __init__(self, name, username, password, authoritative_source, auth_options=None):
if auth_options is None:<EOL><INDENT>auth_options = {}<EOL><DEDENT>BaseAuth.__init__(self, username, password, authoritative_source, name, auth_options)<EOL>self._logger.debug('<STR_LIT>')<EOL>try:<EOL><INDENT>self._db_conn = sqlite3.connect(self._cfg.get('<STR_LIT>' + self.auth_backend, '<STR_LIT>'), check_same_thread = False)<EOL>self._db_conn.row_factory = sqlite3.Row<EOL>self._db_curs = self._db_conn.cursor()<EOL><DEDENT>except sqlite3.Error as exc:<EOL><INDENT>self._logger.error('<STR_LIT>' % str(exc))<EOL>raise AuthError(str(exc))<EOL><DEDENT>
Constructor.

            Note that the instance variables not are set by the constructor but
            by the :func:`authenticate` method. Therefore, run the
            :func:`authenticate`-method before trying to access those
            variables!

            * `name` [string]
                Name of auth backend.
            * `username` [string]
                Username to authenticate as.
            * `password` [string]
                Password to authenticate with.
            * `authoritative_source` [string]
                Authoritative source of the query.
            * `auth_options` [dict]
                A dict which, if authenticated as a trusted user, can override
                `username` and `authoritative_source`.

            If the user database and tables are not found, they are created.