dbt-core 1.11.0 - Juan R. Torruella (December 19, 2025)
Features
- Add file_format to catalog integration config (#11695)
- 11561 (#deprecate, #--models,--model,, #and, #-m, #flags)
- Update jsonschemas with builtin data test properties and exposure configs in dbt_project.yml for more accurate deprecations (#11335)
- Support loaded_at_query and loaded_at_field on source and table configs (#11659)
- Begin validating configs from model sql files (#11727)
- Deprecate
overrides property for sources (#11566)
- Create constrained namespace for dbt engine env vars (#11340)
- Gate jsonschema validations by adapter (#11680)
- Deprecate top-level argument properties in generic tests (#11847)
- Deprecate {{ modules.itertools }} usage (#11725)
- Default require_generic_test_arguments_property flag to True - The 'arguments' property will be parsed as keyword arguments to data tests, if provided (#11911)
- Support Nested Key Traversal in dbt ls json output (#11919)
- No-op when project-level
quoting.snowflake_ignore_case is set. (#11882)
- Support UDFs by allowing user definition of
function nodes (#11923)
- Support listing functions via
list command (#11967)
- Support selecting funciton nodes via: name, file path, and resource type (#11962, #11958, #11961)
- Parse catalogs.yml during parse, seed, and test commands (#12002)
- Handle creation of function nodes during DAG execution (#11965)
- Support configuring model.config.freshness.build_after.updates_on without period or count (#12019)
- Add
function macro to jinja context (#11972)
- Adding run_started_at to manifest.json metadata (#12047)
- Validate {{ config }} in SQL for models that don't statically parse (#12046)
- Add
type property to function nodes (#12042, #12037)
- Support function nodes for unit tested models (#12024)
- Support partial parsing for function nodes (#12072)
- Allow for the specification of function volatility (#QMalcolm)
- Add python UDF parsing support (#12043)
- Allow for defining funciton arguments with default values (#12044)
- Raise jsonschema-based deprecation warnings by default (#12240)
- :bug: :snowman: Disable unit tests whose model is disabled (#10540)
- Implement config.meta_get and config.meta_require (#12012)
Fixes
- Don't warn for metricflow_time_spine with non-day grain (#11690)
- Fix source freshness set via config to handle explicit nulls (#11685)
- Ensure build_after is present in model freshness in parsing, otherwise skip freshness definition (#11709)
- Ensure source node
.freshness is equal to node's .config.freshness (#11717)
- ignore invalid model freshness configs in inline model configs (#11728)
- Fix store_failures hierarachical config parsing (#10165)
- Remove model freshness property support in favor of config level support (#11713)
- Bump dbt-common to 1.25.0 to access WarnErrorOptionsV2 (#11755)
- ensure consistent casing in column names while processing user unit tests (#11770)
- Update jsonschema definitions with nested config defs, cloud info, and dropping source overrides (#N/A)
- Make
GenericJSONSchemaValidationDeprecation a "preview" deprecation (#11814)
- Correct JSONSchema Semantic Layer node issues (#11818)
- Improve SL JSONSchema definitions (#N/A)
- raise MissingPlusPrefixDeprecation instead of GenericJSONSchemaValidationDeprecation when config missing plus prefix in dbt_project.yml (#11826)
- Propagate config.meta and config.tags to top-level on source nodes (#11839)
- Safe handling of malformed config.tags on sources/tables (#11855)
- Quoting the event_time field when the configuration says so (#11858)
- Raise PropertyMovedToConfigDeprecation instead of CustomTopLevelKeyDeprecation when additional attribute is a valid node config (#11879)
- Avoid redundant node patch removal during partial parsing (#11886)
- Comply with strict
str type when block.contents is None (#11492)
- Remove duplicative PropertyMovedToConfigDeprecation for source freshness (#11880)
- Add path to MissingArgumentsPropertyInGenericTestDeprecation message (#11940)
- Unhide sample mode CLI flag (#11959)
- Implement checked_agg_time_dimension_for_simple_metric to satisfy dbt-semantic-interfaces>0.9.0 (#11998)
- Propagate column meta/tags from config to tests (#11984)
- Skip initial render of loaded_at_query when specified as source or table config (#11973)
- Guarantee instantiation result and thread_exception prior to access to avoid thread hangs (#12013)
- Fixes a bug in the logic for legacy time spine deprecation warnings. (#11690)
- Fix errors in partial parsing when working with versioned models (#11869)
- Fix property names of function nodes (arguments.data_type, returns, returns.data_type) (#12064)
- Exclude
functions from being filtered by empty and event_time (#12066)
- Fix case of successful function status in logs (#12075)
- Fix
ref support in function nodes (#12076)
- Move function node
type into it's config (#12101)
- Support setting function node configs from dbt_project.yml (#12096)
- Fix parse error when build_after.count set to 0 (#12136)
- Stop compiling python udfs like python models (#12153)
- For metric names, fix bug allowing hyphens (not allowed in metricflow already), make validation throw ValidationErrors (not ParsingErrors), and add tests. (#n/a)
- Allow dbt deps to run when vars lack defaults in dbt_project.yml (#8913)
- Include macros in unit test parsing (#10157)
- Restore DuplicateResourceNameError for intra-project node name duplication, behind behavior flag
require_unique_project_resource_names (#12152)
- Allow the usage of
function with --exclude-resource-type flag (#12143)
- Fix bug where schemas of functions weren't guaranteed to exist (#12142)
- :bug: :snowman: Correctly reference foreign key references when --defer and --state provided (#11885)
- Fix generation of deprecations summary (#12146)
- :bug: :snowman: Add exception when using --state and referring to a removed test (#10630)
- :bug: :snowman: Stop emitting
NoNodesForSelectionCriteria three times during build command (#11627)
- :bug: :snowman: Fix long Python stack traces appearing when package dependencies have incompatible version requirements (#12049)
- :bug: :snowman: Fixed issue where changing data type size/precision/scale (e.g., varchar(3) to varchar(10)) incorrectly triggered a breaking change error fo (#11186)
- :bug: :snowman: Support unit testing models that depend on sources with the same name (#11975, #10433)
- Fix bug in partial parsing when updating a model with a schema file that is referenced by a singular test (#12223)
- :bug: :snowman: Avoid retrying successful run-operation commands (#11850)
- :bug: :snowman: Fix
dbt deps --add-package crash when packages.yml contains warn-unpinned: false (#9104)
- :bug: :snowman: Improve
dbt deps --add-package duplicate detection with better cross-source matching and word boundaries (#12239)
- :bug: :snowman: Fix false positive deprecation warning of pre/post-hook SQL configs (#12244)
- :bug: :snowman: Fix ref resolution within package when duplicate nodes exist, behind require_ref_searches_node_package_before_root behavior change flag (#11351)
- Improve error message clarity when detecting nodes with space in name (#11835)
- :bug: :snowman:Propagate exceptions for NodeFinished callbacks in dbtRunner (#11612)
- Adds omitted return statement to RuntimeConfigObject.meta_require method (#12288)
- Do not raise deprecation warning when encountering dataset or project configs for bigquery (#12285)
Under the Hood
- Prevent overcounting PropertyMovedToConfigDeprecation for source freshness (#11660)
- call adapter.add_catalog_integration during parse_manifest (#11889)
- Fix docker os dependency install issue (#11934)
- Ensure dbt-core modules aren't importing versioned artifact resources directly (#11951)
- Update jsonschemas used for schema-based deprecations (#11987)
- Introduce dbt_version-based manifest json upgrade framework to avoid state:modified false positives on minor evolutions (#12006)
- Reorganize jsonschemas directory structure (#12121)
- add dbt/jsonschemas to manifest.in (#12126)
- Move from setup.py to pyproject.toml (#5696)
- Fixes issue where config isn't propagated to metric from measure when set as create_metric:True (#None)
- Support DBT_ENGINE prefix for record-mode env vars (#12149)
- Update jsonschemas for schema.yml and dbt_project.yml deprecations (#12180)
- Replace setuptools and tox with hatch for build, test, and environment management. (#12151)
- Bump lower bound for dbt-common to 1.37.2 (#12284)
Dependencies
- Bump minimum jsonschema version to
4.19.1 (#11740)
- Allow for either pydantic v1 and v2 (#11634)
- Bump dbt-common minimum to 1.25.1 (#11789)
- Upgrade to dbt-semantic-interfaces==0.9.0 for more robust saved query support. (#11809)
- upgrade protobuf to 6.0 (#11916)
- Bump dbt-adapters minimum to 1.16.5 (#11932)
- Bump actions/setup-python from 5 to 6 (#11993)
- Loosen dbt-semantic-interfaces lower pin to >=0.9.0 (#12005)
- Drop support for python 3.9 (#12118)
Contributors
- @12030 (#QMalcolm)
- @3loka (#8913)
- @MichelleArk (#11818)
- @QMalcolm (#11727, #11340, #11680, #11923, #11967, #11962, #11958, #11961, #11965, #11972, #12042, #12037, #12024, #12072, #12043, #12044, #11685, #11709, #11717, #11713, #N/A, #11814, #N/A, #11959, #12064, #12066, #12075, #12076, #12101, #12096, #12153, #12143, #12142, #11627, #11934, #11951, #11740, #11634, #11789, #11932, #12118)
- @WilliamDee (#None)
- @aksestok (#11882)
- @aranke (#11660)
- @asiunov (#12146)
- @colin-rogers-dbt (#11695, #11728, #11770, #11889, #11916)
- @courtneyholcomb (#11690, #11690, #11809)
- @emmyoop (#10630, #12049, #11186, #9104, #12239, #5696, #12151)
- @gshank (#12012, #11869)
- @mattogburke (#12223)
- @michellark (#11885, #11987)
- @michelleark (#deprecate, #--models,--model,, #and, #-m, #flags, #11335, #11659, #11847, #11725, #11911, #12002, #12019, #12047, #12046, #12240, #10540, #10165, #11755, #11826, #11839, #11855, #11879, #11880, #11940, #11998, #11984, #11973, #12013, #12136, #10157, #12152, #11975, #10433, #11850, #12244, #11351, #11835, #11612, #12285, #12006, #12121, #12126, #12149, #12180, #12284, #12005)
- @mjsqu (#12288)
- @nathanskone (#10157)
- @pablomc87 (#11858)
- @peterallenwebb (#11566)
- @theyostalservice (#n/a)
- @trouze (#11919)
- @wircho (#11886, #11492)
Juan R. Torruella (1865 - 1915)
Thanks to @reubenmc for writing this biography of Juan R. Torruella—a famous Philadelphian, and the namesake of this dbt Core release.
Juan R. Torruella collected lives the way most people collect titles. He was the first Hispanic judge on the U.S. Court of Appeals for the First Circuit, a four-time Summer Olympian who captained the Puerto Rican team, and the author of Global Intrigues, a sweeping account of the diplomatic context of the Spanish–American War and the United States’ rise to world power.
Torruella was born in Old San Juan on June 7, 1933, to his father Juan N. Torruella, a dentist who became a lawyer, and his mother, Belén del Valle de Torruella. At his father’s urging, Torreulla earned a B.S. from the Wharton School of the University of Pennsylvania in 1954 and a J.D. from Boston University in 1957. He would keep returning to school, picking up a Master of Laws from the University of Virginia School of Law, a Master’s in Public Administration from the University of Puerto Rico, and a Master’s in European History from Oxford.
After finishing law school, Torruella originally planned to take the bar exam in Massachusetts. However, after coming down with mumps the day before the test, he returned to his native Puerto Rico, where he clerked for a justice of the Puerto Rico Supreme Court, became an attorney for the National Labor Relations Board, and later entered private practice, becoming a partner at Fiddler, Gonzalez & Rodriguez. President Ford nominated him to the U.S. District Court for Puerto Rico in 1974. He served as chief judge from 1982 to 1984, and was then elevated to the U.S. Court of Appeals First Circuit by then president Ronald Reagan.
Off the bench, Torruella was a ferocious sailor, competing in four consecutive Summer Olympics across three different boat classes and captaining the Puerto Rican Olympic team. He completed several long-distance voyages, including a return trans-Atlantic crossing to commemorate the 500th anniversary of the European discovery of the Americas, and an 8,000-mile trip from the Caribbean Sea to Buenos Aires.
Alongside all of this, Torruella remained a staunch advocate for Puerto Rico’s political and legal status. When Torruella was nominated to the appeals court, he reminded those who congratulated him that he had never lost sight of his roots, remarking that, “I am aware that my actions will not only be used to measure me, but also the community from which I so proudly come. This is a heavy burden, but one whose challenge I gladly accept.”