'Create an OAuth 1 client.
:param client_key: Client key (consumer key), mandatory.
:param resource_owner_key: Resource owner key (oauth token).
:param resource_owner_secret: Resource owner secret (oauth token secret).
:param callback_uri: Callback used when obtaining request token.
:param signature_method: SIGNATURE_HMAC, SIGNATURE_RSA or SIGNATURE_PLAINTEXT.
:param signature_type: SIGNATURE_TYPE_AUTH_HEADER (default),
SIGNATURE_TYPE_QUERY or SIGNATURE_TYPE_BODY
depending on where you want to embed the oauth
credentials.
:param rsa_key: RSA key used with SIGNATURE_RSA.
:param verifier: Verifier used when obtaining an access token.
:param realm: Realm (scope) to which access is being requested.
:param encoding: If you provide non-unicode input you may use this
to have oauthlib automatically convert.
:param decoding: If you wish that the returned uri, headers and body
from sign be encoded back from unicode, then set
decoding to your preferred encoding, i.e. utf-8.
:param nonce: Use this nonce instead of generating one. (Mainly for testing)
:param timestamp: Use this timestamp instead of using current. (Mainly for testing)'

def __init__(self, client_key, client_secret=None, resource_owner_key=None, resource_owner_secret=None, callback_uri=None, signature_method=SIGNATURE_HMAC, signature_type=SIGNATURE_TYPE_AUTH_HEADER, rsa_key=None, verifier=None, realm=None, encoding=u'utf-8', decoding=None, nonce=None, timestamp=None):

    encode = (lambda x: (to_unicode(x, encoding) if encoding else x))
    self.client_key = encode(client_key)
    self.client_secret = encode(client_secret)
    self.resource_owner_key = encode(resource_owner_key)
    self.resource_owner_secret = encode(resource_owner_secret)
    self.signature_method = encode(signature_method)
    self.signature_type = encode(signature_type)
    self.callback_uri = encode(callback_uri)
    self.rsa_key = encode(rsa_key)
    self.verifier = encode(verifier)
    self.realm = encode(realm)
    self.encoding = encode(encoding)
    self.decoding = encode(decoding)
    self.nonce = encode(nonce)
    self.timestamp = encode(timestamp)
