code: def pyang_plugin_init():
      
  
      # Register the plugin
      plugin.register_plugin(SMIPlugin())
  
      # Add our special argument syntax checkers
      syntax.add_arg_type('smi-oid', _chk_smi_oid)
      syntax.add_arg_type('smi-max-access', _chk_smi_max_access)
  
      # Register that we handle extensions from the YANG module 'ietf-yang-smiv2'
      grammar.register_extension_module(smi_module_name)
  
      # Register the special grammar
      for (stmt, occurance, (arg, rules), add_to_stmts) in smi_stmts:
          grammar.add_stmt((smi_module_name, stmt), (arg, rules))
          grammar.add_to_stmts_rules(add_to_stmts,
                                     [((smi_module_name, stmt), occurance)])
  
      # Add validation step
      statements.add_validation_phase('smi_set_oid', after='inherit_properties')
      statements.add_validation_fun('smi_set_oid',
                                    [(smi_module_name, 'oid')],
                                    v_set_oid)
      statements.add_validation_fun('smi_set_oid',
                                    [(smi_module_name, 'subid')],
                                    v_set_subid)
  
      # Register special error codes
      error.add_error_code('SMIv2_BAD_SUBID', 1,
                           "subid needs an oid or subid statement in an ancestor")
      error.add_error_code('SMIv2_SUBID_AND_OID', 1,
                           "subid and oid cannot be given at the same time")
docs: Called by pyang plugin framework at to initialize the plugin.