Hello, I’m generating Data Docs where one of the expectations has a custom description following this GX guide for version 1.3.7.
According to the guide, the description supports Markdown syntax. However, in my case the Markdown is not rendered:
Why is the Markdown syntax in the description
field not rendered in my Data Doc?
This is my code:
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)