コード例 #1
0
ファイル: bst_test.py プロジェクト: KUR-creative/ads-final
def gen_range_query2d_data(draw):
    global MAX_LEN
    max_key = 2147483647 #2**31
    
    ixys = draw(st.lists(
        st.tuples(
            st.integers(min_value=1, max_value=MAX_LEN),
            st.integers(min_value=1, max_value=max_key),
            st.integers(min_value=1, max_value=max_key),
        ),
        min_size=2, max_size=MAX_LEN,
        unique_by=lambda ixy:ixy[0]
    ))
    
    nt_ixys = F.lmap(tup(Ixy), ixys)
    # min/max x
    max_x_ = max(map(prop('x'),nt_ixys))
    max_xv = min(max_x_ + max_x_ // 2, max_key)
    min_x_ = min(map(prop('x'),nt_ixys))
    min_xv = max(min_x_ - min_x_ // 2, 1)
    min_x, max_x = sorted([
        draw(st.integers(
            min_value=min_xv, max_value=max_xv)),
        draw(st.integers(
            min_value=min_xv, max_value=max_xv))
    ])
    # min/max y
    max_y_ = max(map(prop('y'),nt_ixys))
    max_yv = min(max_y_ + max_y_ // 2, max_key)
    min_y_ = min(map(prop('y'),nt_ixys))
    min_yv = max(min_y_ - min_y_ // 2, 1)
    min_y, max_y = sorted([
        draw(st.integers(
            min_value=min_yv, max_value=max_yv)),
        draw(st.integers(
            min_value=min_yv, max_value=max_yv))
    ])
    
    def included(ixy):
        return(min_x <= ixy.x <= max_x
           and min_y <= ixy.y <= max_y)
    #def excluded(ixy): return key(ixy) < min_key or max_key < key(ixy)
    includeds = go(
        filter(included,nt_ixys),
        F.partial(sorted, key=prop('x')),
        F.curry(F.lmap)(tuple))
    #excludeds = [tuple(ixy) for ixy in filter(excluded,nt_ixys)]
    
    ixy_map = F.zipdict(
        map(F.first, ixys), map(tup(Ixy), ixys))
    return dict(
        ixys=ixys, ixy_map=ixy_map,
        min_x=min_x, max_x=max_x,
        min_y=min_y, max_y=max_y,
        includeds=includeds
    )
コード例 #2
0
def compile_template(func):
    spec = inspect.getargspec(func)
    assert len(spec.args) == len(
        spec.defaults or []), "All template args should have AST classes"

    compiler = TemplateCompiler(zipdict(spec.args, spec.defaults or []))
    template = map(compiler.visit, get_body_ast(func))
    # Strip Expr node wrapping single expression to let it match inside statement
    if len(template) == 1 and isinstance(template[0], ast.Expr):
        return template[0].value
    return template
コード例 #3
0
ファイル: bst_test.py プロジェクト: KUR-creative/ads-final
def gen_ixys_mode_map(draw):
    ixys = draw(st.lists(
        st.tuples(
            st.integers(min_value=1, max_value=MAX_LEN),
            st.integers(min_value=1, max_value=2147483647),#2**31
            st.integers(min_value=1, max_value=2147483647),#2**31
        ),
        min_size=2, max_size=MAX_LEN,
        unique_by=lambda ixy:ixy[0]
    ))
    mode = random.choice('xy')
    ixy_map = F.zipdict(
        map(F.first, ixys), map(tup(Ixy), ixys))
    return dict(ixys=ixys, mode=mode, ixy_map=ixy_map)
コード例 #4
0
ファイル: bst_test.py プロジェクト: KUR-creative/ads-final
def gen_range_search_data(draw):
    global MAX_LEN
    max_key = 2147483647 #2**31
    
    mode = random.choice('xy')
    key = prop(mode)
    
    ixys = draw(st.lists(
        st.tuples(
            st.integers(min_value=1, max_value=MAX_LEN),
            st.integers(min_value=1, max_value=max_key),
            st.integers(min_value=1, max_value=max_key),
        ),
        min_size=2, max_size=MAX_LEN,
        unique_by=lambda ixy:ixy[0]
    ))
    
    nt_ixys = F.lmap(tup(Ixy), ixys)
    
    max_val_ = key(max(nt_ixys, key=key))
    max_val = min(max_val_ + max_val_ // 2, max_key)
    min_val_ = key(min(nt_ixys, key=key))
    min_val = max(min_val_ - min_val_ // 2, 1)
    
    min_key, max_key = sorted([
        draw(st.integers(
            min_value=min_val, max_value=max_val)),
        draw(st.integers(
            min_value=min_val, max_value=max_val))
    ])

    def included(ixy):
        return min_key <= key(ixy) <= max_key
    def excluded(ixy):
        return key(ixy) < min_key or max_key < key(ixy)
    includeds = [tuple(ixy) for ixy in 
        sorted(filter(included,nt_ixys), key=key)]
               #key=lambda ixy:(key(ixy), ixy[0]))]
    excludeds = [tuple(ixy) for ixy in filter(excluded,nt_ixys)]
    
    ixy_map = F.zipdict(
        map(F.first, ixys), map(tup(Ixy), ixys))
    return dict(
        ixys=ixys, mode=mode, ixy_map=ixy_map,
        min_key=min_key, max_key=max_key,
        includeds=includeds, excludeds=excludeds
    )
コード例 #5
0
ファイル: rebind.py プロジェクト: Suor/rebind
def ast_eval(node):
    """
    Faster ast.literal_eval() with better error messages.
    Works only with nodes not strings.
    """
    if isinstance(node, ast.Num):
        return node.n
    elif isinstance(node, ast.Str):
        return node.s
    elif isinstance(node, ast.Name) and node.id in NAMED_CONSTS:
        return NAMED_CONSTS[node.id]
    elif isinstance(node, ast.Tuple):
        return tuple(ast_eval(n) for n in node.elts)
    elif isinstance(node, ast.List):
        return [ast_eval(n) for n in node.elts]
    elif isinstance(node, ast.Dict):
        return zipdict(ast_eval(node.keys), ast_eval(node.values))
    else:
        raise ValueError("Don't know how to eval %s" % node.__class__.__name__)
コード例 #6
0
ファイル: bst_test.py プロジェクト: KUR-creative/ads-final
def gen_bst_delete_data(draw):
    ixys = draw(st.lists(
        st.tuples(
            st.integers(min_value=1, max_value=MAX_LEN),
            st.integers(min_value=1, max_value=2**31),
            st.integers(min_value=1, max_value=2**31),
        ),
        min_size=1, max_size=MAX_LEN,
        unique_by=lambda ixy:ixy[0]
    ))

    ixy_idxes = F.lmap(F.first, ixys)
    ixy_map = F.zipdict(
        ixy_idxes, map(tup(Ixy), ixys))

    # if tuple, ixy. if int, delete index.
    # if +: ins, -: del
    cmd_idxes = ixy_idxes + [-i for i in ixy_idxes]
    random.shuffle(cmd_idxes)

    return dict(ixys=ixys, del_idxes=ixy_idxes, 
                ixy_map=ixy_map, cmd_idxes=cmd_idxes)
コード例 #7
0
ファイル: stream.py プロジェクト: carriercomm/streamio
def csvdictstream(filename, encoding="utf-8", fields=None, stripchars="\r\n"):
    """Stream every line in the given file interpreting each line as a dictionary of fields to items.

    :param filename: A ``str`` filename, A ``py._path.local.LocalPath`` instance or open ``file`` instnace.
    :type filename:  ``str``, ``py._path.local.LocalPath`` or ``file``.

    :param encoding: A ``str`` indicating the charset/encoding to use.
    :type encoding:  ``str``

    :param stripchars: An iterable of characters to strip from the surrounding line. ``line.strip(...)`` is used.
    :type stripchars: ``list``, ``tuple`` or ``str``

    This is a wrapper around ``csvstream`` where the stream is treated as dict of field(s) to item(s).
    """

    stream = csvstream(filename, encoding=encoding, stripchars=stripchars)

    if fields is None:
        fields = map(strip, next(stream))

    for values in stream:
        yield compact(zipdict(fields, values))
コード例 #8
0
ファイル: rebind.py プロジェクト: Suor/rebind
def get_defaults(func):
    func = unwrap(func)
    return zipdict(get_kwargnames(func), func.__defaults__ or ())
コード例 #9
0
def accumulate(data):
    dates, counts = zip(*sorted(data.items()))
    return zipdict(dates, sums(counts))
コード例 #10
0
def dashboard(request):
    keys = ('core.stats.tags', 'core.stats.serie_annotations', 'core.stats.sample_annotations',
            'core.graph')
    return {
        'stats': zipdict(keys, redis_client.mget(*keys))
    }
コード例 #11
0
ファイル: helpers.py プロジェクト: sshleifer/plasticc
def zip_to_series(a, b):
    assert len(a) == len(b)
    return pd.Series(funcy.zipdict(a, b))