view mercurial/pushkey.py @ 14616:64dfbe576455

sslutil: Restore missing imports of socket and httplib to sslutil Two imports were omitted in the restructure of the code creating sslutil.py, socket and httplib are required when the 'ssl' module cannot be imported, restoring these imports allows mercurial to run on python2.4+2.5.
author Stephen Thorne <stephen@thorne.id.au>
date Tue, 14 Jun 2011 13:31:32 +1000
parents 689bf32b3bbd
children 79cc89de5be1
line wrap: on
line source

# pushkey.py - dispatching for pushing and pulling keys
#
# Copyright 2010 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

import bookmarks

def _nslist(repo):
    n = {}
    for k in _namespaces:
        n[k] = ""
    return n

_namespaces = {"namespaces": (lambda *x: False, _nslist),
               "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks)}

def register(namespace, pushkey, listkeys):
    _namespaces[namespace] = (pushkey, listkeys)

def _get(namespace):
    return _namespaces.get(namespace, (lambda *x: False, lambda *x: {}))

def push(repo, namespace, key, old, new):
    '''should succeed iff value was old'''
    pk = _get(namespace)[0]
    return pk(repo, key, old, new)

def list(repo, namespace):
    '''return a dict'''
    lk = _get(namespace)[1]
    return lk(repo)