code: def __init__(
      self, name, path, enabled=True, is_builtin=False, metadata=None
  ):
      self.name = name
      self.path = path
      self.enabled = enabled
      self.status = ""
      self.can_update = False
      self.is_builtin = is_builtin
      self.commit_hash = ""
      self.commit_date = None
      self.version = ""
      self.branch = None
      self.remote = None
      self.have_info_from_repo = False
      self.metadata = (
          metadata
          if metadata
          else ExtensionMetadata(self.path, name.lower())
      )
      self.canonical_name = metadata.canonical_name
  
imports: from __future__ import annotations
  import configparser
  import os
  import threading
  import re
  from modules import shared, errors, cache, scripts
  from modules.gitpython_hack import Repo
  from modules.paths_internal import extensions_dir, extensions_builtin_dir, script_path
label_desc: Use image node_id 1 to create a new Extension object  with example: obj = Extension(name, path, enabled, is_builtin, metadata)