code: def clazz(clazz, parent_clazz, description, link, params_string, init_super_args=None):
      
      variables_needed = []
      variables_optional = []
      imports = set()
      for param in params_string.split("\n"):
          variable = parse_param_types(param)
          # any variable.types has always_is_value => lenght must be 1.
          assert(not any([type_.always_is_value is not None for type_ in variable.types]) or len(variable.types) == 1)
          if variable.optional:
              variables_optional.append(variable)
          else:
              variables_needed.append(variable)
          # end if
          imports.update(variable.all_imports)
      # end for
      imports = list(imports)
      imports.sort()
      if isinstance(parent_clazz, str):
          parent_clazz = to_type(parent_clazz, "parent class")
      assert isinstance(parent_clazz, Type)
  
      clazz_object = Clazz(imports=imports,
          clazz=clazz, parent_clazz=parent_clazz, link=link, description=description,
          parameters=variables_needed, keywords=variables_optional
      )
      return clazz_object
docs: Live template for pycharm:
  
      y = clazz(clazz="$clazz$", parent_clazz="%parent$", description="$description$", link="$lnk$", params_string="$first_param$")