<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def create_policy_version(policy_name, policy_document, set_as_default=None,
                 region=None, key=None, keyid=None, profile=None):
    '''
    Create a policy version.

    CLI Example:

    .. code-block:: bash

        salt myminios boto_iam.create_policy_version mypolicy '{"Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": ["arn:aws:s3:::my-bucket/shared/*"]},]}'
    '''
    conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)

    if not isinstance(policy_document, six.string_types):
        policy_document = salt.utils.json.dumps(policy_document)
    params = {}
    for arg in ('set_as_default',):
        if locals()[arg] is not None:
            params[arg] = locals()[arg]
    policy_arn = _get_policy_arn(policy_name, region, key, keyid, profile)
    try:
        ret = conn.create_policy_version(policy_arn, policy_document, **params)
        vid = ret.get('create_policy_version_response', {}).get('create_policy_version_result', {}).get('policy_version', {}).get('version_id')
        log.info('Created IAM policy %s version %s.', policy_name, vid)
        return {'created': True, 'version_id': vid}
    except boto.exception.BotoServerError as e:
        log.debug(e)
        log.error('Failed to create IAM policy %s version %s.', policy_name, vid)
        return {'created': False, 'error': __utils__['boto.get_error'](e)}