human
I wrote the below code

    @gen.coroutine
    def _CreateUser(user_dict):
        'Creates    a    single    user    from    the    provided    user_dict.'
        identity_key = ('Email:%s' % user_dict['email'])
        identity = (yield gen.Task(Identity.Query, client, identity_key, None, must_exist=False))
        user_id = None
        if ((identity is not None) and (identity.user_id is not None)):
            user = (yield gen.Task(User.Query, client, identity.user_id, None, must_exist=False))
            if (user is not None):
                user_id = user.user_id
                webapp_dev_id = user.webapp_dev_id
        if (user_id is None):
            (user_id, webapp_dev_id) = (yield User.AllocateUserAndWebDeviceIds(client))
        (user, identity) = (yield gen.Task(User.CreateProspective, client, user_id, webapp_dev_id, identity_key, util.GetCurrentTimestamp()))
        user_dict = deepcopy(user_dict)
        user_dict['user_id'] = user_id
        user = (yield gen.Task(User.Register, client, user_dict, {'key': identity_key, 'authority': 'Viewfinder'}, util.GetCurrentTimestamp(), rewrite_contacts=False))
        settings = AccountSettings.CreateForUser(user_id, email_alerts=AccountSettings.EMAIL_NONE)
        (yield gen.Task(settings.Update, client))
        (yield user.MakeSystemUser(client))
        raise gen.Return(user)
    global NARRATOR_USER
    NARRATOR_USER = (yield _CreateUser(_NARRATOR_USER_DICT))
    http_client = AsyncHTTPClient()
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS))
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS_2))
    (yield _UploadWelcomePhotos(http_client, client, NARRATOR_USER, NARRATOR_UPLOAD_PHOTOS_3))

What's a good function header?

Here's a good function header?
assistant
#Here's a good function header.

@gen.coroutine
def CreateSystemUsers(client):