1. Marcin Kasperski
  2. mercurial_keyring
  3. Issues
Issue #23 wontfix

probs in opensuse 12.1

Gurce Isikyildiz
created an issue

Hi, I've experienced a problem with pushing via the keying when running in opensuse 12.1. In the past, I've had this keyring extension working in opensuse 11.4, so I suspect something has emerged in this newer os version causing this. Here is the exception I see:

searching for changes
http authorization required
realm: Mecurial Repo
user: gurcei (fixed in .hg/hgrc)
ERROR:dbus.proxies:Introspect error on :1.222:/org/freedesktop/secrets/aliases/default: dbus.exceptions.DBusException: org.freedesktop.Secret.Error.NoSuchObject: The '/org/freedesktop/secrets/aliases/default' object does not exist
ERROR:dbus.connection:Unable to set arguments ({'org.freedesktop.Secret.Item.Label': u'gurcei@@http://rapiddev/hg @ Mercurial', 'org.freedesktop.Secret.Item.Attributes': {'username': u'gurcei@@http://rapiddev/hg', 'service': u'Mercurial'}}, dbus.Struct((dbus.ObjectPath('/org/freedesktop/secrets/session/s11'), '', dbus.ByteArray('xxxxx'), 'application/octet-stream'), signature=None), True) according to signature None: <type 'exceptions.TypeError'>: Expected a string or unicode object
** Unknown exception encountered with possibly-broken third-party extension mercurial_keyring
** which supports versions unknown of Mercurial.
** Please disable mercurial_keyring and try your action again.
** If that fixes the bug please report it to the extension author.
** Python 2.7.2 (default, Aug 19 2011, 20:41:43) [GCC]
** Mercurial Distributed SCM (version 2.4.1)
** Extensions loaded: hgk, mercurial_keyring
Traceback (most recent call last):
  File "/usr/bin/hg", line 38, in <module>
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 28, in run
    sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 65, in dispatch
    return _runcatch(req)
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 88, in _runcatch
    return _dispatch(req)
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 741, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 514, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 831, in _runcommand
    return checkargs()
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 802, in checkargs
    return cmdfunc()
  File "/usr/lib/python2.7/site-packages/mercurial/dispatch.py", line 738, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/python2.7/site-packages/mercurial/util.py", line 472, in check
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/mercurial/commands.py", line 4751, in push
  File "/usr/lib/python2.7/site-packages/mercurial/localrepo.py", line 1910, in push
    ret = remote.unbundle(cg, remoteheads, 'push')
  File "/usr/lib/python2.7/site-packages/mercurial/wireproto.py", line 307, in unbundle
    ret, output = self._callpush("unbundle", cg, heads=heads)
  File "/usr/lib/python2.7/site-packages/mercurial/httppeer.py", line 200, in _callpush
    r = self._call(cmd, data=fp, headers=headers, **args)
  File "/usr/lib/python2.7/site-packages/mercurial/httppeer.py", line 170, in _call
    fp = self._callstream(cmd, **args)
  File "/usr/lib/python2.7/site-packages/mercurial/httppeer.py", line 118, in _callstream
    resp = self.urlopener.open(req)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 432, in error
    result = self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 884, in http_error_401
    url, req, headers)
  File "/usr/lib/python2.7/site-packages/mercurial/url.py", line 431, in http_error_auth_reqed
    self, auth_header, host, req, headers)
  File "/usr/local/lib/python2.7/site-packages/mercurial_keyring-0.5.4-py2.7.egg/mercurial_keyring.py", line 363, in basic_http_error_auth_reqed
    return basic_http_error_auth_reqed.orig(self, authreq, host, req, headers)
  File "/usr/lib/python2.7/urllib2.py", line 859, in http_error_auth_reqed
    response = self.retry_http_basic_auth(host, req, realm)
  File "/usr/lib/python2.7/urllib2.py", line 865, in retry_http_basic_auth
    user, pw = self.passwd.find_user_password(realm, host)
  File "/usr/local/lib/python2.7/site-packages/mercurial_keyring-0.5.4-py2.7.egg/mercurial_keyring.py", line 357, in find_user_password
    return self._pwd_handler.find_auth(self, realm, authuri, req)
  File "/usr/local/lib/python2.7/site-packages/mercurial_keyring-0.5.4-py2.7.egg/mercurial_keyring.py", line 242, in find_auth
    password_store.set_http_password(keyring_url, user, pwd)
  File "/usr/local/lib/python2.7/site-packages/mercurial_keyring-0.5.4-py2.7.egg/mercurial_keyring.py", line 95, in set_http_password
  File "/usr/local/lib/python2.7/site-packages/keyring-1.2.2-py2.7.egg/keyring/core.py", line 42, in set_password
    _keyring_backend.set_password(service_name, username, password)
  File "/usr/local/lib/python2.7/site-packages/keyring-1.2.2-py2.7.egg/keyring/backends/SecretService.py", line 107, in set_password
    item, prompt = self.collection.CreateItem(properties, secret, True)
  File "/usr/lib/python2.7/site-packages/dbus/proxies.py", line 68, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib/python2.7/site-packages/dbus/proxies.py", line 140, in __call__
  File "/usr/lib/python2.7/site-packages/dbus/connection.py", line 620, in call_blocking
    message.append(signature=signature, *args)
TypeError: Expected a string or unicode object

Comments (3)

  1. Marcin Kasperski repo owner

    This is a problem in keyring library (or rather one of its backends), not in my extension. As you can see from the traceback above, one of keyring backends tries using dbus, and fails for some reason (likely some API mismatch).

    You can try reporting this to keyring developers.

  2. Log in to comment