python类fromkeys()的实例源码

tunein.py 文件源码 项目:AlexaPi 作者: alexa-pi 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def parse_stream_url(self, url):
        logger.debug('Extracting URIs from %s', url)
        extension = urlparse(url).path[-4:]
        if extension in ['.mp3', '.wma']:
            logger.debug('Got %s', url)
            return [url]  # Catch these easy ones
        results = []
        playlist, content_type = self._get_playlist(url)
        if playlist:
            parser = find_playlist_parser(extension, content_type)
            if parser:
                playlist_data = StringIO.StringIO(playlist)
                try:
                    results = [u for u in parser(playlist_data)
                               if u and u != url]
                except Exception as exp:   # pylint: disable=broad-except
                    logger.error('TuneIn playlist parsing failed %s', exp)
                if not results:
                    logger.debug('Parsing failure, '
                                 'malformed playlist: %s', playlist)
        elif content_type:
            results = [url]
        logger.debug('Got %s', results)
        return list(OrderedDict.fromkeys(results))
forms.py 文件源码 项目:nrp 作者: django-rea 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def __init__(self, agent, pattern=None, *args, **kwargs): #agent is posting agent
        super(WorkTodoForm, self).__init__(*args, **kwargs)
        contexts = agent.related_contexts()
        self.fields["context_agent"].choices = list(set([(ct.id, ct) for ct in contexts]))
        peeps = [agent,]
        from_agent_choices = [('', 'Unassigned'), (agent.id, agent),]
        #import pdb; pdb.set_trace()
        for context in contexts:
            if agent.is_manager_of(context):
                peeps.extend(context.task_assignment_candidates())
        if len(peeps) > 1:
            peeps = list(OrderedDict.fromkeys(peeps))
        from_agent_choices = [('', 'Unassigned')] + [(peep.id, peep) for peep in peeps]

        self.fields["from_agent"].choices = from_agent_choices
        #import pdb; pdb.set_trace()
        if pattern:
            self.pattern = pattern
            #self.fields["resource_type"].choices = [(rt.id, rt) for rt in pattern.todo_resource_types()]
            self.fields["resource_type"].queryset = pattern.todo_resource_types()
tests.py 文件源码 项目:midict 作者: ShenggaoZhu 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def test_fromkeys(self):
        for cls in [MIMapping, MIDict, FrozenMIDict]:
            for keys in [[], [1]]:
                for value in [None, 0]:
                    for names in [None, ['a', 'b']]:
                        d = cls.fromkeys(keys, value, names)
                        self.assertEqual(d.__class__, cls)
                        self.assertEqual(list(d.keys()), keys)
                        self.assertEqual(list(d.values()), [value for k in keys])
                        if keys:
                            if names is None:
                                names = ['index_1', 'index_2']
                            self.assertEqual(list(d.indices.keys()), names)

        with self.assertRaises(ValueError):
            MIMapping.fromkeys([1,2,3])
push_filter.py 文件源码 项目:MumiGiveP 作者: wabilin 项目源码 文件源码 阅读 14 收藏 0 点赞 0 评论 0
def filter_push_list(push_list, option):
    allowed_types = option['allowed_types']
    floor_limit = option['floor_limit']
    step = option['step']
    duplicate = option['duplicate']
    amount = option['amount']

    if floor_limit:
        push_list = push_list[:floor_limit]

    # step
    push_list = [v for i, v in enumerate(push_list) if (i+1) % step == 0]

    # push type
    push_list = [x for x in push_list if (x['push'] in allowed_types)]

    id_list = [x['id'] for x in push_list]

    if not duplicate:
        id_list = list(OrderedDict.fromkeys(id_list))

    if amount:
        id_list = id_list[:amount]

    return id_list
query.py 文件源码 项目:marvin 作者: sdss 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def _adjust_defaults(self):
        ''' Adjust the default parameters to include necessary parameters

        For any query involving DAP DB, always return the spaxel index
        TODO: change this to spaxel x and y

        TODO: change this entirely

        '''
        dapschema = ['dapdb' in c.class_.__table__.schema for c in self.queryparams]
        if any(dapschema):
            dapcols = ['spaxelprop.x', 'spaxelprop.y', 'bintype.name', 'template.name']
            self.defaultparams.extend(dapcols)
            self.params.extend(dapcols)
            self.params = list(OrderedDict.fromkeys(self.params))
            self._create_query_modelclasses()
            # qpdap = self.marvinform._param_form_lookup.mapToColumn(dapcols)
            # self.queryparams.extend(qpdap)
            # self.queryparams_order.extend([q.key for q in qpdap])
graph_utils.py 文件源码 项目:lemontree 作者: khshim 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def get_inputs_of_variables(variables):
    """
    This function returns required inputs for the (tensor variable) variable.
    The order of the inputs are toposorted.

    Parameters
    ----------
    variable: list
        a list of (tensor variable) to see.
        usally this is a theano function output list. (loss, accuracy, etc.)

    Returns
    -------
    list
        a list of required inputs to compute the variable.
    """
    # assert
    assert isinstance(variables, list), 'Variables should be a list of tensor variable(s).'
    assert all(isinstance(var, T.TensorVariable) for var in variables), 'All input should be a tensor variable.'

    # do
    variable_inputs = [var for var in graph.inputs(variables) if isinstance(var, T.TensorVariable)]
    variable_inputs = list(OrderedDict.fromkeys(variable_inputs))  # preserve order and make to list
    print('Required inputs are:', variable_inputs)
    return variable_inputs
test_hdf.py 文件源码 项目:deepcpg 作者: cangermueller 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def test_hnames_to_names():
    hnames = OrderedDict.fromkeys(['a', 'b'])
    names = hdf.hnames_to_names(hnames)
    assert names == ['a', 'b']

    hnames = OrderedDict()
    hnames['a'] = ['a1', 'a2']
    hnames['b'] = ['b1', 'b2']
    names = hdf.hnames_to_names(hnames)
    assert names == ['a/a1', 'a/a2', 'b/b1', 'b/b2']

    hnames = OrderedDict()
    hnames['a'] = 'a1'
    hnames['b'] = ['b1', 'b2']
    hnames['c'] = None
    names = hdf.hnames_to_names(hnames)
    assert names == ['a/a1', 'b/b1', 'b/b2', 'c']
interpreter.py 文件源码 项目:tsfc 作者: firedrakeproject 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def _evaluate_concatenate(e, self):
    """Concatenate nodes flatten and concatenate shapes."""
    ops = [self(o) for o in e.children]
    fids = tuple(OrderedDict.fromkeys(itertools.chain(*(o.fids for o in ops))))
    fshape = tuple(i.extent for i in fids)
    arrs = []
    for o in ops:
        # Create temporary with correct shape
        arr = numpy.empty(fshape + o.shape)
        # Broadcast for extra free indices
        arr[:] = o.broadcast(fids)
        # Flatten shape
        arr = arr.reshape(arr.shape[:arr.ndim-len(o.shape)] + (-1,))
        arrs.append(arr)
    arrs = numpy.concatenate(arrs, axis=-1)
    return Result(arrs, fids)
nova_compute_proxy.py 文件源码 项目:charm-nova-compute-proxy 作者: openstack 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def restart_on_change(restart_map, func):
    """Restart services using provided function based
       on configuration files changing"""
    def wrap(f):
        def wrapped_f(*args):
            checksums = {}
            for path in restart_map:
                checksums[path] = file_hash(path)
            f(*args)
            restarts = []
            for path in restart_map:
                if checksums[path] != file_hash(path):
                    restarts += restart_map[path]
            services_list = list(OrderedDict.fromkeys(restarts))
            for s_name in services_list:
                func(s_name)
        return wrapped_f
    return wrap
tunein.py 文件源码 项目:Alexa_MMDAgent 作者: jianmliu 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def parse_stream_url(self, url):
        logger.debug('Extracting URIs from %s', url)
        extension = urlparse.urlparse(url).path[-4:]
        if extension in ['.mp3', '.wma']:
            logger.debug('Got %s', url)
            return [url]  # Catch these easy ones
        results = []
        playlist, content_type = self._get_playlist(url)
        if playlist:
            parser = find_playlist_parser(extension, content_type)
            if parser:
                playlist_data = StringIO.StringIO(playlist)
                try:
                    results = [u for u in parser(playlist_data)
                               if u and u != url]
                except Exception as e:
                    logger.error('TuneIn playlist parsing failed %s' % e)
                if not results:
                    logger.debug('Parsing failure, '
                                 'malformed playlist: %s' % playlist)
        elif content_type:
            results = [url]
        logger.debug('Got %s', results)
        return list(OrderedDict.fromkeys(results))
merge_set.py 文件源码 项目:lgr-core 作者: icann 项目源码 文件源码 阅读 13 收藏 0 点赞 0 评论 0
def merge_version(lgr_set):
    """
    Merge versions from LGR set.

    :param lgr_set: The LGRs in the set
    :return: The merged version object
    """
    values = OrderedDict()
    comments = OrderedDict()
    for version in [lgr.metadata.version for lgr in lgr_set]:
        if not version:
            continue
        if version.value:
            values.update(OrderedDict.fromkeys([version.value]))
        if version.comment:
            comments.update(OrderedDict.fromkeys([version.comment]))

    return Version('|'.join(values.keys()), '|'.join(comments.keys()))
host.py 文件源码 项目:charm-plumgrid-gateway 作者: openstack 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-swift-proxy 作者: openstack 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-swift-proxy 作者: openstack 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
declarative.py 文件源码 项目:noscrapy 作者: hwms 项目源码 文件源码 阅读 13 收藏 0 点赞 0 评论 0
def __new__(cls, name, bases, classdict):
        self = super().__new__(cls, name, bases, dict(classdict))

        attrs_lists = [getattr(b, '__attrs__', ()) for b in bases]
        attrs_lists += [[a for a in classdict if not a.startswith('__')]]
        # use ordered dict like an ordered set
        self.__attrs__ = tuple(OrderedDict.fromkeys(chain.from_iterable(attrs_lists)))

        base_fields = {}
        for base in bases:
            for attr in getattr(base, '__fields__', ()):
                if attr not in base_fields:
                    base_fields[attr] = getattr(base, attr).clone(self)
        fields = {}
        for attr, value in list(classdict.items()):
            if attr.startswith('__'):
                continue
            if isinstance(value, Field):
                fields[attr] = value._setup(self, attr, base=base_fields.get(attr, NOTSET))
            elif attr in base_fields:
                fields[attr] = base_fields[attr].clone(self, default=value)

        for attr, base_field in base_fields.items():
            if attr not in fields:
                fields[attr] = base_field.clone(self)

        for attr, field in fields.items():
            for prop_name in ('fget', 'fset', 'fdel'):
                prop_value = getattr(field, prop_name)
                if isinstance(prop_value, FunctionType):
                    prop_value = prop_value.__name__
                if isinstance(prop_value, str):
                    prop_value = getattr(self, prop_value)
                    setattr(field, prop_name, prop_value)
            setattr(self, attr, field)

        self.__fields__ = tuple(a for a in self.__attrs__ if a in fields)
        return self
host.py 文件源码 项目:charm-heat 作者: openstack 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-heat 作者: openstack 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-keystone 作者: openstack 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-keystone 作者: openstack 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-keystone 作者: openstack 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-keystone 作者: openstack 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
host.py 文件源码 项目:charm-keystone 作者: openstack 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
tools.py 文件源码 项目:speechless 作者: JuliusKunze 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def distinct(sequence: List[E]) -> List[E]:
    return list(OrderedDict.fromkeys(sequence))
host.py 文件源码 项目:charm-nova-cloud-controller 作者: openstack 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def restart_on_change_helper(lambda_f, restart_map, stopstart=False,
                             restart_functions=None):
    """Helper function to perform the restart_on_change function.

    This is provided for decorators to restart services if files described
    in the restart_map have changed after an invocation of lambda_f().

    @param lambda_f: function to call.
    @param restart_map: {file: [service, ...]}
    @param stopstart: whether to stop, start or restart a service
    @param restart_functions: nonstandard functions to use to restart services
                              {svc: func, ...}
    @returns result of lambda_f()
    """
    if restart_functions is None:
        restart_functions = {}
    checksums = {path: path_hash(path) for path in restart_map}
    r = lambda_f()
    # create a list of lists of the services to restart
    restarts = [restart_map[path]
                for path in restart_map
                if path_hash(path) != checksums[path]]
    # create a flat list of ordered services without duplicates from lists
    services_list = list(OrderedDict.fromkeys(itertools.chain(*restarts)))
    if services_list:
        actions = ('stop', 'start') if stopstart else ('restart',)
        for service_name in services_list:
            if service_name in restart_functions:
                restart_functions[service_name](service_name)
            else:
                for action in actions:
                    service(action, service_name)
    return r
collections.py 文件源码 项目:ronin 作者: tliron 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def dedup(values):
    """
    Removes duplicate items from a list. Note that it does not change the original list.

    :param values: list
    :type values: list
    :returns: de-duped list
    :rtype: list
    """

    return list(OrderedDict.fromkeys(values))
dotmap.py 文件源码 项目:djangoStatusPanel 作者: okar1 项目源码 文件源码 阅读 13 收藏 0 点赞 0 评论 0
def fromkeys(cls, seq, value=None):
        d = DotMap()
        d._map = OrderedDict.fromkeys(seq, value)
        return d
tunein.py 文件源码 项目:AlexaPi 作者: alexa-pi 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def tune(self, station):
        logger.debug('Tuning station id %s', station['guide_id'])
        args = '&id=' + station['guide_id']
        stream_uris = []
        for stream in self._tunein('Tune.ashx', args):
            if 'url' in stream:
                stream_uris.append(stream['url'])
        if not stream_uris:
            logger.error('Failed to tune station id %s', station['guide_id'])
        return list(OrderedDict.fromkeys(stream_uris))
field.py 文件源码 项目:text 作者: pytorch 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def build_vocab(self, *args, **kwargs):
        """Construct the Vocab object for this field from one or more datasets.

        Arguments:
            Positional arguments: Dataset objects or other iterable data
                sources from which to construct the Vocab object that
                represents the set of possible values for this field. If
                a Dataset object is provided, all columns corresponding
                to this field are used; individual columns can also be
                provided directly.
            Remaining keyword arguments: Passed to the constructor of Vocab.
        """
        counter = Counter()
        sources = []
        for arg in args:
            if isinstance(arg, Dataset):
                sources += [getattr(arg, name) for name, field in
                            arg.fields.items() if field is self]
            else:
                sources.append(arg)
        for data in sources:
            for x in data:
                if not self.sequential:
                    x = [x]
                counter.update(x)
        specials = list(OrderedDict.fromkeys(
            tok for tok in [self.unk_token, self.pad_token, self.init_token,
                            self.eos_token]
            if tok is not None))
        self.vocab = self.vocab_cls(counter, specials=specials, **kwargs)
entity.py 文件源码 项目:api-retriever 作者: sbaltes 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def __init__(self, configuration, input_parameter_values):
        """
        To initialize an entity, a corresponding entity configuration together
        and values for the input parameter(s) are needed.
        :param configuration: an object of class EntityConfiguration
        :param input_parameter_values: A dictionary with values for the input parameters defined in the configuration.
        """

        # corresponding entity configuration
        self.configuration = configuration
        # parameters needed to identify entity (or for validation)
        self.input_parameters = OrderedDict.fromkeys(configuration.input_parameters)
        # parameters that should be retrieved using the API
        self.output_parameters = OrderedDict.fromkeys(configuration.output_parameter_mapping.keys())

        # set values for input parameters
        for parameter in configuration.input_parameters:
            if parameter in input_parameter_values:
                self.input_parameters[parameter] = input_parameter_values[parameter]
            else:
                raise IllegalArgumentError("Illegal input parameter: " + parameter)

        # get uri for this entity from uri template in the configuration
        uri_variable_values = {
            **self.input_parameters,
            "api_key": self.configuration.api_key
        }
        self.uri = self.configuration.uri_template.replace_variables(uri_variable_values)
database_operations.py 文件源码 项目:united-states-of-browsers 作者: kchawla-pi 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def yield_source_records(source_db_paths: Dict[Text, PathInfo],
                         source_fieldnames: Sequence[Text]
                         ) -> Generator[NamedTuple, None, None]:
    """ Returns a generator of named tuple which can yield a record across all database files.
    Accepts dict of profile names and their database filepaths; and inclusive list of fieldnames.

    source_db_paths: {Profile names: profile database filepaths}
    source_fieldnames: list of fieldnames inclusive of all the fieldnames across all database files.

    returns: Generator of namedtuple which can yield each record.
    """
    global DBRecord
    # Additional field to store last_visited_date field value converted from microsceonds to human usable format.
    # source_fieldnames.append('visited_on')  # will likely be moved to browser specific settings, when otjer browsers are added.
    DBRecord = namedtuple('DBRecord', source_fieldnames)
    incr = helpers.incrementer()
    source_records_template = odict.fromkeys(source_fieldnames, None)
    for profile_name, profile_db_path in source_db_paths.items():
        with sqlite3.connect(profile_db_path) as source_conn:
            source_conn.row_factory = sqlite3.Row
            try:
                for db_record_yielder in source_conn.execute("""SELECT * FROM moz_places WHERE title IS NOT NULL"""):
                    ''' Prevents adding additional keys, only updates keys/fields specified in source_fieldnames.
                    Prevents field mismatches among profiles, ex: favicon_url in Firefox exists in some profiles not in others.
                    '''
                    source_records_template = odict(
                                (key, dict(db_record_yielder).setdefault(key, None))
                                    for key in source_records_template)
                    # Couldn't figure out how to make AUTOINCREMENT PRIMARY KEY work in SQL, hence this serial# generator.
                    source_records_template['id'] = next(incr)
                    try:
                        source_records_template['last_visit_date_readable'] = dt.fromtimestamp(source_records_template['last_visit_date'] // 10**6).strftime('%x %X')
                    except TypeError:
                        pass
                    # OrderedDict converted to NamedTuple as tuples easily convert to SQL query bindings.
                    yield DBRecord(*source_records_template.values())
            except sqlite3.OperationalError:
                print(f'This browser profile does not seem to have any data: {profile_name}')


问题


面经


文章

微信
公众号

扫码关注公众号