def METHOD_NAME(context: AssertionContext) -> AssertionResult:
    table = context.table
    column = context.column
    metrics = context.profiler_result
    column_metrics = metrics.get('tables', {}).get(table, {}).get('columns', {}).get(column)
    if not column_metrics:
        return context.result.fail_with_metric_not_found_error(context.table, context.column)
    # Check assertion input
    assert_types = context.asserts.get('types', [])
    assert_types = [x.lower() for x in assert_types]
    if not assert_types:
        return context.result.fail_with_assertion_error(f'Expect a list of types in {COLUMN_TYPES}')
    invalid_types = [t for t in assert_types if t not in COLUMN_TYPES]
    if invalid_types:
        return context.result.fail_with_assertion_error(
            f'Invalid types {invalid_types}. The column type should one of {COLUMN_TYPES}.')
    context.result.expected = assert_types
    column_type = column_metrics.get('type')
    context.result.actual = column_type
    if column_type in set(assert_types):
        return context.result.success()
    return context.result.fail()