1
0
mirror of https://github.com/osrg/gobgp.git synced 2024-05-11 05:55:10 +00:00

pyang_plugins: Improve pylint and pycodestyle results

Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
This commit is contained in:
IWASE Yusuke
2018-09-04 22:42:31 +09:00
committed by FUJITA Tomonori
parent 9420a664c2
commit c33f14282c

View File

@ -16,9 +16,10 @@
from __future__ import print_function
import sys
from pyang import plugin
from collections import namedtuple
from pyang import plugin
_COPYRIGHT_NOTICE = """
// DO NOT EDIT
// generated by pyang using OpenConfig https://github.com/openconfig/public
@ -95,8 +96,8 @@ def emit_go(ctx, fd):
done = set()
# emit
generate_header(ctx, fd)
generate_common_functions(ctx, fd)
generate_header(fd)
generate_common_functions(fd)
for mod in ctx.module_deps:
if mod not in _module_excluded:
@ -227,7 +228,7 @@ def emit_class_def(ctx, stmt, struct_name, prefix, fd):
# case translation required
elif is_translation_required(type_obj):
print('// original type is list of %s' % type_obj.arg, file=fd)
emit_type_name = '[]'+translate_type(type_name)
emit_type_name = '[]' + translate_type(type_name)
# case other primitives
elif is_builtin_type(type_obj):
@ -245,11 +246,11 @@ def emit_class_def(ctx, stmt, struct_name, prefix, fd):
t = ctx.golang_struct_names[key]
val_name_go = t.golang_name
if len(t.i_children) == 1 and is_list(t.i_children[0]):
l = t.i_children[0]
emit_type_name = '[]' + l.golang_name
c = t.i_children[0]
emit_type_name = '[]' + c.golang_name
equal_type = EQUAL_TYPE_MAP
equal_data = l.search_one('key').arg
leaf = l.search_one('leaf').search_one('type')
equal_data = c.search_one('key').arg
leaf = c.search_one('leaf').search_one('type')
if leaf.arg == 'leafref' and leaf.search_one('path').arg.startswith('../config'):
equal_data = 'config.' + equal_data
else:
@ -518,67 +519,67 @@ def emit_description(stmt, fd):
def emit_enum(prefix, name, stmt, substmts, fd):
type_name_org = name
type_name = stmt.golang_name
print('// typedef for identity %s:%s.' % (prefix, type_name_org), file=fd)
emit_description(stmt, fd)
print('type %s string' % type_name, file=fd)
type_name_org = name
type_name = stmt.golang_name
print('// typedef for identity %s:%s.' % (prefix, type_name_org), file=fd)
emit_description(stmt, fd)
print('type %s string' % type_name, file=fd)
const_prefix = convert_const_prefix(type_name_org)
print('const (', file=fd)
m = {}
const_prefix = convert_const_prefix(type_name_org)
print('const (', file=fd)
m = {}
if is_choice(stmt) and is_enum_choice(stmt):
n = namedtuple('Statement', ['arg'])
n.arg = 'none'
substmts = [n] + substmts
if is_choice(stmt) and is_enum_choice(stmt):
n = namedtuple('Statement', ['arg'])
n.arg = 'none'
substmts = [n] + substmts
for sub in substmts:
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
m[sub.arg.lower()] = enum_name
print(' %s %s = "%s"' % (enum_name, type_name, sub.arg.lower()), file=fd)
print(')\n', file=fd)
for sub in substmts:
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
m[sub.arg.lower()] = enum_name
print(' %s %s = "%s"' % (enum_name, type_name, sub.arg.lower()), file=fd)
print(')\n', file=fd)
print('var %sToIntMap = map[%s]int {' % (type_name, type_name), file=fd)
for i, sub in enumerate(substmts):
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
print(' %s: %d,' % (enum_name, i), file=fd)
print('var %sToIntMap = map[%s]int {' % (type_name, type_name), file=fd)
for i, sub in enumerate(substmts):
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
print(' %s: %d,' % (enum_name, i), file=fd)
print('}\n', file=fd)
print('func (v %s) ToInt() int {' % type_name, file=fd)
print('i, ok := %sToIntMap[v]' % type_name, file=fd)
print('if !ok {', file=fd)
print('return -1', file=fd)
print('}', file=fd)
print('return i', file=fd)
print('}', file=fd)
print('var IntTo%sMap = map[int]%s {' % (type_name, type_name), file=fd)
for i, sub in enumerate(substmts):
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
print(' %d: %s,' % (i, enum_name), file=fd)
print('}\n', file=fd)
print('func (v %s) Validate() error {' % type_name, file=fd)
print('if _, ok := %sToIntMap[v]; !ok {' % type_name, file=fd)
print('return fmt.Errorf("invalid %s: %%s", v)' % type_name, file=fd)
print('}', file=fd)
print('return nil', file=fd)
print('}\n', file=fd)
if stmt.search_one('default'):
default = stmt.search_one('default')
print('func (v %s) Default() %s {' % (type_name, type_name), file=fd)
print('return %s' % m[default.arg.lower()], file=fd)
print('}\n', file=fd)
print('func (v %s) ToInt() int {' % type_name, file=fd)
print('i, ok := %sToIntMap[v]' % type_name, file=fd)
print('if !ok {', file=fd)
print('return -1', file=fd)
print('func (v %s) DefaultAsNeeded() %s {' % (type_name, type_name), file=fd)
print(' if string(v) == "" {', file=fd)
print(' return v.Default()', file=fd)
print('}', file=fd)
print('return i', file=fd)
print(' return v', file=fd)
print('}', file=fd)
print('var IntTo%sMap = map[int]%s {' % (type_name, type_name), file=fd)
for i, sub in enumerate(substmts):
enum_name = '%s_%s' % (const_prefix, convert_const_prefix(sub.arg))
print(' %d: %s,' % (i, enum_name), file=fd)
print('}\n', file=fd)
print('func (v %s) Validate() error {' % type_name, file=fd)
print('if _, ok := %sToIntMap[v]; !ok {' % type_name, file=fd)
print('return fmt.Errorf("invalid %s: %%s", v)' % type_name, file=fd)
print('}', file=fd)
print('return nil', file=fd)
print('}\n', file=fd)
if stmt.search_one('default'):
default = stmt.search_one('default')
print('func (v %s) Default() %s {' % (type_name, type_name), file=fd)
print('return %s' % m[default.arg.lower()], file=fd)
print('}\n', file=fd)
print('func (v %s) DefaultAsNeeded() %s {' % (type_name, type_name), file=fd)
print(' if string(v) == "" {', file=fd)
print(' return v.Default()', file=fd)
print('}', file=fd)
print(' return v', file=fd)
print('}', file=fd)
def emit_typedef(ctx, mod, fd):
prefix = mod.i_prefix
@ -694,6 +695,7 @@ def is_choice(s):
def is_enum_choice(s):
return all(e.search_one('type').arg in _type_enum_case for e in s.i_children)
_type_enum_case = [
'empty',
]
@ -759,7 +761,7 @@ _typedef_exclude = [
]
def generate_header(ctx, fd):
def generate_header(fd):
print(_COPYRIGHT_NOTICE, file=fd)
print('package config', file=fd)
print('', file=fd)
@ -771,7 +773,7 @@ def generate_header(ctx, fd):
print('', file=fd)
def generate_common_functions(ctx, fd):
def generate_common_functions(fd):
print('func mapkey(index int, name string) string {', file=fd)
print('if name != "" {', file=fd)
print('return name', file=fd)
@ -790,7 +792,6 @@ def translate_type(key):
# 'hoge-hoge' -> 'HogeHoge'
def convert_to_golang(type_string):
a = type_string.split('.')
a = [x.capitalize() for x in a] # XXX locale sensitive
return '.'.join(''.join(t.capitalize() for t in x.split('-')) for x in a)