old_contents: import os
  import random
  
  import yaml
  
  from cumulusci.core.config import BaseGlobalConfig
  from cumulusci.core.config import BaseProjectConfig
  from cumulusci.core.keychain import BaseProjectKeychain
  from cumulusci.core.config import OrgConfig
  from cumulusci import __location__
  
  def random_sha():
      hash = random.getrandbits(128)
      return "%032x" % hash
  
  def get_base_config():
      path = os.path.abspath(os.path.join(
              __location__,
              'cumulusci.yml'
          ))
      f = open(path, 'r')
      return yaml.load(f)
  
  def create_project_config(repo_name, repo_owner):
      base_config = get_base_config()
      global_config = BaseGlobalConfig(base_config)
      project_config = DummyProjectConfig(
          global_config = global_config, 
          repo_name = repo_name,
          repo_owner = repo_owner,
          config = base_config,
      )
      keychain = BaseProjectKeychain(project_config, None)
      project_config.set_keychain(keychain)
      return project_config
  
  class DummyProjectConfig(BaseProjectConfig):
      def __init__(self, global_config, repo_name, repo_owner, repo_commit=None, config=None):
          self._repo_name = repo_name
          self._repo_owner = repo_owner
          self._repo_commit = repo_commit
          self._init_config = config
          super(DummyProjectConfig, self).__init__(global_config, config)
  
      @property
      def repo_name(self):
          return self._repo_name
  
      @property
      def repo_owner(self):
          return self._repo_owner
          
      @property
      def repo_commit(self):
          if not self._repo_commit:
              self._repo_commit = random_sha()
          return self._repo_commit
          
  class DummyOrgConfig(OrgConfig):
      def refresh_oauth_token(self):
          pass
  
new_contents: import os
  import random
  
  import yaml
  
  from cumulusci.core.config import BaseGlobalConfig
  from cumulusci.core.config import BaseProjectConfig
  from cumulusci.core.keychain import BaseProjectKeychain
  from cumulusci.core.config import OrgConfig
  from cumulusci import __location__
  
  def random_sha():
      hash = random.getrandbits(128)
      return "%032x" % hash
  
  def get_base_config():
      path = os.path.abspath(os.path.join(
              __location__,
              'cumulusci.yml'
          ))
      with open(path, 'r') as f:
          return yaml.load(f)
  
  def create_project_config(repo_name, repo_owner):
      base_config = get_base_config()
      global_config = BaseGlobalConfig(base_config)
      project_config = DummyProjectConfig(
          global_config = global_config, 
          repo_name = repo_name,
          repo_owner = repo_owner,
          config = base_config,
      )
      keychain = BaseProjectKeychain(project_config, None)
      project_config.set_keychain(keychain)
      return project_config
  
  class DummyProjectConfig(BaseProjectConfig):
      def __init__(self, global_config, repo_name, repo_owner, repo_commit=None, config=None):
          self._repo_name = repo_name
          self._repo_owner = repo_owner
          self._repo_commit = repo_commit
          self._init_config = config
          super(DummyProjectConfig, self).__init__(global_config, config)
  
      @property
      def repo_name(self):
          return self._repo_name
  
      @property
      def repo_owner(self):
          return self._repo_owner
          
      @property
      def repo_commit(self):
          if not self._repo_commit:
              self._repo_commit = random_sha()
          return self._repo_commit
          
  class DummyOrgConfig(OrgConfig):
      def refresh_oauth_token(self):
          pass
  
subject: Use context manager