Skip to content

release v0.26.0 (dbt package v0.26.0) (#2347) - #2348

Open
github-actions[bot] wants to merge 857 commits into
docsfrom
master
Open

release v0.26.0 (dbt package v0.26.0) (#2347)#2348
github-actions[bot] wants to merge 857 commits into
docsfrom
master

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

cursoragent and others added 30 commits November 19, 2025 00:21
This commit introduces HTML formatting for messages, including support for various blocks like headers, text, lists, tables, and expandable sections. It also adds comprehensive unit tests with corresponding HTML fixtures to ensure correct rendering.

Co-authored-by: mika <mika@elementary-data.com>
- Added comprehensive test coverage for all block types (TableBlock, CodeBlock, DividerBlock, ActionsBlock)
- Improved fact list styling: removed backgrounds/borders, added max-width:200px on labels
- Standardized font-size to 14px across all blocks (fact lists, tables, expandable)
- Removed ActionsBlock rendering (not supported in HTML emails, matches adaptive cards)
- Made expandable blocks actually expandable using HTML5 details/summary elements
- Added visual arrow indicators (▶/▼) to expandable blocks, properly hiding native browser triangles
- Enhanced bullet lists with proper semantic HTML (ul/li elements) and automatic pattern detection
- All 36 HTML formatter tests passing
CSS property syntax (colons and semicolons in style strings) triggers false positive flake8 E231 and E702 errors. Added noqa comments to suppress these warnings for legitimate CSS syntax within Python string literals.
- Add 800px max-width to main container for better readability
- Update container padding to 24px top, 32px left/right, 32px bottom
- Match all borders to status color (red/yellow/green) when color is set
- Adjust left padding to 28px when colored border is applied (to account for 4px thicker left border)
- Set fact list (questions/answers) left column to fixed 160px width
- Add 8px extra top and bottom margin to fact list blocks
- Add max-height (400px) and scroll to code blocks to prevent excessive vertical space
- Fix expandable block arrow to rotate 90° when opened (▶ → ▼) with smooth transition
- Update test fixtures to reflect all design changes
- Add code_block_long.html fixture to demonstrate scrollable code blocks

These changes only affect HTML email formatting and do not impact Slack (Block Kit) or Teams (Adaptive Cards) integrations.
- Corrected string formatting for CSS styles in HTML output
- Simplified inline space handling logic in bullet lists
- Added flake8 noqa comments to suppress style warnings for CSS syntax

These changes enhance the maintainability of the HTML formatter without altering its functionality.
- Update fixtures for all formats (HTML, Adaptive Cards, Block Kit, Markdown, Text)
- Reflects enhanced base test suite with additional blocks:
  - CodeBlock with multi-line code samples
  - DividerBlock for visual separation
  - TableBlock with headers and multiple columns
  - ActionsBlock with dropdown and user select components
  - Additional inline blocks (MentionBlock, InlineCodeBlock)
- All 198 message format tests passing
- Extract all inline CSS styles to named class constants
- Split large methods into smaller, focused helper methods
- Add reusable helper methods for common patterns:
  - _skip_whitespace() for navigating inline blocks
  - _is_bullet_marker() for identifying bullet markers
  - _extract_bullet_parts() for parsing bullet list lines
  - _format_bullet_list_item() for formatting list items
- Split block formatting into dedicated methods:
  - _format_header_block(), _format_code_block(), _format_divider_block()
  - _format_link_block(), _format_inline_code_block(), _format_mention_block()
  - _format_table_header(), _format_table_body(), _format_table_row()
  - _build_expandable_summary() for expandable block arrows

No functional changes - all 36 HTML format tests passing
All pre-commit checks passing (black, isort, flake8, mypy)
…l-formatter-81ef

Create html email formatter
…ted-dags

Remove deprecated test recommendations macro
…th-single-quotes

Fix: Properly quote database and schema identifiers for SQL compatibility
Added introductory section about Elementary OSS and its features.
Updated README to include a new image format and alignment.
haritamar and others added 28 commits June 3, 2026 19:13
…1.10.1

dbt-dremio 1.10.1 changed TABLE schema resolution to use +root_path instead of +schema. Without +root_path set, tables fall back to target.root_path directly, landing at 'elementary_tests' instead of 'elementary_tests.elementary'. The CLI profile hardcodes 'elementary_tests.elementary', causing 'object not found' errors. Adding +root_path: elementary makes tables land at the same path in both 1.10.0 and 1.10.1.

Co-authored-by: Cursor <cursoragent@cursor.com>
fix(dremio): add +root_path to e2e project to fix CI with dbt-dremio 1.10.1
Co-authored-by: Cursor <cursoragent@cursor.com>
…d-report-bundle

chore: update report bundle to v1.0.35
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Release v0.25.0 (dbt package v0.25.0)
* Replace sed with ruamel.yaml for packages.yml version bumps

The sed-based version replacement in bump-version.yml had two issues:
1. It only matched 'version: X.Y.Z' patterns, missing the case where
   master has a git hash reference for dbt-data-reliability
2. It also matched commented-out version lines

Replace the sed command for packages.yml with a Python script using
ruamel.yaml (round-trip YAML parser) that preserves comments, quotes,
flow-style, and indentation. The script handles both cases:
- Updates an existing package version reference (one-line diff)
- Replaces a git hash reference with a proper package version

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Remove comment-preservation logic from git-hash swap

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Itamar Hartstein <haritamar@gmail.com>
* Add Dependency Review GitHub Action

Adds the dependency-review-action workflow to scan PRs for dependency changes that introduce known vulnerabilities.

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Set persist-credentials: false on checkout step

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Add workflow_dispatch trigger to dependency review

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Add license enforcement via allow-licenses

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Wire workflow_dispatch with base-ref/head-ref inputs

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Add fail-on-severity: high to dependency review workflow

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Expand license allowlist to handle compound SPDX expressions

Add deny-licenses for AGPL, SSPL, BUSL, Elastic.

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Remove deny-licenses (cannot use both allow and deny)

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Block GPL, exempt specific packages with compound licenses

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Organize allow-licenses into commented sections

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Move license config to separate file with categorized comments

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Add license exceptions for new uv.lock dependencies

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Trim license exceptions to only packages in this repo's dependency tree

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* Pin PyAthena below 3.35 for Athena CI compatibility.

dbt-athena 1.10.x is incompatible with PyAthena 3.35's ExecuteOptions refactor;
keep CI on 3.34 until dbt-athena ships the boto3 connection manager.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Pin PyAthena via pyproject and shared CI constraints.

Declare pyathena<3.35 in the athena extra instead of ad-hoc workflow
pip installs, and reuse tests/ci/athena-constraints.txt for dbt-only jobs.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Drop redundant Athena constraints from test-warehouse CI.

The pyproject.toml athena extra already pins pyathena when installing
.[athena]; keep athena-constraints.txt for cleanup-stale-schemas only.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: arbiv <12132333+arbiv@users.noreply.github.com>
…-severity Dependabot alerts (#2310)

* chore(deps): pin pyasn1 >=0.6.4 to fix high-severity Dependabot alerts

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(deps): pin cryptography >=50.0.0 to fix high-severity Dependabot alert

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(deps): drop upper caps on transitive security pins (idna, pyasn1, cryptography, urllib3)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* chore(deps): correct idna advisory reference to CVE-2026-45409

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…l-the-message-formats

Add NEW icon to all message formats
…2324)

* ci: set allow-unsafe-pr-checkout on fork PR checkout in test-warehouse

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* ci: don't persist git credentials for fork PR checkouts

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ps (#2305)

* fix: interpret naive detected_at as UTC when rendering alert timestamps

detected_at values loaded from the alerts table are naive datetimes
stored in UTC. Passing them directly to datetime.astimezone()
interprets them as local time, so on non-UTC hosts the alert "Time:"
field showed the UTC value labeled with the local timezone,
inconsistent with max_loaded_at in the same message which is correctly
converted via convert_datetime_utc_str_to_timezone_str().

Attach UTC tzinfo to naive detected_at before converting;
detected_at_utc is now always timezone-aware UTC. Timezone-aware
inputs behave as before.

Fixes #2304

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: use tz-aware fallback in BaseAlertsGroup.detected_at for alerts with missing timestamps

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* bugfix to _normalize_timezone_offset (fixes a broken test

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Itamar Hartstein <haritamar@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* Support dbt 2.0 / Fusion in the edr CLI

- Auto-detect the installed dbt flavor (dbt-core 1.x / dbt-core 2.x /
  binary-only Fusion) via package metadata instead of importing dbt.version
- Rename DbtFusionRunner to Dbt2Runner (dbt 2.0 is the Fusion engine);
  keep 'fusion' as a backward-compatible runner-method alias
- Widen dbt-core constraint to <3.0.0
- Migrate the e2e dbt project to dbt 2.0-compatible syntax (dbt-autofix)
- Add fusion + dbt-core 2.x CI targets on Fusion-supported warehouses

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Fix CI for dbt 2.x targets: jinja2 dep, config-strip ordering, API test skip

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Document E2E project's minimum dbt-core version

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Make e2e run validation status-based (dbt 2.0 reports ephemeral models as no-op)

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* CI: render e2e package path for dbt 2.x, surface run validation failures

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Add job timeout to warehouse test workflow

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Use a per-dbt-version seeds schema to avoid concurrent CI conflicts

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Read the seeds schema from TEST_SEEDS_SCHEMA in the Spark external seeder

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Pin dbt Fusion to 2.0.0rc205 in CI to avoid Snowflake hangs in rc212

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Reject dbt 2.x/fusion with vertica in CI; quote seed schema in Spark seeder

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Repin fusion to rc212; use threads=1 for fusion/snowflake to avoid driver hang

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Apply snowflake threads=1 mitigation to dbt-core 2.x jobs too

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Support generic '2.x' dbt version that tracks the latest dbt-core 2.x release

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Fix 2.x version spec: prereleases order below 2.0.0 under PEP 440

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Pass --threads 1 explicitly for dbt 2.x snowflake jobs (dbt-core 2.0.0b2 ignores profile threads)

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Exclude dbt-core 2.x snowflake job: 2.0.0b2 engine hangs even with threads 1

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Retrigger CI (transient databricks connectivity timeout in send-report)

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Address review: unpin fusion, Python 3.11 globally, profile-level snowflake threads, drop redundant comments

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Remove custom seeds schema so seeds land in the target schema; fix fabric auth method

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Pin dbt-fabric<1.11 in CI

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Revert fabric authentication value to ServicePrincipal

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Remove leftover target-path comment

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

* Note v1-only runner methods; deprecation warning for DbtFusionRunner

Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
edr looks for profiles.yml in HOME/.dbt/ only, not in the current
working directory first.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Itamar Hartstein <haritamar@gmail.com>
Co-authored-by: haritamar <11314965+haritamar@users.noreply.github.com>
@staticmethod
def run(cmd: list[str], check: bool = True, **kw: object) -> subprocess.CompletedProcess: # type: ignore[type-arg]
"""Run a command, printing it first."""
print(f" -> {shlex.join(cmd)}")
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 0b717629-e4ac-449d-b338-2105eb063bb7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

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.