def get_source_options(defaults=None):
    """source-related options

    """
    if defaults is None:
        defaults = {}
    options = {'--train': {'action': 'store', 'dest': 'training_set',
        'nargs': '?', 'default': defaults.get('train', None), 'help':
        'Training set path.'}, '--source': {'action': 'store', 'dest':
        'source', 'default': defaults.get('source', None), 'help':
        'BigML source Id.'}, '--source-file': {'action': 'store', 'dest':
        'source_file', 'default': defaults.get('source_file', None), 'help':
        'BigML source JSON structure file.'}, '--field-names': {'action':
        'store', 'dest': 'field_attributes', 'default': defaults.get(
        'field_names', None), 'help':
        "Path to a csv file describing field names. One definition per line (e.g., 0,'Last Name')."
        }, '--field-attributes': {'action': 'store', 'dest':
        'field_attributes', 'default': defaults.get('field_attributes',
        None), 'help':
        "Path to a csv file describing field attributes. One definition per line (e.g., 0,'Last Name')."
        }, '--types': {'action': 'store', 'dest': 'types', 'default':
        defaults.get('types', None), 'help':
        "Path to a file describing field types. One definition per line (e.g., 0, 'numeric')."
        }, '--no-train-header': {'action': 'store_false', 'dest':
        'train_header', 'default': defaults.get('train_header', True),
        'help': "The train set file hasn't a header."}, '--train-header': {
        'action': 'store_true', 'dest': 'train_header', 'default': defaults
        .get('train_header', True), 'help':
        'The train set file has a header.'}, '--progress-bar': {'action':
        'store_true', 'dest': 'progress_bar', 'default': defaults.get(
        'progress_bar', False), 'help':
        'Show progress details when creating a source.'}, '--locale': {
        'action': 'store', 'dest': 'user_locale', 'default': defaults.get(
        'locale', None), 'help': 'Chosen locale code string.'},
        '--source-attributes': {'action': 'store', 'dest':
        'source_attributes', 'default': defaults.get('source_attributes',
        None), 'help': 'Path to a json file describing source attributes.'},
        '--no-progress-bar': {'action': 'store_false', 'dest':
        'progress_bar', 'default': defaults.get('progress_bar', False),
        'help': 'Show progress details when creating a source.'},
        '--training-separator': {'action': 'store', 'dest':
        'training_separator', 'default': defaults.get('training_separator',
        None), 'help': 'Training set field separator.'}, '--project': {
        'action': 'store', 'dest': 'project', 'default': defaults.get(
        'project', None), 'help':
        'Name of the project to be created and/or used inresource creation.'
        }, '--project-id': {'action': 'store', 'dest': 'project_id',
        'default': defaults.get('project_id', None), 'help':
        'Id of the project to be used inresource creation.'},
        '--export-fields': {'action': 'store', 'dest': 'export_fields',
        'default': defaults.get('export_fields', None), 'help':
        'Path to a csv file describing the available field information. The first row is used as header.'
        }, '--import-fields': {'action': 'store', 'dest': 'import_fields',
        'default': defaults.get('import_fields', None), 'help':
        'Path to a csv file describing field attributes. The first row is used as header and rows are expected to comply the the --export-fields output.'
        }}
    return options
