コード例 #1
0
    def doc_record_schema_md(self, rec_name):
        try:
            schema = rec_lookup_by_name(rec_name)._schema
        except AttributeError:
            return ''

        w1 = 40
        w2 = 20
        w3 = 30
        result = f'|{"Name".ljust(w1)}|{"Type".ljust(w2)}|{"Opt".ljust(w3)}\n'\
                 f'|{"-" * w1}|{"-" * w2}|{"-" * w3}|\n'

        for entry in schema:
            e_name, e_type, e_opt = schema_entry_info(entry)
            if e_opt is not None and 'constants' in e_opt:
                e_opt = ', '.join(f'`{k}`' for k in e_opt['constants'].keys())
            else:
                e_opt = ''

            if e_name.startswith('_'):
                continue
            e_name = f'`{e_name}`'
            result += f'|{e_name.ljust(w1)}|{e_type.ljust(w2)}|{e_opt.ljust(w3)}|\n'
        result += '\n<br>\n\n'
        return result
コード例 #2
0
ファイル: multirecords.py プロジェクト: ggannann/frugy
 def update(self, initdict):
     self.records = []
     for v in initdict:
         try:
             constructor = rec_lookup_by_name(v['type'])
         except KeyError:
             raise RuntimeError(f"Unknown multirecord entry {v['type']}")
         self.records.append(constructor(v))
コード例 #3
0
ファイル: cli.py プロジェクト: MicroTCA-Tech-Lab/frugy
def list_record_schema(rec_name):
    schema = rec_lookup_by_name(rec_name)._schema
    print(f'{"Name".ljust(20)} {"Type".ljust(30)} {"Opt"}')

    for entry in schema:
        e_name, e_type, e_opt = schema_entry_info(entry)
        if e_name.startswith('_'):
            continue
        if e_opt is not None and 'constants' in e_opt:
            e_opt = ', '.join(k for k in e_opt['constants'].keys())
        else:
            e_opt = ''
        print(f'{e_name.ljust(20)} {e_type.ljust(30)} {e_opt}')
コード例 #4
0
ファイル: cli.py プロジェクト: ggannann/frugy
def list_record_schema(rec_name):
    schema = rec_lookup_by_name(rec_name)._schema
    print(f'{"Name".ljust(20)} {"Type".ljust(30)} {"Opt"}')

    for entry in schema:
        e_name = entry[0]
        if e_name.startswith('_'):
            continue
        e_inst = entry[1]
        e_opt = ''
        if e_inst._description == 'int':
            e_args = e_inst.args[0]
            if 'constants' in e_inst.kwargs:
                e_opt = ', '.join(f'{k}={v}' for k, v in e_inst.kwargs['constants'].items())
        elif e_inst._description == 'array':
            e_args = e_inst.args[0].__name__
        else:
            e_args = e_inst.args
            e_opt = e_inst.kwargs

        e_type = f'{e_inst._description.ljust(5)} ({e_args})'
        print(f'{e_name.ljust(20)} {e_type.ljust(30)} {e_opt}')
コード例 #5
0
ファイル: test_introspection.py プロジェクト: ggannann/frugy
    def doc_record_schema_md(self, rec_name):
        try:
            schema = rec_lookup_by_name(rec_name)._schema
        except AttributeError:
            return ''

        w1 = 25
        w2 = 20
        w3 = 60
        result = f'|{"Name".ljust(w1)}|{"Type".ljust(w2)}|{"Opt".ljust(w3)}\n'\
                 f'|{"-" * w1}|{"-" * w2}|{"-" * w3}|\n'

        for entry in schema:
            e_name = entry[0]
            if e_name.startswith('_'):
                continue
            e_name = f'`{e_name}`'
            e_inst = entry[1]
            e_args = ''
            e_opt = ''
            if e_inst._description == 'int':
                e_args = f'({e_inst.args[0]})'
                if 'constants' in e_inst.kwargs:
                    e_opt = ', '.join(
                        k for k in e_inst.kwargs['constants'].keys())
                    #e_opt = ', '.join(f'{k}={v}' for k, v in e_inst.kwargs['constants'].items())
            elif e_inst._description == 'array':
                e_args = f'({e_inst.args[0].__name__})'
            elif e_inst._description in ('str', 'strarray', 'bytes', 'ipv4'):
                pass
            else:
                e_args = e_inst.args
                e_opt = e_inst.kwargs

            e_type = f'{e_inst._description} {e_args}'
            result += f'|{e_name.ljust(w1)}|{e_type.ljust(w2)}|{str(e_opt).ljust(w3)}|\n'
        return result