The ChevronProcess component draws horizontal, sequential process pipelines consisting of interlocking arrowhead blocks (chevrons).
It is the premier component for CI/CD delivery pipelines, phased development milestones, fulfillment lifecycles, and multi-step workflows.
Overview of ChevronProcess: Standard Flat-Start vs. Indented Multi-Line PipelinesSource Code
2. Classic Indented Chevrons with Explicit item_width & corner_angle
Setting flat_left_end=False (the default) renders every stage—including the first—as a classic indented chevron, while passing an explicit item_width to draw(...) gives every stage an exact fixed body width instead of auto-dividing a bounding container width. You can also adjust corner_angle (valid range: 10.0 to 80.0 degrees) to control arrowhead sharpness, and mutate returned ChevronItem instances before drawing.
fromdrawlib.canvasimportsave,setupfromdrawlib.smartartsimportChevronProcessfromdrawlib.stylesimportStylessetup(width=126,height=34)etl=ChevronProcess(style=Styles.Neutral,text_style=Styles.DarkBold.patch(text_size=10.5),description_style=Styles.Dark.patch(text_size=10.0),corner_angle=45.0,spacing=2.5,flat_left_end=False,)etl.add("1. Ingest",description="Kafka Stream",style=Styles.PrimaryNeutral)transform_stage=etl.add("2. Cleanse",description="Schema Check")etl.add("3. Enrich",description="Feature Join",style=Styles.SecondaryNeutral)etl.add("4. Serve",description="Parquet Lake")# Mutate a ChevronItem (or access via etl.items[1]) before calling draw()transform_stage.style=Styles.PrimaryFlattransform_stage.text_style=Styles.WhiteBold.patch(text_size=10.5)transform_stage.description_style=Styles.White.patch(text_size=10.0)etl.draw(xy=(6.5,8.0),height=18.0,item_width=24.0)save()
Bottom-Left Anchor (x, y): The coordinate passed to draw(xy=...) represents the bottom-left corner of the entire process bounding box.
flat_left_end:
False(default): All stages—including the first—have an indented left notch matching the arrowhead tip angle.
True: The first chevron is drawn as a flat-backed pentagon with a clean vertical left border.
corner_angle: Angle of the arrowhead tip in degrees (valid range: 10.0 to 80.0, default 60.0). Lower angles (45.0) produce deeper, sharper arrowheads; higher angles (70.0) produce flatter tips.
Automatic vs. Explicit Stage Width (width vs. item_width):
When item_width=None(default), draw() automatically calculates each stage's body width from the total width, spacing, and arrowhead indent ($x_{\text{indent}} = \frac{\text{height}/2}{\tan(\text{corner_angle})}$):
$$\text{item_width} = \frac{\text{width} - (N - 1) \cdot \text{spacing} - x_{\text{indent}}}{N}$$
When item_width is explicitly provided, width is ignored and each stage uses item_width directly.