def getResolvedOptions()

in awsglue/utils.py [0:0]


def getResolvedOptions(args, options):
    parser = GlueArgumentParser()

    if Job.continuation_options()[0][2:] in options:
        raise RuntimeError("Using reserved arguments " + Job.continuation_options()[0][2:])

    if Job.job_bookmark_options()[0][2:] in options:
        raise RuntimeError("Using reserved arguments " + Job.job_bookmark_options()[0][2:])

    parser.add_argument(Job.job_bookmark_options()[0], choices =Job.job_bookmark_options()[1:], required = False)
    parser.add_argument(Job.continuation_options()[0], choices =Job.continuation_options()[1:], required = False)

    for option in Job.job_bookmark_range_options():
        if option[2:] in options:
            raise RuntimeError("Using reserved arguments " + option)
        parser.add_argument(option, required=False)

    for option in Job.id_params()[1:]:
        if option in options:
            raise RuntimeError("Using reserved arguments " + option)
        # TODO: Make these mandatory, for now for backward compatability making these optional, also not including JOB_NAME in the reserved parameters list.
        parser.add_argument(option, required=False)

    if Job.encryption_type_options()[0] in options:
        raise RuntimeError("Using reserved arguments " + Job.encryption_type_options()[0])
    parser.add_argument(Job.encryption_type_options()[0], choices = Job.encryption_type_options()[1:])

    if Job.data_lineage_options()[0] in options:
        raise RuntimeError("Using reserved arguments " + Job.data_lineage_options()[0])
    parser.add_argument(Job.data_lineage_options()[0], required=False)
        
    # TODO: Remove special handling for 'RedshiftTempDir' and 'TempDir' after TempDir is made mandatory for all Jobs
    # Remove 'RedshiftTempDir' and 'TempDir' from list of user supplied options
    options = [opt for opt in options if opt not in {'RedshiftTempDir', 'TempDir'}]
    parser.add_argument('--RedshiftTempDir', required=False)
    parser.add_argument('--TempDir', required=False)

    for option in options:
        parser.add_argument('--' + option, required=True)

    parsed, extra = parser.parse_known_args(args[1:])

    parsed_dict = vars(parsed)

    # TODO: remove special handling after TempDir is made mandatory for all jobs
    if 'TempDir' in parsed_dict and parsed_dict['TempDir'] is not None:
        # TODO: Remove special handling for 'RedshiftTempDir' and 'TempDir'
        parsed_dict['RedshiftTempDir'] = parsed_dict['TempDir']
    elif 'RedshiftTempDir' in parsed and parsed_dict['RedshiftTempDir'] is not None:
        parsed_dict['TempDir'] = parsed_dict['RedshiftTempDir']

    # Special handling for continuations. If --job-bookmark-option is set we
    # use that, regardless of whether --continuation-option is set. If
    # --job-bookmark-option is not set but --continuation-option is set, fall
    # back to that.

    bookmark_value = parsed_dict.pop("continuation_option", None)
    if 'job_bookmark_option' not in parsed_dict or parsed_dict['job_bookmark_option'] is None:
        if bookmark_value is None:
            bookmark_value = Job.job_bookmark_options()[3]
        else:
            # translate old style continuation options into job-bookmark options
            option_index = Job.continuation_options().index(bookmark_value)
            bookmark_value = Job.job_bookmark_options()[option_index]

        parsed_dict['job_bookmark_option'] = bookmark_value
    absent_range_option = []
    for option in Job.job_bookmark_range_options():
       key = option[2:].replace('-','_')
       if key not in parsed_dict or parsed_dict[key] is None:
           absent_range_option.append(option)
    if parsed_dict['job_bookmark_option']  == 'job-bookmark-pause':
        if len(absent_range_option) == 1:
            raise RuntimeError("Missing option or value for "  +  absent_range_option[0])
    else:
        if len(absent_range_option) == 0:
            raise RuntimeError("Invalid option(s)"  +  ' '.join(Job.job_bookmark_range_options()))

    _global_args.update(parsed_dict)

    return parsed_dict