'Accepts additional keyword arguments:
:param store:
Any object which implements
:class:`openid.store.interface.OpenIDStore`
of the `python-openid`_ library.
:param bool use_realm:
Whether to use `OpenID realm
<http://openid.net/specs/openid-authentication-2_0-12.html#realms>`_
If ``True`` the realm HTML document will be accessible at
``{current url}?{realm_param}={realm_param}``
e.g. ``http://example.com/path?realm=realm``.
:param str realm_body:
Contents of the HTML body tag of the realm.
:param str realm_param:
Name of the query parameter to be used to serve the realm.
:param str xrds_param:
The name of the query parameter to be used to serve the
`XRDS document
<http://openid.net/specs/openid-authentication-2_0-12.html#XRDS_Sample>`_.
:param list sreg:
List of strings of optional
`SREG
<http://openid.net/specs/openid-simple-registration-extension-1_0.html>`_
fields.
Default = :attr:`OpenID.SREG`.
:param list sreg_required:
List of strings of required
`SREG
<http://openid.net/specs/openid-simple-registration-extension-1_0.html>`_
fields.
Default = ``[]``.
:param list ax:
List of strings of optional
`AX
<http://openid.net/specs/openid-attribute-exchange-1_0.html>`_
schemas.
Default = :attr:`OpenID.AX`.
:param list ax_required:
List of strings of required
`AX
<http://openid.net/specs/openid-attribute-exchange-1_0.html>`_
schemas.
Default = :attr:`OpenID.AX_REQUIRED`.
:param list pape:
of requested
`PAPE
<http://openid.net/specs/openid-provider-authentication-policy-extension-1_0.html>`_
policies.
Default = :attr:`OpenID.PAPE`.
As well as those inherited from :class:`.AuthenticationProvider`
constructor.'

def __init__(self, *args, **kwargs):

    super(OpenID, self).__init__(*args, **kwargs)
    self.store = self._kwarg(kwargs, 'store', SessionOpenIDStore(self.session))
    self.use_realm = self._kwarg(kwargs, 'use_realm', True)
    self.realm_body = self._kwarg(kwargs, 'realm_body', '')
    self.realm_param = self._kwarg(kwargs, 'realm_param', 'realm')
    self.xrds_param = self._kwarg(kwargs, 'xrds_param', 'xrds')
    self.sreg = self._kwarg(kwargs, 'sreg', self.SREG)
    self.sreg_required = self._kwarg(kwargs, 'sreg_required', [])
    self.ax = self._kwarg(kwargs, 'ax', self.AX)
    self.ax_required = self._kwarg(kwargs, 'ax_required', self.AX_REQUIRED)
    for i in self.ax_required:
        if (i not in self.ax):
            self.ax.append(i)
    self.pape = self._kwarg(kwargs, 'pape', self.PAPE)
