Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def legal_check(obj):
- if isinstance(obj, list):
- for i in obj:
- if i in keyword.kwlist:
- raise SyntaxError("%s is an invalid name (Found in Keyword List)".format(i))
- elif not re.match("^[a-zA-Z][a-zA-Z0-9_=]*$", str(i)):
- raise SyntaxError("%s is an invalid name (Invalid characters used)".format(i))
- elif isinstance(obj, str):
- obj = obj.replace(',', ' ')
- obj = obj.split()
- for i in obj:
- if i in keyword.kwlist:
- raise SyntaxError("%s is an invalid name (Found in Keyword List)".format(i))
- elif not re.match("^[a-zA-Z][a-zA-Z0-9_=]*$", str(i)):
- raise SyntaxError("%s is an invalid name (Invalid characters used)".format(i))
- legal_check(type_name)
- legal_check(field_names)
- for i in defaults:
- if i not in field_names:
- raise SyntaxError('Dictionary Key not in field_names')
- def gen_init(f_names):
- init_string = """
- def __init__(self, """
- if isinstance(f_names, str):
- f_names = f_names.replace(', ', ' ')
- f_names = f_names.replace(',', ' ')
- f_names = f_names.split(' ')
- if defaults:
- for k,v in defaults:
- init_string += "%s=%s" % (k,v)
- else:
- for idx, i in enumerate(f_names):
- if idx != len(f_names) - 1:
- init_string += "%s, " % i
- else:
- init_string += "%s):" % i
- for i in f_names:
- init_string += "\n self.%s = %s" % (i, i)
- return init_string
- class_header = """
- class {type_name}:
- _fields = {field_names}
- _mutable = {mutable}
- """.format(type_name = str(type_name), field_names = str(field_names), mutable = str(mutable))
- class_definition = class_header + gen_init(field_names)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement