Esempio n. 1
0
def _gen(d, limit=20, count=False):
    """docstring for _gen"""
    ret = ['']
    strings = 0
    for i in d:
        if i[0] == 'in':
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'literal':
            ret = mappend(ret, chr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'any':
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'max_repeat':
            chars = filter(None, _gen(list(i[1][2]), limit))
            if i[1][1]+1 - i[1][0] >= limit:
                ran = range(i[1][0], i[1][0]+limit)
            else:
                ran = range(i[1][0], i[1][1]+1)
            if count:
                for i in ran:
                    strings += pow(len(chars), i)
            ret = prods(ret, ran, chars)
        elif i[0] == 'branch':
            subs = list(chain.from_iterable(_gen(list(x), limit) for x in i[1][1]))
            if count:
                strings = (strings or 1) * (len(subs) or 1)
            ret = comb(ret, subs)
        elif i[0] == 'subpattern':
            if count:
                strings = (strings or 1) * (sum(ggen([0], _gen, i[1][1], limit=limit, count=True)) or 1)
            ret = ggen(ret, _gen, i[1][1], limit=limit, count=False)
        # ignore ^ and $
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            subs = list(CATEGORIES['category_any'])
            subs.remove(chr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'assert':
            print i[1][1]
            continue
        else:
            print('[!] cannot handle expression ' + repr(i))

    if count:
        return strings

    return ret
Esempio n. 2
0
def _gen(d, limit=20, count=False):
    """docstring for _gen"""
    ret = ['']
    strings = 0
    for i in d:
        if i[0] == 'in':
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'literal':
            ret = mappend(ret, chr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'any':
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'max_repeat':
            chars = filter(None, _gen(list(i[1][2]), limit))
            if i[1][1]+1 - i[1][0] > limit:
                ran = range(i[1][0], i[1][0]+limit)
            else:
                ran = range(i[1][0], i[1][1]+1)
            if count:
                for i in ran:
                    strings += pow(len(chars), i)
            ret = prods(ret, ran, chars)
        elif i[0] == 'branch':
            subs = list(chain.from_iterable(_gen(list(x), limit) for x in i[1][1]))
            if count:
                strings = (strings or 1) * (len(subs) or 1)
            ret = comb(ret, subs)
        elif i[0] == 'subpattern':
            if count:
                strings = (strings or 1) * (sum(ggen([0], _gen, i[1][1], limit=limit, count=True)) or 1)
            ret = ggen(ret, _gen, i[1][1], limit=limit, count=False)
        # ignore ^ and $
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            subs = list(CATEGORIES['category_any'])
            subs.remove(chr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'assert':
            print i[1][1]
            continue
        else:
            print('[!] cannot handle expression ' + repr(i))

    if count:
        return strings

    return ret
Esempio n. 3
0
File: exrex.py Progetto: achew22/err
def _gen(d, limit=20, count=False):
    """docstring for _p"""
    ret = ['']
    params = []
    strings = 0
    for i in d:
        if i[0] == 'in':
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'literal':
            ret = mappend(ret, chr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'any':
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'max_repeat':
            chars = filter(None, _gen(list(i[1][2]), limit))
            if i[1][1]+1 - i[1][0] > limit:
                ran = range(i[1][0], i[1][0]+limit)
            else:
                ran = range(i[1][0], i[1][1]+1)
            if count:
                for i in ran:
                    strings += pow(len(chars), i)
            ret = prods(ret, ran, chars)
        elif i[0] == 'branch':
            subs = chain.from_iterable(_gen(list(x), limit) for x in i[1][1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'subpattern':
            l = i[1:]
            subs = list(chain.from_iterable(_gen(list(x[1]), limit) for x in l))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        else:
            print('[!] cannot handle expression "%r"' % i)

    if count:
        return strings

    return ret
Esempio n. 4
0
def _randone(d, limit=20):
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == 'in':
            ret += choice(_in(i[1]))
        elif i[0] == 'literal':
            ret += chr(i[1])
        elif i[0] == 'category':
            ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == 'any':
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == 'max_repeat':
            chars = filter(None, _gen(list(i[1][2]), limit))
            if i[1][1]+1 - i[1][0] >= limit:
                min,max = i[1][0], i[1][0]+limit
            else:
                min,max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += choice(chars)
        elif i[0] == 'branch':
            ret += choice(list(chain.from_iterable(_gen(list(x), limit) for x in i[1][1])))
        elif i[0] == 'subpattern':
            ret += _randone(i[1][1], limit)
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            c=list(CATEGORIES['category_any'])
            c.remove(chr(i[1]))
            ret += choice(c)
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
Esempio n. 5
0
def _randone(d, limit=20):
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == 'in':
            ret += choice(_in(i[1]))
        elif i[0] == 'literal':
            ret += chr(i[1])
        elif i[0] == 'category':
            ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == 'any':
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == 'max_repeat':
            chars = filter(None, _gen(list(i[1][2]), limit))
            if i[1][1]+1 - i[1][0] > limit:
                min,max = i[1][0], i[1][0]+limit
            else:
                min,max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += choice(chars)
        elif i[0] == 'branch':
            ret += choice(list(chain.from_iterable(_gen(list(x), limit) for x in i[1][1])))
        elif i[0] == 'subpattern':
            ret += _randone(i[1][1], limit)
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            c=list(CATEGORIES['category_any'])
            c.remove(chr(i[1]))
            ret += choice(c)
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
Esempio n. 6
0
def check_vector_field(m, n):
    test = moose.Neutral('/test')
    tabs = []
    for ii in range(m):
        comp = moose.Compartment('/test/comp_%d' % (ii), n=n)
        for jj in range(n):
            tab = moose.Table('/test/data_%d_%d' % (ii, jj))
            moose.connect(tab, 'requestOut', comp.vec[jj], 'getVm')
            tabs.append(tab)
    moose.setClock(0, 1e-3)
    moose.setClock(1, 1e-3)
    moose.setClock(2, 1e-3)
    moose.useClock(0, '/##[ISA=Compartment]', 'init')
    moose.useClock(1, '/##[ISA=Compartment]', 'process')
    moose.useClock(2, '/##[ISA=Table]', 'process')
    moose.reinit()
    moose.start(0.01)
    return tabs
Esempio n. 7
0
def check_vector_field(m, n):
    test = moose.Neutral('/test')
    tabs = []
    for ii in range(m):
        comp = moose.Compartment('/test/comp_%d' % (ii), n=n)
        for jj in range(n):
            tab = moose.Table('/test/data_%d_%d' % (ii, jj))
            moose.connect(tab, 'requestOut', comp.vec[jj], 'getVm')
            tabs.append(tab)
    moose.setClock(0, 1e-3)
    moose.setClock(1, 1e-3)
    moose.setClock(2, 1e-3)
    moose.useClock(0, '/##[ISA=Compartment]', 'init')
    moose.useClock(1, '/##[ISA=Compartment]', 'process')
    moose.useClock(2, '/##[ISA=Table]', 'process')
    moose.reinit()
    moose.start(0.01)
    return tabs
Esempio n. 8
0
def prods(orig, ran, items, limit, grouprefs):
    for o in orig:
        for r in ran:
            if r == 0:
                yield o
            else:
                ret = [o]
                for _ in range(r):
                    ret = ggen(ret, _gen, items, limit=limit, count=False, grouprefs=grouprefs)
                for i in ret:
                    yield i
Esempio n. 9
0
File: exrex.py Progetto: achew22/err
def _in(d):
    ret = []
    for i in d:
        if i[0] == 'range':
            ret.extend(map(chr, range(i[1][0], i[1][1]+1)))
        elif i[0] == 'literal':
            ret.append(chr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            ret.extend(subs)
    return ret
Esempio n. 10
0
def allocate_large_vecs(m, n):
    """Allocate m vecs with n elements each"""
    test = moose.Neutral('/test')
    ret = []
    for jj, mclass in zip(range(m), cycle(classes)):
        eval_str = 'moose.vec(path="%s/%s_%d", n=%d, dtype="%s")' % (
            test.path, mclass, jj, n, mclass)
        mobj = eval(eval_str)
        print('Created', mobj.path)
        ret.append(mobj)
    return ret
Esempio n. 11
0
File: exrex.py Progetto: crono/exrex
def prods(orig, ran, items, limit, grouprefs):
    for o in orig:
        for r in ran:
            if r == 0:
                yield o
            else:
                ret = [o]
                for _ in range(r):
                    ret = ggen(ret, _gen, items, limit=limit, count=False, grouprefs=grouprefs)
                for i in ret:
                    yield i
Esempio n. 12
0
def allocate_large_vecs(m, n):
    """Allocate m vecs with n elements each"""
    test = moose.Neutral('/test')
    ret = []
    for jj, mclass in zip(range(m), cycle(classes)):
        eval_str = 'moose.vec(path="%s/%s_%d", n=%d, dtype="%s")' % (test.path,
                                                                     mclass,
                                                                     jj,
                                                                     n,
                                                                     mclass)
        mobj = eval(eval_str)
        print('Created', mobj.path)
        ret.append(mobj)
    return ret
Esempio n. 13
0
def _randone(d, limit=20, grouprefs=None, args=None):
    if grouprefs is None:
        grouprefs = {}
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == sre_parse.IN:
            ret += choice(_in(i[1], args))
        elif i[0] == sre_parse.LITERAL:
            ret += unichr(i[1])
        elif i[0] == sre_parse.CATEGORY:
            if args and args.has(i[1]):
                ret += args.get_arg()
            else:
                ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == sre_parse.ANY:
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == sre_parse.MAX_REPEAT:
            if i[1][1] + 1 - i[1][0] >= limit:
                min, max = i[1][0], i[1][0] + limit
            else:
                min, max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += _randone(list(i[1][2]), limit, grouprefs, args)
        elif i[0] == sre_parse.BRANCH:
            ret += _randone(choice(i[1][1]), limit, grouprefs, args)
        elif i[0] == sre_parse.SUBPATTERN:
            subp = _randone(i[1][1], limit, grouprefs, args=args)
            if i[1][0]:
                grouprefs[i[1][0]] = subp
            ret += subp
        elif i[0] == sre_parse.AT:
            continue
        elif i[0] == sre_parse.NOT_LITERAL:
            c = list(CATEGORIES['category_any'])
            if unichr(i[1]) in c:
                c.remove(unichr(i[1]))
            ret += choice(c)
        elif i[0] == sre_parse.GROUPREF:
            ret += grouprefs[i[1]]
        elif i[0] == sre_parse.ASSERT:
            pass
        elif i[0] == sre_parse.ASSERT_NOT:
            pass
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
Esempio n. 14
0
def _randone(d, limit=20, grouprefs=None):
    if grouprefs is None:
        grouprefs = {}
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == sre_parse.IN:
            ret += choice(_in(i[1]))
        elif i[0] == sre_parse.LITERAL:
            ret += unichr(i[1])
        elif i[0] == sre_parse.CATEGORY:
            ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == sre_parse.ANY:
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == sre_parse.MAX_REPEAT or i[0] == sre_parse.MIN_REPEAT:
            if i[1][1] + 1 - i[1][0] >= limit:
                min, max = i[1][0], i[1][0] + limit - 1
            else:
                min, max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += _randone(list(i[1][2]), limit, grouprefs)
        elif i[0] == sre_parse.BRANCH:
            ret += _randone(choice(i[1][1]), limit, grouprefs)
        elif i[0] == sre_parse.SUBPATTERN or i[0] == sre_parse.ASSERT:
            subexpr = i[1][1]
            if IS_PY36_OR_GREATER and i[0] == sre_parse.SUBPATTERN:
                subexpr = i[1][3]
            subp = _randone(subexpr, limit, grouprefs)
            if i[1][0]:
                grouprefs[i[1][0]] = subp
            ret += subp
        elif i[0] == sre_parse.AT:
            continue
        elif i[0] == sre_parse.NOT_LITERAL:
            c = list(CATEGORIES['category_any'])
            if unichr(i[1]) in c:
                c.remove(unichr(i[1]))
            ret += choice(c)
        elif i[0] == sre_parse.GROUPREF:
            ret += grouprefs[i[1]]
        elif i[0] == sre_parse.ASSERT_NOT:
            pass
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
Esempio n. 15
0
def _randone(d, limit=20, grouprefs=None):
    if grouprefs == None:
        grouprefs = {}
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == 'in':
            ret += choice(_in(i[1]))
        elif i[0] == 'literal':
            ret += unichr(i[1])
        elif i[0] == 'category':
            ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == 'any':
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == 'max_repeat':
            if i[1][1]+1 - i[1][0] >= limit:
                min,max = i[1][0], i[1][0]+limit
            else:
                min,max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += _randone(list(i[1][2]), limit, grouprefs)
        elif i[0] == 'branch':
            ret += _randone(choice(i[1][1]), limit, grouprefs)
        elif i[0] == 'subpattern':
            subp = _randone(i[1][1], limit, grouprefs)
            if i[1][0]:
                grouprefs[i[1][0]] = subp
            ret += subp
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            c=list(CATEGORIES['category_any'])
            c.remove(unichr(i[1]))
            ret += choice(c)
        elif i[0] == 'groupref':
            ret += grouprefs[i[1]]
        elif i[0] == 'assert':
            pass
        elif i[0] == 'assert_not':
            pass
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
def _randone(d, limit=20, grouprefs=None):
    if grouprefs == None:
        grouprefs = {}
    """docstring for _randone"""
    ret = ''
    for i in d:
        if i[0] == 'in':
            ret += choice(_in(i[1]))
        elif i[0] == 'literal':
            ret += unichr(i[1])
        elif i[0] == 'category':
            ret += choice(CATEGORIES.get(i[1], ['']))
        elif i[0] == 'any':
            ret += choice(CATEGORIES['category_any'])
        elif i[0] == 'max_repeat':
            if i[1][1]+1 - i[1][0] >= limit:
                min,max = i[1][0], i[1][0]+limit
            else:
                min,max = i[1][0], i[1][1]
            for _ in range(randint(min, max)):
                ret += _randone(list(i[1][2]), limit, grouprefs)
        elif i[0] == 'branch':
            ret += _randone(choice(i[1][1]), limit, grouprefs)
        elif i[0] == 'subpattern':
            subp = _randone(i[1][1], limit, grouprefs)
            if i[1][0]:
                grouprefs[i[1][0]] = subp
            ret += subp
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            c=list(CATEGORIES['category_any'])
            c.remove(unichr(i[1]))
            ret += choice(c)
        elif i[0] == 'groupref':
            ret += grouprefs[i[1]]
        elif i[0] == 'assert':
            pass
        elif i[0] == 'assert_not':
            pass
        else:
            print('[!] cannot handle expression "%s"' % str(i))

    return ret
Esempio n. 17
0
def _in(d, args=None):
    ret = []
    neg = False
    for i in d:
        if i[0] == sre_parse.RANGE:
            subs = map(unichr, range(i[1][0], i[1][1] + 1))
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == sre_parse.LITERAL:
            if neg:
                try:
                    ret.remove(unichr(i[1]))
                except:
                    pass
            else:
                ret.append(unichr(i[1]))
        elif i[0] == sre_parse.CATEGORY:
            if args and args.has(i[1]):
                return [args.get_arg()]
            else:
                subs = CATEGORIES.get(i[1], [''])
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                if args is None:
                    ret.extend(subs)
        elif i[0] == sre_parse.NEGATE:
            ret = list(CATEGORIES['category_any'])
            neg = True
    return ret
Esempio n. 18
0
File: exrex.py Progetto: crono/exrex
def _in(d):
    ret = []
    neg = False
    for i in d:
        if i[0] == sre_parse.RANGE:
            subs = map(unichr, range(i[1][0], i[1][1] + 1))
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == sre_parse.LITERAL:
            if neg:
                try:
                    ret.remove(unichr(i[1]))
                except:
                    pass
            else:
                ret.append(unichr(i[1]))
        elif i[0] == sre_parse.CATEGORY:
            subs = CATEGORIES.get(i[1], [""])
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == sre_parse.NEGATE:
            ret = list(CATEGORIES["category_any"])
            neg = True
    return ret
def _in(d):
    ret = []
    neg = False
    for i in d:
        if i[0] == 'range':
            subs = map(unichr, range(i[1][0], i[1][1]+1))
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == 'literal':
            if neg:
                try:
                    ret.remove(unichr(i[1]))
                except:
                    pass
            else:
                ret.append(unichr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == 'negate':
            ret = list(CATEGORIES['category_any'])
            neg = True
    return ret
Esempio n. 20
0
def _in(d):
    ret = []
    neg = False
    for i in d:
        if i[0] == 'range':
            subs = map(chr, range(i[1][0], i[1][1] + 1))
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == 'literal':
            if neg:
                try:
                    ret.remove(chr(i[1]))
                except:
                    pass
            else:
                ret.append(chr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if neg:
                for char in subs:
                    try:
                        ret.remove(char)
                    except:
                        pass
            else:
                ret.extend(subs)
        elif i[0] == 'negate':
            ret = list(CATEGORIES['category_any'])
            neg = True
    return ret
def _gen(d, limit=20, count=False, grouprefs=None):
    """docstring for _gen"""
    if grouprefs == None:
        grouprefs = {}
    ret = ['']
    strings = 0
    literal = False
    for i in d:
        if i[0] == 'in':
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'literal':
            literal = True
            ret = mappend(ret, unichr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'any':
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'max_repeat':
            items = list(i[1][2])
            if i[1][1]+1 - i[1][0] >= limit:
                ran = range(i[1][0], i[1][0]+limit)
                r1 = i[1][0]
                r2 = i[1][0]+limit
            else:
                r1 = i[1][0]
                r2 = i[1][1]+1
            ran = range(r1, r2)
            if count:
                for p in ran:
                    strings += pow(_gen(items, limit, True,grouprefs), p) or 1
            ret = prods(ret, ran, items, limit, grouprefs)
        elif i[0] == 'branch':
            if count:
                for x in i[1][1]:
                    strings += _gen(x, limit, True,grouprefs)
            ret = concit(ret, i[1][1], limit, grouprefs)
        elif i[0] == 'subpattern':
            if count:
                strings = (strings or 1) * (sum(ggen([0], _gen, i[1][1], limit=limit, count=True, grouprefs=grouprefs)) or 1)
            ret = ggen(ret, _gen, i[1][1], limit=limit, count=False, grouprefs=grouprefs, groupref=i[1][0])
        # ignore ^ and $
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            subs = list(CATEGORIES['category_any'])
            subs.remove(unichr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'groupref':
            ret = dappend(ret, grouprefs, i[1])
        elif i[0] == 'assert':
            #print(i[1][1])
            #continue
            pass
        elif i[0] == 'assert_not':
            pass
        else:
            print('[!] cannot handle expression ' + repr(i))

    if count:
        if strings == 0 and literal:
            inc = True
            for i in d:
                if i[0] not in  ('at' 'literal'):
                    inc = False
            if inc:
                strings = 1
        return strings

    return ret
Esempio n. 22
0
File: exrex.py Progetto: crono/exrex
def _gen(d, limit=20, count=False, grouprefs=None):
    """docstring for _gen"""
    if grouprefs == None:
        grouprefs = {}
    ret = [""]
    strings = 0
    literal = False
    for i in d:
        if i[0] == sre_parse.IN:
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.LITERAL:
            literal = True
            ret = mappend(ret, unichr(i[1]))
        elif i[0] == sre_parse.CATEGORY:
            subs = CATEGORIES.get(i[1], [""])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.ANY:
            subs = CATEGORIES["category_any"]
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.MAX_REPEAT:
            items = list(i[1][2])
            if i[1][1] + 1 - i[1][0] >= limit:
                ran = range(i[1][0], i[1][0] + limit)
                r1 = i[1][0]
                r2 = i[1][0] + limit
            else:
                r1 = i[1][0]
                r2 = i[1][1] + 1
            ran = range(r1, r2)
            if count:
                for p in ran:
                    strings += pow(_gen(items, limit, True, grouprefs), p) or 1
            ret = prods(ret, ran, items, limit, grouprefs)
        elif i[0] == sre_parse.BRANCH:
            if count:
                for x in i[1][1]:
                    strings += _gen(x, limit, True, grouprefs)
            ret = concit(ret, i[1][1], limit, grouprefs)
        elif i[0] == sre_parse.SUBPATTERN:
            if count:
                strings = (strings or 1) * (
                    sum(ggen([0], _gen, i[1][1], limit=limit, count=True, grouprefs=grouprefs)) or 1
                )
            ret = ggen(ret, _gen, i[1][1], limit=limit, count=False, grouprefs=grouprefs, groupref=i[1][0])
        # ignore ^ and $
        elif i[0] == sre_parse.AT:
            continue
        elif i[0] == sre_parse.NOT_LITERAL:
            subs = list(CATEGORIES["category_any"])
            subs.remove(unichr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.GROUPREF:
            ret = dappend(ret, grouprefs, i[1])
        elif i[0] == sre_parse.ASSERT:
            # print(i[1][1])
            # continue
            pass
        elif i[0] == sre_parse.ASSERT_NOT:
            pass
        else:
            print("[!] cannot handle expression " + repr(i))

    if count:
        if strings == 0 and literal:
            inc = True
            for i in d:
                if i[0] not in (sre_parse.AT, sre_parse.LITERAL):
                    inc = False
            if inc:
                strings = 1
        return strings

    return ret
Esempio n. 23
0
            tabs.append(tab)
    moose.setClock(0, 1e-3)
    moose.setClock(1, 1e-3)
    moose.setClock(2, 1e-3)
    moose.useClock(0, '/##[ISA=Compartment]', 'init')
    moose.useClock(1, '/##[ISA=Compartment]', 'process')
    moose.useClock(2, '/##[ISA=Table]', 'process')
    moose.reinit()
    moose.start(0.01)
    return tabs


import numpy as np

if __name__ == '__main__':
    np_arrays = []
    for ii in range(3):
        print('Creating elements')
        allocate_large_vecs(100, 100)
        print('Created elements. Creating field dict now')
        create_finfos()
        moose.delete(moose.element('/test'))
        tabs = check_vector_field(100, 100)
        for t in tabs:
            np_arrays.append(np.array(t.vec))
        moose.delete('/test')
    print('Finished')

#
# test_gc.py ends here
Esempio n. 24
0
File: exrex.py Progetto: crono/exrex
from random import choice, randint
from types import GeneratorType

from sys import version_info

IS_PY3 = version_info[0] == 3

if IS_PY3:
    unichr = chr

__all__ = ("generate", "CATEGORIES", "count", "parse", "getone", "sre_to_string", "simplify")

CATEGORIES = {
    sre_parse.CATEGORY_SPACE: sorted(sre_parse.WHITESPACE),
    sre_parse.CATEGORY_DIGIT: sorted(sre_parse.DIGITS),
    "category_any": [unichr(x) for x in range(32, 123)],
}


def _build_reverse_categories():
    reverse = {}
    for key, value in sre_parse.CATEGORIES.items():
        if not hasattr(value[1], "__iter__"):
            continue

        for vv in value[1]:
            if value[0] == sre_parse.IN and vv[0] == sre_parse.CATEGORY:
                reverse.update({vv[1]: key})

    return reverse
Esempio n. 25
0
    unichr = chr

__all__ = (
    'generate',
    'CATEGORIES',
    'count',
    'parse',
    'getone',
    'sre_to_string',
    'simplify'
)

CATEGORIES = {
    sre_parse.CATEGORY_SPACE: sorted(sre_parse.WHITESPACE),
    sre_parse.CATEGORY_DIGIT: sorted(sre_parse.DIGITS),
    sre_parse.CATEGORY_WORD: [unichr(x) for x in range(256) if
                              match('\w', unichr(x), U)],
    sre_parse.CATEGORY_NOT_WORD: [unichr(x) for x in range(256) if
                                  match('\W', unichr(x), U)],
    'category_any': [unichr(x) for x in range(32, 123)]
}


def _build_reverse_categories():
    reverse = {}
    for key, value in sre_parse.CATEGORIES.items():
        if not hasattr(value[1], '__iter__'):
            continue

        for vv in value[1]:
            if value[0] == sre_parse.IN and vv[0] == sre_parse.CATEGORY:
Esempio n. 26
0
            tabs.append(tab)
    moose.setClock(0, 1e-3)
    moose.setClock(1, 1e-3)
    moose.setClock(2, 1e-3)
    moose.useClock(0, '/##[ISA=Compartment]', 'init')
    moose.useClock(1, '/##[ISA=Compartment]', 'process')
    moose.useClock(2, '/##[ISA=Table]', 'process')
    moose.reinit()
    moose.start(0.01)
    return tabs

import numpy as np

if __name__ == '__main__':
    np_arrays = []
    for ii in range(3):
        print('Creating elements')
        allocate_large_vecs(100, 100)
        print('Created elements. Creating field dict now')
        create_finfos()
        moose.delete(moose.element('/test'))
        tabs = check_vector_field(100, 100)
        for t in tabs:
            np_arrays.append(np.array(t.vec))
        moose.delete('/test')
    print('Finished')



#
# test_gc.py ends here
Esempio n. 27
0
from sys import version_info
IS_PY3 = version_info[0] == 3

if IS_PY3:
    unichr = chr

__all__ = ('generate',
           'CATEGORIES',
           'count',
           'parse',
           'getone',
           'sre_to_string',
           'simplify')

CATEGORIES = {'category_space': sorted(sre_parse.WHITESPACE), 'category_digit': sorted(sre_parse.DIGITS), 'category_any': [unichr(x) for x in range(32, 123)]
              }

# REVERSE_CATEGORIES = {vv[1]:k for k,v
#                       in sre_parse.CATEGORIES.items() for vv
#                       in v[1]
#                       if v[0] == 'in' and vv[0] == 'category'}


def comb(g, i):
    for c in g:
        g2, i = tee(i)
        for c2 in g2:
            yield c + c2

Esempio n. 28
0
try:
    from future_builtins import map, range
except:
    pass
from re import match, sre_parse
from itertools import product, chain, tee
from random import choice, randint
import string

__all__ = ('generate', 'CATEGORIES', 'count', 'parse', 'getone')

CATEGORIES = {
    'category_space': sorted(sre_parse.WHITESPACE),
    'category_digit': sorted(sre_parse.DIGITS),
    'category_not_digit':
    [chr(x) for x in range(32, 123) if match('\D', chr(x))],
    'category_any': [chr(x) for x in range(32, 123)],
    'category_word':
    sorted(frozenset(string.ascii_letters + string.digits + "_")),
    'category_not_word':
    [chr(x) for x in range(32, 123) if match('\W', chr(x))]
}


def comb(g, i):
    for c in g:
        g2, i = tee(i)
        for c2 in g2:
            yield c + c2

Esempio n. 29
0
from types import GeneratorType

from sys import version_info
IS_PY3 = version_info[0] == 3
IS_PY36_OR_GREATER = IS_PY3 and version_info[1] > 5

if IS_PY3:
    unichr = chr

__all__ = ('generate', 'CATEGORIES', 'count', 'parse', 'getone',
           'sre_to_string', 'simplify')

CATEGORIES = {
    sre_parse.CATEGORY_SPACE: sorted(sre_parse.WHITESPACE),
    sre_parse.CATEGORY_DIGIT: sorted(sre_parse.DIGITS),
    'category_any': [unichr(x) for x in range(32, 123)]
}


def _build_reverse_categories():
    reverse = {}
    for key, value in sre_parse.CATEGORIES.items():
        if not hasattr(value[1], '__iter__'):
            continue

        for vv in value[1]:
            if value[0] == sre_parse.IN and vv[0] == sre_parse.CATEGORY:
                reverse.update({vv[1]: key})

    return reverse
IS_PY3 = version_info[0] == 3

if IS_PY3:
    unichr = chr

__all__ = ('generate',
           'CATEGORIES',
           'count',
           'parse',
           'getone',
           'sre_to_string',
           'simplify')

CATEGORIES = {'category_space'  : sorted(sre_parse.WHITESPACE)
             ,'category_digit'  : sorted(sre_parse.DIGITS)
             ,'category_any'    : [unichr(x) for x in range(32, 123)]
             }

REVERSE_CATEGORIES = {vv[1]:k for k,v
                      in sre_parse.CATEGORIES.items() for vv
                      in v[1]
                      if v[0] == 'in' and vv[0] == 'category'}


def comb(g, i):
    for c in g:
        g2,i = tee(i)
        for c2 in g2:
            yield c+c2

Esempio n. 31
0
IS_PY3 = version_info[0] == 3
IS_PY36_OR_GREATER = IS_PY3 and version_info[1] > 5

if IS_PY3:
    unichr = chr

__all__ = ('generate', 'CATEGORIES', 'count', 'parse', 'getone',
           'sre_to_string', 'simplify')

CATEGORIES = {
    sre_parse.CATEGORY_SPACE:
    sorted(sre_parse.WHITESPACE),
    sre_parse.CATEGORY_DIGIT:
    sorted(sre_parse.DIGITS),
    sre_parse.CATEGORY_WORD:
    [unichr(x) for x in range(128) if match('\w', unichr(x), U)],
    sre_parse.CATEGORY_NOT_WORD:
    [unichr(x) for x in range(128) if match('\W', unichr(x), U)],
    'category_any': [unichr(x) for x in range(32, 123)]
}


def _build_reverse_categories():
    reverse = {}
    for key, value in sre_parse.CATEGORIES.items():
        if not hasattr(value[1], '__iter__'):
            continue

        for vv in value[1]:
            if value[0] == sre_parse.IN and vv[0] == sre_parse.CATEGORY:
                reverse.update({vv[1]: key})
Esempio n. 32
0
def _gen(d, limit=20, count=False, grouprefs=None):
    """docstring for _gen"""
    if grouprefs is None:
        grouprefs = {}
    ret = ['']
    strings = 0
    literal = False
    for i in d:
        if i[0] == sre_parse.IN:
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.LITERAL:
            literal = True
            ret = mappend(ret, unichr(i[1]))
        elif i[0] == sre_parse.CATEGORY:
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.ANY:
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.MAX_REPEAT:
            items = list(i[1][2])
            if i[1][1] + 1 - i[1][0] >= limit:
                ran = range(i[1][0], i[1][0] + limit)
                r1 = i[1][0]
                r2 = i[1][0] + limit
            else:
                r1 = i[1][0]
                r2 = i[1][1] + 1
            ran = range(r1, r2)
            if count:
                for p in ran:
                    strings += pow(_gen(items, limit, True, grouprefs), p) or 1
            ret = prods(ret, ran, items, limit, grouprefs)
        elif i[0] == sre_parse.BRANCH:
            if count:
                for x in i[1][1]:
                    strings += _gen(x, limit, True, grouprefs) or 1
            ret = concit(ret, i[1][1], limit, grouprefs)
        elif i[0] == sre_parse.SUBPATTERN or i[0] == sre_parse.ASSERT:
            subexpr = i[1][1]
            if IS_PY36_OR_GREATER and i[0] == sre_parse.SUBPATTERN:
                subexpr = i[1][3]
            if count:
                strings = (strings or 1) * (sum(
                    ggen([0],
                         _gen,
                         subexpr,
                         limit=limit,
                         count=True,
                         grouprefs=grouprefs)) or 1)
            ret = ggen(ret,
                       _gen,
                       subexpr,
                       limit=limit,
                       count=False,
                       grouprefs=grouprefs,
                       groupref=i[1][0])
        # ignore ^ and $
        elif i[0] == sre_parse.AT:
            continue
        elif i[0] == sre_parse.NOT_LITERAL:
            subs = list(CATEGORIES['category_any'])
            if unichr(i[1]) in subs:
                subs.remove(unichr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == sre_parse.GROUPREF:
            ret = dappend(ret, grouprefs, i[1])
        elif i[0] == sre_parse.ASSERT_NOT:
            pass
        else:
            print('[!] cannot handle expression ' + repr(i))

    if count:
        if strings == 0 and literal:
            inc = True
            for i in d:
                if i[0] not in (sre_parse.AT, sre_parse.LITERAL):
                    inc = False
            if inc:
                strings = 1
        return strings

    return ret
Esempio n. 33
0
def _gen(d, limit=20, count=False, grouprefs=None):
    """docstring for _gen"""
    if grouprefs == None:
        grouprefs = {}
    ret = ['']
    strings = 0
    literal = False
    for i in d:
        if i[0] == 'in':
            subs = _in(i[1])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'literal':
            literal = True
            ret = mappend(ret, unichr(i[1]))
        elif i[0] == 'category':
            subs = CATEGORIES.get(i[1], [''])
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'any':
            subs = CATEGORIES['category_any']
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'max_repeat':
            items = list(i[1][2])
            if i[1][1]+1 - i[1][0] >= limit:
                ran = range(i[1][0], i[1][0]+limit)
                r1 = i[1][0]
                r2 = i[1][0]+limit
            else:
                r1 = i[1][0]
                r2 = i[1][1]+1
            ran = range(r1, r2)
            if count:
                for p in ran:
                    strings += pow(_gen(items, limit, True,grouprefs), p) or 1
            ret = prods(ret, ran, items, limit, grouprefs)
        elif i[0] == 'branch':
            if count:
                for x in i[1][1]:
                    strings += _gen(x, limit, True,grouprefs)
            ret = concit(ret, i[1][1], limit, grouprefs)
        elif i[0] == 'subpattern':
            if count:
                strings = (strings or 1) * (sum(ggen([0], _gen, i[1][1], limit=limit, count=True, grouprefs=grouprefs)) or 1)
            ret = ggen(ret, _gen, i[1][1], limit=limit, count=False, grouprefs=grouprefs, groupref=i[1][0])
        # ignore ^ and $
        elif i[0] == 'at':
            continue
        elif i[0] == 'not_literal':
            subs = list(CATEGORIES['category_any'])
            subs.remove(unichr(i[1]))
            if count:
                strings = (strings or 1) * len(subs)
            ret = comb(ret, subs)
        elif i[0] == 'groupref':
            ret = dappend(ret, grouprefs, i[1])
        elif i[0] == 'assert':
            #print(i[1][1])
            #continue
            pass
        elif i[0] == 'assert_not':
            pass
        else:
            print('[!] cannot handle expression ' + repr(i))

    if count:
        if strings == 0 and literal:
            inc = True
            for i in d:
                if i[0] not in  ('at' 'literal'):
                    inc = False
            if inc:
                strings = 1
        return strings

    return ret