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
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))
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}')
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}')
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