# Expectation custom description string Markdown not rendered

**URL:** <https://discourse.greatexpectations.io/t/expectation-custom-description-string-markdown-not-rendered/2109>\
**Category:** GX Core Support\
**Tags:** help-wanted\
**Created:** [February 24, 2025, 9:15am UTC](https://discourse.greatexpectations.io/t/expectation-custom-description-string-markdown-not-rendered/2109 "2025-02-24T09:15:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gontcharovd](https://avatars.discourse-cdn.com/v4/letter/g/d6d6ee/32.png) [@gontcharovd](https://discourse.greatexpectations.io/u/gontcharovd)\
**Post date:** [February 24, 2025, 9:15am UTC](https://discourse.greatexpectations.io/t/expectation-custom-description-string-markdown-not-rendered/2109/1 "2025-02-24T09:15:13Z")

</div>

Hello, I’m generating Data Docs where one of the expectations has a custom description following [this GX guide](https://docs.greatexpectations.io/docs/core/customize_expectations/define_a_custom_expectation_class) for version 1.3.7.

According to the guide, the description supports Markdown syntax. However, in my case the Markdown is not rendered:

 ![image](https://canada1.discourse-cdn.com/flex031/uploads/greatexpectations/original/1X/67551b1017438b5d9df546cf70f25cb31e5def7a.png)

Why is the Markdown syntax in the `description` field not rendered in my Data Doc?

This is my code:

```auto
import pandas as pd
import great_expectations as gx
import great_expectations.expectations as gxe

from great_expectations import RunIdentifier
from datetime import datetime

CONTEXT_DIR = "/home/denis/code/gx_description" # adapt to your environment
DATA_SOURCE_NAME = "pandas_dataframes_3"
DATA_ASSET_NAME = "sample_dataframe_3"
BATCH_DEFINITION_NAME = "sample_batch_3"
SUITE_NAME = "pandas_expectations_3"
VALIDATION_DEFINITION_NAME = "validate_pandas_3"
CHECKPOINT_NAME = "checkpoint_pandas_3"

class ExpectValidNumericColumn(gx.expectations.ExpectColumnValuesToBeBetween):
    column: str = "NumericColumn"
    min_value: int = 10
    max_value: int = 90
    description: str = "This is my custom *description* in **Markdown**"

# Configure GX on initialization
def config(context):
    ## Data Source
    data_source = context.data_sources.add_pandas(name=DATA_SOURCE_NAME)

    ## Data Asset
    data_asset = data_source.add_dataframe_asset(name=DATA_ASSET_NAME)

    ## Data Batch
    batch_definition = data_asset.add_batch_definition_whole_dataframe(
        BATCH_DEFINITION_NAME
    )

    ## Two Expectations
    expectation_numeric = ExpectValidNumericColumn()

    ## Suite
    suite = gx.ExpectationSuite(name=SUITE_NAME)
    suite.add_expectation(expectation_numeric)
    suite = context.suites.add(suite)

    ## Validation Definition
    validation_definition = gx.ValidationDefinition(
        data=batch_definition, suite=suite, name=VALIDATION_DEFINITION_NAME
    )
    validation_definition = context.validation_definitions.add(validation_definition)

    ## Checkpoint
    checkpoint = gx.Checkpoint(
        name=CHECKPOINT_NAME,
        validation_definitions=[validation_definition],
        actions=[gx.checkpoint.UpdateDataDocsAction(name="update_data_docs")],
        result_format={"result_format": "SUMMARY"},
    )
    checkpoint = context.checkpoints.add(checkpoint)

def main(do_config):
    # GX Context
    context = gx.get_context(mode="file", project_root_dir=CONTEXT_DIR)

    if do_config is True:
        config(context)

    # Get existing GX checkpoint
    checkpoint = context.checkpoints.get(CHECKPOINT_NAME)

    ## Create a sample DataFrame
    df = pd.DataFrame(
        {
            "NumericColumn": range(10, 110, 10),
            "TextColumn": [f"Item {i}" for i in range(1, 11)],
        }
    )

    # Create batch of data
    batch_parameters = {"dataframe": df}

    # Configure Data Doc
    current_date = datetime.now().strftime("%Y-%m-%d")
    custom_run_id = RunIdentifier(run_name=current_date, run_time=datetime.now())

    # Run validation (checkpoint)
    results = checkpoint.run(batch_parameters=batch_parameters, run_id=custom_run_id)
    print(results)

    context.open_data_docs()

if __name__ == " __main__":
    do_config = False
    main(do_config)

```
