示例#1
0
    if op == 'u':

        def routine(data, stacklevel=1):
            data = _need_bytes(data, stacklevel)
            return struct_op(data)[0]
    else:

        def routine(data, stacklevel=None):
            return struct_op(data)

    routine.__name__ = routine.__qualname__ = name

    return name, routine


for op, size, end, sign in iters.product(ops, sizes, ends, signs):
    name, routine = make_single(op, size, end, sign)
    setattr(mod, name, routine)


#
# Make normal user-oriented packers, e.g. p8
#
def make_multi(op, size):

    name = "%s%s" % (op, size)

    ls = getattr(mod, "_%sls" % (name))
    lu = getattr(mod, "_%slu" % (name))
    bs = getattr(mod, "_%sbs" % (name))
    bu = getattr(mod, "_%sbu" % (name))
示例#2
0
def p8(number, endian=None):
    # type: (int, Optional[endianess]) -> bytes
    pass


def u16(data, endian=None):
    # type: (bytes, Optional[endianess]) -> int
    pass


def p16(number, endian=None):
    # type: (int, Optional[endianess]) -> bytes
    pass


def u32(data, endian=None):
    # type: (bytes, Optional[endianess]) -> int
    pass


def p32(number, endian=None):
    # type: (int, Optional[endianess]) -> bytes
    pass


for op, size in iters.product(ops, sizes):
    name, routine = make_multi(op, size)
    if hasattr(mod, name):
        setattr(mod, name, routine)
示例#3
0
def make_single(op,size,end,sign):
    name = '_%s%s%s%s' % (op, size, end, sign)
    fmt  = sizes[size]
    end = '>' if end == 'b' else '<'

    if sign == 'u':
        fmt = fmt.upper()
    fmt = end+fmt

    def routine(data):
        return ops[op](fmt,data)
    routine.__name__ = name

    return name, routine

for op,size,end,sign in iters.product(ops, sizes, ends, signs):
    name, routine = make_single(op,size,end,sign)
    setattr(mod, name, routine)

return_types     = {'p': 'str', 'u': 'int'}
op_verbs         = {'p': 'pack', 'u': 'unpack'}
arg_doc          = {'p': 'number (int): Number to convert',
                    'u': 'data (str): String to convert'}
rv_doc           = {'p': 'The packed number as a string',
                    'u': 'The unpacked number'}

#
# Make normal user-oriented packers, e.g. p8
#
def make_multi(op, size):