Skip to content

Warn and normalize when source_rendering_behavior=None is passed#2570

Merged
pankajastro merged 1 commit into
mainfrom
FIX_source_rendering_behavior_none
Apr 17, 2026
Merged

Warn and normalize when source_rendering_behavior=None is passed#2570
pankajastro merged 1 commit into
mainfrom
FIX_source_rendering_behavior_none

Conversation

@pankajastro
Copy link
Copy Markdown
Contributor

@pankajastro pankajastro commented Apr 16, 2026

Python does not enforce type annotations at runtime, so passing None for source_rendering_behavior bypasses the SourceRenderingBehavior.NONE default, causing sources to be rendered incorrectly and an AttributeError in converter.py when .value is called on None.

Add a guard in RenderConfig.post_init that issues a UserWarning and normalizes None to SourceRenderingBehavior.NONE, consistent with the existing deprecation warning pattern in post_init.

DAG

example_watcher = DbtDag(
    # dbt/cosmos-specific parameters
    execution_config=ExecutionConfig(
        execution_mode=ExecutionMode.WATCHER,
    ),
    project_config=ProjectConfig(jaffle_shop_path),
    render_config=RenderConfig(source_rendering_behavior=None), 
    profile_config=default_profile,
    # normal dag parameters
    schedule="@daily",
    start_date=datetime(2023, 1, 1),
    catchup=False,
    dag_id="example_watcher",
    default_args={"retries": 0},
    operator_args={
        "dbt_cmd_flags": ["--log-level", "debug"],
    },
)

Before change DAG topology
Screenshot 2026-04-17 at 1 42 49 AM

After Change DAG topology
Screenshot 2026-04-17 at 1 41 10 AM

closes: #2568

Python does not enforce type annotations at runtime, so passing None
for source_rendering_behavior bypasses the SourceRenderingBehavior.NONE
default, causing sources to be rendered incorrectly and an AttributeError
in converter.py when .value is called on None.

Add a guard in RenderConfig.__post_init__ that issues a UserWarning and
normalizes None to SourceRenderingBehavior.NONE, consistent with the
existing deprecation warning pattern in __post_init__.
@pankajastro pankajastro marked this pull request as ready for review April 16, 2026 20:18
Copilot AI review requested due to automatic review settings April 16, 2026 20:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a runtime misconfiguration edge case in Cosmos RenderConfig where passing source_rendering_behavior=None bypasses the intended default (SourceRenderingBehavior.NONE), leading to incorrect source rendering and downstream AttributeErrors when .value is accessed.

Changes:

  • Add a RenderConfig.__post_init__ guard that warns when source_rendering_behavior=None is provided and normalizes it to SourceRenderingBehavior.NONE.
  • Add a unit test asserting the warning is emitted and the value is normalized.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
cosmos/config.py Normalizes source_rendering_behavior=None to SourceRenderingBehavior.NONE and emits a UserWarning to prevent incorrect rendering/telemetry errors.
tests/test_config.py Adds coverage to ensure the new warning + normalization behavior is enforced.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.05%. Comparing base (aa4c770) to head (6168966).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2570   +/-   ##
=======================================
  Coverage   98.04%   98.05%           
=======================================
  Files         103      103           
  Lines        7589     7592    +3     
=======================================
+ Hits         7441     7444    +3     
  Misses        148      148           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pankajastro pankajastro modified the milestone: Cosmos 1.14.1 Apr 16, 2026
@pankajastro pankajastro self-assigned this Apr 16, 2026
Comment thread cosmos/config.py
@pankajastro pankajastro requested a review from tatiana April 17, 2026 13:10
@pankajastro pankajastro merged commit 37fd06c into main Apr 17, 2026
128 checks passed
@pankajastro pankajastro deleted the FIX_source_rendering_behavior_none branch April 17, 2026 13:18
@pankajastro pankajastro removed this from the Cosmos 1.14.1 milestone Apr 22, 2026
@pankajkoti pankajkoti mentioned this pull request Apr 23, 2026
@tatiana tatiana added this to the Cosmos 1.14.1 milestone Apr 23, 2026
tatiana pushed a commit that referenced this pull request Apr 23, 2026
Bug Fixes

* Fix ``ExecutionMode.WATCHER`` producer retry behaviour by @tatiana in
#2559
* Prevent watcher producer skip propagating to downstream tasks via
gateway task by @johnhoran and @tatiana in #2597
* Keep watcher sensor polling when producer is still running by
@pankajkoti in #2592
* Fix circular import error in Cosmos plugin discovery under Astro
Runtime by @tatiana in #2538
* Fix ``CosmosRichLogger`` crash on ``None`` log message by @tatiana in
#2540
* Enable inlets and outlets using dbt Fusion on Airflow 3 by
@ichirotakami in #2561
* Fix incorrectly skipped source downstream tasks in
``ExecutionMode.WATCHER`` by @pankajastro in #2563
* Fix duplicate logs in ``dbt build`` when source freshness is enabled
by @pankajastro in #2564
* Warn and normalize when ``source_rendering_behavior=None`` is passed
by @pankajastro in #2570
* Gracefully handle ``Variable.set()`` failures on Astro Remote
Execution by @hkc-8010 in #2573
* Skip malformed YAML selectors instead of failing entirely by
@YourRoyalLinus in #2577

Docs

* Update watcher test behavior docs for Cosmos 1.14.0 by @tatiana in
#2549
* Add redirect for moved partial-parsing docs page by @tatiana in #2550
* Document ``ExecutionMode.WATCHER`` and ``depends_on_past`` limitation
by @tatiana in #2602
* Restore memory-optimised imports docs for Cosmos < 1.14.0 by
@pankajkoti in #2604

Others

* Speed up Airflow 3.1+ integration tests by caching
InProcessExecutionAPI by @pankajkoti in #2547
* Improve stability of cache hash unit tests by @tatiana in #2539
* Fix mypy 1.20.0 type check failures by @pankajkoti in #2546
* Fix CI failures caused by docs build memory exhaustion by @pankajkoti
in #2580
* Fix dbt Fusion broken integration tests by @tatiana in #2581
* Fix flaky ``cosmos_manifest_selectors_example`` DAG in CI by
@pankajkoti in #2593
* Reduce pre-commit autoupdate frequency PRs by @tatiana in #2544
* Bump ``reviewdog/action-actionlint`` from 1.71.0 to 1.72.0 by
@dependabot in #2542
* Skip watcher gateway test on Airflow 3.0 by @tatiana in #2607

closes: astronomer/oss-integrations-private#381
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dbt source freshness still executes despite source_rendering_behavior=none after in Cosmos 1.14.0

3 participants