@log_calls
  def create_scope(self, path, user=None, message=None, time=None):
    '''Initialize a new scope at the given path.'''
    # Initialize a scope by creating an empty commit
    # XXX In the future, could support adding scopes over existing content.
    # Then this first commit could include any existing content, too, and we'd
    # walk up the tree and remove those items from the parent manifest.
    if not user:
      user = UNKNOWN_USER
    if not message:
      message = "new scope at '%s'" % path
    if self.get_tip(path, expect=False) is not None:
      raise InvalidOperation(path % "scope already exists: %s", suppressable=True)
    rev = self._commit_items(path, None, [], Changelist(), user=user, message=message, time=time)
    # XXX There is a minor transactionality issue if we get interrupted before
    # append_string call -- scope will exist but not be recorded -- but this is
    # very unlikely and the consequnces of it are fairly minor (newscope will
    # abort next time and scope will have to be manually cleaned up).
    self.store.append_string(self._store_path_scopes(), path + "\n")
    log.info("new scope '%s' at revision %s", path, rev)
dataset/ETHPy150Open bloomreach/zinc/zinc.py/Repo.create_scope/swapped operands of `%`