dbt-adapters 1.14.3__py3-none-any.whl → 1.14.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dbt-adapters might be problematic. Click here for more details.

dbt/adapters/__about__.py CHANGED
@@ -1 +1 @@
1
- version = "1.14.3"
1
+ version = "1.14.4"
dbt/adapters/base/impl.py CHANGED
@@ -77,6 +77,7 @@ from dbt.adapters.catalogs import (
77
77
  CatalogIntegration,
78
78
  CatalogIntegrationClient,
79
79
  CatalogIntegrationConfig,
80
+ CatalogRelation,
80
81
  )
81
82
  from dbt.adapters.contracts.connection import Credentials
82
83
  from dbt.adapters.contracts.macros import MacroResolverProtocol
@@ -283,7 +284,7 @@ class BaseAdapter(metaclass=AdapterMeta):
283
284
  Relation: Type[BaseRelation] = BaseRelation
284
285
  Column: Type[BaseColumn] = BaseColumn
285
286
  ConnectionManager: Type[BaseConnectionManager]
286
- CATALOG_INTEGRATIONS: Dict[str, Type[CatalogIntegration]] = {}
287
+ CATALOG_INTEGRATIONS: Iterable[Type[CatalogIntegration]] = []
287
288
 
288
289
  # A set of clobber config fields accepted by this adapter
289
290
  # for use in materializations
@@ -312,13 +313,20 @@ class BaseAdapter(metaclass=AdapterMeta):
312
313
  self.behavior = DEFAULT_BASE_BEHAVIOR_FLAGS # type: ignore
313
314
  self._catalog_client = CatalogIntegrationClient(self.CATALOG_INTEGRATIONS)
314
315
 
315
- def add_catalog_integration(self, catalog: CatalogIntegrationConfig) -> CatalogIntegration:
316
- return self._catalog_client.add(catalog)
316
+ def add_catalog_integration(
317
+ self, catalog_integration: CatalogIntegrationConfig
318
+ ) -> CatalogIntegration:
319
+ return self._catalog_client.add(catalog_integration)
317
320
 
318
321
  @available
319
322
  def get_catalog_integration(self, name: str) -> CatalogIntegration:
320
323
  return self._catalog_client.get(name)
321
324
 
325
+ @available
326
+ def build_catalog_relation(self, config: RelationConfig) -> CatalogRelation:
327
+ catalog = self.get_catalog_integration(config.catalog)
328
+ return catalog.build_relation(config)
329
+
322
330
  ###
323
331
  # Methods to set / access a macro resolver
324
332
  ###
@@ -60,7 +60,7 @@ class BaseRelation(FakeAPIObject, Hashable):
60
60
  require_alias: bool = (
61
61
  True # used to govern whether to add an alias when render_limited is called
62
62
  )
63
- catalog_name: Optional[str] = None
63
+ catalog: Optional[str] = None
64
64
 
65
65
  # register relation types that can be renamed for the purpose of replacing relations using stages and backups
66
66
  # adding a relation type here also requires defining the associated rename macro
@@ -7,4 +7,5 @@ from dbt.adapters.catalogs._exceptions import (
7
7
  from dbt.adapters.catalogs._integration import (
8
8
  CatalogIntegration,
9
9
  CatalogIntegrationConfig,
10
+ CatalogRelation,
10
11
  )
@@ -1,4 +1,4 @@
1
- from typing import Dict, Type
1
+ from typing import Dict, Iterable, Type
2
2
 
3
3
  from dbt.adapters.catalogs._exceptions import (
4
4
  DbtCatalogIntegrationAlreadyExistsError,
@@ -26,29 +26,29 @@ class CatalogIntegrationClient:
26
26
  integration names mapped to their instances
27
27
  """
28
28
 
29
- def __init__(self, supported_catalogs: Dict[str, Type[CatalogIntegration]]):
30
- self.__supported_catalogs = supported_catalogs
29
+ def __init__(self, supported_catalogs: Iterable[Type[CatalogIntegration]]):
30
+ self.__supported_catalogs: Dict[str, Type[CatalogIntegration]] = {
31
+ catalog.catalog_type: catalog for catalog in supported_catalogs
32
+ }
31
33
  self.__catalog_integrations: Dict[str, CatalogIntegration] = {}
32
34
 
33
- def add(self, catalog_integration: CatalogIntegrationConfig) -> CatalogIntegration:
34
- try:
35
- catalog_factory = self.__supported_catalogs[catalog_integration.catalog_type]
36
- except KeyError:
37
- raise DbtCatalogIntegrationNotSupportedError(
38
- catalog_integration.catalog_type, self.__supported_catalogs.keys()
39
- )
40
-
41
- if catalog_integration.name in self.__catalog_integrations.keys():
42
- raise DbtCatalogIntegrationAlreadyExistsError(catalog_integration.name)
43
-
44
- self.__catalog_integrations[catalog_integration.name] = catalog_factory(
45
- catalog_integration
46
- )
47
-
48
- return self.get(catalog_integration.name)
35
+ def add(self, config: CatalogIntegrationConfig) -> CatalogIntegration:
36
+ factory = self.__catalog_integration_factory(config.catalog_type)
37
+ if config.name in self.__catalog_integrations:
38
+ raise DbtCatalogIntegrationAlreadyExistsError(config.name)
39
+ self.__catalog_integrations[config.name] = factory(config)
40
+ return self.get(config.name)
49
41
 
50
42
  def get(self, name: str) -> CatalogIntegration:
51
43
  try:
52
44
  return self.__catalog_integrations[name]
53
45
  except KeyError:
54
46
  raise DbtCatalogIntegrationNotFoundError(name, self.__catalog_integrations.keys())
47
+
48
+ def __catalog_integration_factory(self, catalog_type: str) -> Type[CatalogIntegration]:
49
+ try:
50
+ return self.__supported_catalogs[catalog_type]
51
+ except KeyError as e:
52
+ raise DbtCatalogIntegrationNotSupportedError(
53
+ catalog_type, self.__supported_catalogs.keys()
54
+ ) from e
@@ -1,7 +1,9 @@
1
- from enum import Enum
1
+ import abc
2
2
  from typing import Any, Dict, Optional
3
3
  from typing_extensions import Protocol
4
4
 
5
+ from dbt.adapters.contracts.relation import RelationConfig
6
+
5
7
 
6
8
  class CatalogIntegrationConfig(Protocol):
7
9
  """
@@ -14,62 +16,95 @@ class CatalogIntegrationConfig(Protocol):
14
16
  ensuring a standardized structure and attributes are in place.
15
17
 
16
18
  Attributes:
17
- name (str): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
18
- - this is required for dbt to correctly reference catalogs by name from model configuration
19
- - expected to be unique within the adapter, if not the entire data platform
19
+ name (str): the name of the catalog integration in the dbt project, e.g. "my_iceberg_operational_data"
20
+ - a unique name for this catalog integration to be referenced in a model configuration
20
21
  catalog_type (str): the type of the catalog integration in the data platform, e.g. "iceberg_rest"
21
22
  - this is required for dbt to determine the correct method for parsing user configuration
22
23
  - usually a combination of the catalog and the way in which the data platform interacts with it
24
+ catalog_name (Optional[str]): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
25
+ - this is required for dbt to correctly reference catalogs by name from model configuration
26
+ - expected to be unique within the data platform, but many dbt catalog integrations can share the same catalog name
23
27
  table_format (Optional[str]): the table format this catalog uses
24
28
  - this is commonly unique to each catalog type, and should only be required from the user for catalogs that support multiple formats
25
29
  external_volume (Optional[str]): external storage volume identifier
26
30
  - while this is a separate concept from catalogs, we feel it is more user-friendly to group it with the catalog configuration
31
+ - it's possible to use a default external volume at the user, database, or account level, hence this is optional
27
32
  - a result of this grouping is that there can only be one external volume per catalog integration, but many catalogs can share the same volume
33
+ - a user should create a new dbt catalog if they want to use a different external volume for a given catalog integration
28
34
  adapter_properties (Optional[Dict[str, Any]]):
29
35
  - additional, adapter-specific properties are nested here to avoid future collision when expanding the catalog integration protocol
30
36
  """
31
37
 
32
38
  name: str
33
39
  catalog_type: str
40
+ catalog_name: Optional[str]
34
41
  table_format: Optional[str]
35
42
  external_volume: Optional[str]
36
- adapter_properties: Optional[Dict[str, Any]]
43
+ adapter_properties: Dict[str, Any]
37
44
 
38
45
 
39
- class CatalogIntegrationMode(Enum):
40
- READ = "r"
41
- WRITE = "w"
46
+ class CatalogRelation(Protocol):
47
+ catalog_name: Optional[str]
48
+ table_format: Optional[str]
49
+ external_volume: Optional[str]
42
50
 
43
51
 
44
- class CatalogIntegration:
52
+ class CatalogIntegration(abc.ABC):
45
53
  """
46
54
  Represent a catalog integration for a given user config
47
55
 
48
- This class should be subclassed by specific catalog integration types in an adapter.
56
+ This class should be implemented by specific catalog integration types in an adapter.
49
57
  A catalog integration is a specific platform's way of interacting with a specific catalog.
50
58
 
51
59
  Attributes:
52
- name (str): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
53
- - this is required for dbt to correctly reference catalogs by name from model configuration
54
- - expected to be unique within the adapter, if not the entire data platform
60
+ name (str): the name of the catalog integration in the dbt project, e.g. "my_iceberg_operational_data"
61
+ - a unique name for this catalog integration to be referenced in a model configuration
55
62
  catalog_type (str): the type of the catalog integration in the data platform, e.g. "iceberg_rest"
56
- - this is required for dbt to determine the correct method for parsing user configuration
57
- - usually a combination of the catalog and the way in which the data platform interacts with it
58
- allows_writes (bool): identifies whether this catalog integration supports writes
59
- - this is required for dbt to correctly identify whether a catalog is writable during parse time
60
- - this is determined by the catalog integration type, hence it is a class attribute
63
+ - this is a name for this particular implementation of the catalog integration, hence it is a class attribute
64
+ catalog_name (Optional[str]): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
65
+ - this is required for dbt to correctly reference catalogs by name from model configuration
66
+ - expected to be unique within the data platform, but many dbt catalog integrations can share the same catalog name
61
67
  table_format (Optional[str]): the table format this catalog uses
62
- - this is commonly determined by the catalog integration type, hence it is usually a class attribute
63
- - it should only be required from the user for catalogs that support multiple formats
68
+ - this is commonly unique to each catalog type, and should only be required from the user for catalogs that support multiple formats
64
69
  external_volume (Optional[str]): external storage volume identifier
65
70
  - while this is a separate concept from catalogs, we feel it is more user-friendly to group it with the catalog configuration
71
+ - it's possible to use a default external volume at the user, database, or account level, hence this is optional
66
72
  - a result of this grouping is that there can only be one external volume per catalog integration, but many catalogs can share the same volume
73
+ - a user should create a new dbt catalog if they want to use a different external volume for a given catalog integration
74
+ allows_writes (bool): identifies whether this catalog integration supports writes
75
+ - this is required for dbt to correctly identify whether a catalog is writable during parse time
76
+ - this is determined by the catalog integration type, hence it is a class attribute
67
77
  """
68
78
 
69
- allows_writes: CatalogIntegrationMode = CatalogIntegrationMode.READ
79
+ catalog_type: str
80
+ table_format: Optional[str] = None
81
+ allows_writes: bool = False
82
+
83
+ def __init__(self, config: CatalogIntegrationConfig) -> None:
84
+ # table_format is often fixed for a catalog type, allow it to be defined at the class level
85
+ if config.table_format is not None:
86
+ self.table_format = config.table_format
70
87
 
71
- def __init__(self, config: CatalogIntegrationConfig):
72
88
  self.name: str = config.name
73
- self.catalog_type: str = config.catalog_type
74
- self.table_format: Optional[str] = config.table_format or None
75
- self.external_volume: Optional[str] = config.external_volume or None
89
+ self.catalog_name: Optional[str] = config.catalog_name
90
+ self.external_volume: Optional[str] = config.external_volume
91
+
92
+ def build_relation(self, config: RelationConfig) -> CatalogRelation:
93
+ """
94
+ Builds relation configuration within the context of this catalog integration.
95
+
96
+ This method is a placeholder and must be implemented in subclasses to provide
97
+ custom logic for building a relation.
98
+
99
+ Args:
100
+ config: User-provided model configuration.
101
+
102
+ Returns:
103
+ A `CatalogRelation` object constructed based on the input configuration.
104
+
105
+ Raises:
106
+ NotImplementedError: Raised when this method is not implemented in a subclass.
107
+ """
108
+ raise NotImplementedError(
109
+ f"`{self.__class__.__name__}.build_relation` must be implemented to use this feature"
110
+ )
@@ -58,7 +58,7 @@ class RelationConfig(Protocol):
58
58
  tags: List[str]
59
59
  quoting_dict: Dict[str, bool]
60
60
  config: Optional[MaterializationConfig]
61
- catalog_name: Optional[str]
61
+ catalog: Optional[str]
62
62
 
63
63
 
64
64
  class ComponentName(StrEnum):
@@ -1,6 +1,7 @@
1
1
  import dataclasses
2
- from typing import Any, Iterable, Union, Mapping
2
+ from typing import Any, Iterable, Union, Mapping, Optional
3
3
 
4
+ from dbt.adapters.record.cursor.fetchall import CursorFetchAllResult
4
5
  from dbt_common.record import Record, Recorder
5
6
 
6
7
 
@@ -8,7 +9,25 @@ from dbt_common.record import Record, Recorder
8
9
  class CursorExecuteParams:
9
10
  connection_name: str
10
11
  operation: str
11
- parameters: Union[Iterable[Any], Mapping[str, Any]]
12
+ parameters: Optional[Union[Iterable[Any], Mapping[str, Any]]] = None
13
+
14
+ def _to_dict(self):
15
+ p = self.parameters
16
+ if isinstance(self.parameters, dict):
17
+ p = {(k, CursorFetchAllResult._process_value(v)) for k, v in self.parameters.items()}
18
+ elif isinstance(self.parameters, list) or isinstance(self.parameters, tuple):
19
+ p = [CursorFetchAllResult._process_value(v) for v in self.parameters]
20
+
21
+ return {
22
+ "connection_name": self.connection_name,
23
+ "operation": self.operation,
24
+ "parameters": p,
25
+ }
26
+
27
+ def _from_dict(cls, data):
28
+ # NOTE: This will be needed for replay, but is not needed at time
29
+ # of writing.
30
+ raise NotImplementedError()
12
31
 
13
32
 
14
33
  @Recorder.register_record_type
@@ -1,5 +1,6 @@
1
1
  import dataclasses
2
2
  import datetime
3
+ import decimal
3
4
  from typing import Any, Dict, List, Mapping
4
5
 
5
6
  from dbt_common.record import Record, Recorder
@@ -37,6 +38,8 @@ class CursorFetchAllResult:
37
38
  return {"type": "date", "value": value.isoformat()}
38
39
  elif type(value) is datetime.datetime:
39
40
  return {"type": "datetime", "value": value.isoformat()}
41
+ elif type(value) is decimal.Decimal:
42
+ return float(value)
40
43
  else:
41
44
  return value
42
45
 
@@ -67,10 +67,10 @@
67
67
 
68
68
  {%- set unique_key_str = unique_key|join(', ') -%}
69
69
 
70
- delete from {{ target }}
70
+ delete from {{ target }} as DBT_INTERNAL_DEST
71
71
  where ({{ unique_key_str }}) in (
72
72
  select distinct {{ unique_key_str }}
73
- from {{ source }}
73
+ from {{ source }} as DBT_INTERNAL_SOURCE
74
74
  )
75
75
  {%- if incremental_predicates %}
76
76
  {% for predicate in incremental_predicates %}
@@ -11,7 +11,18 @@
11
11
  {%- set ref_dict = {} -%}
12
12
  {%- for _ref in model.refs -%}
13
13
  {% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}
14
- {%- set resolved = ref(*_ref_args, v=_ref.get('version')).render() -%}
14
+ {%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}
15
+
16
+ {#
17
+ We want to get the string of the returned relation by calling .render() in order to skip sample/empty
18
+ mode rendering logic. However, people override the default ref macro, and often return a string instead
19
+ of a relation (like the ref macro does by default). Thus, to make sure we dont blow things up, we have
20
+ to ensure the resolved relation has a .render() method.
21
+ #}
22
+ {%- if resolved.render is defined and resolved.render is callable -%}
23
+ {%- set resolved = resolved.render() -%}
24
+ {%- endif -%}
25
+
15
26
  {%- if _ref.get('version') -%}
16
27
  {% do _ref_args.extend(["v" ~ _ref['version']]) %}
17
28
  {%- endif -%}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbt-adapters
3
- Version: 1.14.3
3
+ Version: 1.14.4
4
4
  Summary: The set of adapter protocols and base functionality that supports integration with dbt-core
5
5
  Project-URL: Homepage, https://github.com/dbt-labs/dbt-adapters/tree/main/dbt-adapters
6
6
  Project-URL: Documentation, https://docs.getdbt.com
@@ -1,4 +1,4 @@
1
- dbt/adapters/__about__.py,sha256=agg_op6gz96b723nzm4iSb1-8OF6yhKD2BiP8VOINwE,19
1
+ dbt/adapters/__about__.py,sha256=ewFJx2dzMHmZWqpcxKLsBDjAJt_PseLEHqPgXPh6On8,19
2
2
  dbt/adapters/__init__.py,sha256=3noHsg-64qI0_Pw6OR9F7l1vU2_qrJvinq8POTtuaZM,252
3
3
  dbt/adapters/cache.py,sha256=WGy4ewnz-J13LverTACBW2iFhGswrWLgm-wiBrQnMzo,20084
4
4
  dbt/adapters/capability.py,sha256=M3FkC9veKnNB7a7uQyl7EHX_AGNXPChbHAkcY4cgXCY,2534
@@ -11,21 +11,21 @@ dbt/adapters/base/README.md,sha256=muHQntC07Lh6L1XfVgwKhV5RltOPBLYPdQqd8_7l34c,5
11
11
  dbt/adapters/base/__init__.py,sha256=Nc8lQVkOzAqdcxk4cw4E_raxN9CAWMwhQx4STdiicxg,456
12
12
  dbt/adapters/base/column.py,sha256=Uj20UixoxCn2rlv4QDNONyys6CDkDFyG3anCXKf0T2c,5350
13
13
  dbt/adapters/base/connections.py,sha256=-C5dOwGgMKH8n_v6wjwOxV7chBdS0GjOGwNQCUbhhWc,16951
14
- dbt/adapters/base/impl.py,sha256=OEHbj51pTMpQUJn7HV0aKafi3t5v3k2JCrZfzYcH4kM,77950
14
+ dbt/adapters/base/impl.py,sha256=lXDMcU0FJgNgsJUyFjqLqFzdV1IYBUtSOI7p28Wd5jM,78214
15
15
  dbt/adapters/base/meta.py,sha256=c5j0qeGec1cAi-IlVV_JkhMk01p5XqbtGj02uxGP1S4,5686
16
16
  dbt/adapters/base/plugin.py,sha256=rm0GjNHnWM2mn0GJOjciZLwn-02xlzWCoMT9u-epwP0,1076
17
17
  dbt/adapters/base/query_headers.py,sha256=UluGd9IYCYkoMiDi5Yx_lnrCOSjWppjwRro4SIGgx8I,3496
18
- dbt/adapters/base/relation.py,sha256=G7fKOLFkwjpfL3JUu6Vyh6FzlBCPhmQvmCSiCaePqNI,19185
19
- dbt/adapters/catalogs/__init__.py,sha256=36a8CHPbTSUuq2FglM2TD6LaePEnSgIVkJuRm-3BeU0,351
20
- dbt/adapters/catalogs/_client.py,sha256=T3c0YSBBM6tD4bX1XmqVQowIsQsUkkrBZT_0QoB2uzM,2111
18
+ dbt/adapters/base/relation.py,sha256=tWVxqbJhU582UZbEtkj0jDTq0izm9l28AqA2CoK5KHc,19180
19
+ dbt/adapters/catalogs/__init__.py,sha256=Pm0EseleLEZRK3ML1FlID1aoVKeqOPqZvJ_TYYnURfY,372
20
+ dbt/adapters/catalogs/_client.py,sha256=XEKjpEg-C0OeQD_TzKKkmW5H_KyYyp2UAeiVBFnf_Ok,2236
21
21
  dbt/adapters/catalogs/_exceptions.py,sha256=tPYk1-4n73GnY-a42wer0CJ9eyV4XEc28LrjvRp_r50,1129
22
- dbt/adapters/catalogs/_integration.py,sha256=tjVGLD_6ySrKDaTFzf1NfpFbkzpHxtxkHLDmnWOE7T8,4492
22
+ dbt/adapters/catalogs/_integration.py,sha256=3tV2n4_zMIS9jqaPfA6Lhzn_REHBka7BHdsc7YJwC5c,6434
23
23
  dbt/adapters/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  dbt/adapters/clients/jinja.py,sha256=NsZOiBpOLunS46hRL5OcX1MpY3Ih6_87Vgz4qd_PNbc,768
25
25
  dbt/adapters/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  dbt/adapters/contracts/connection.py,sha256=35mErirojY6Au63wjFgQokk_x7JWHjPUa6hiXjDEs0k,6917
27
27
  dbt/adapters/contracts/macros.py,sha256=NYVDi5ww7v4ksKBwF836TXE-2xU4IBaUINqvxMY-ieU,366
28
- dbt/adapters/contracts/relation.py,sha256=uzeR91ixvWky32feBtKAIKCenmC5px6uXN6qY7mZZHg,4763
28
+ dbt/adapters/contracts/relation.py,sha256=OefNzqp7iDqBn4qdE25eexC_QLGrV7m-T3jCZMMp9sc,4758
29
29
  dbt/adapters/events/README.md,sha256=kVUFIsDQrHTUmk9Mmu-yXYkWh4pA5MJK_H6739rQr5I,3521
30
30
  dbt/adapters/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  dbt/adapters/events/adapter_types.proto,sha256=0vrNE_BYl0DO6UU-AvjSCylmrtQVBdqQoXeYyChzqmI,9704
@@ -45,8 +45,8 @@ dbt/adapters/record/handle.py,sha256=95yR-tALNXVfOhhfCEOvfwDeHI7PwuT2Wr_knw5PXyw
45
45
  dbt/adapters/record/serialization.py,sha256=ehcLioi4J7TujP58fMNGcePuMxx-2G4Dj1KoYm6j6FU,756
46
46
  dbt/adapters/record/cursor/cursor.py,sha256=rhk50XhOAWa4r1POSrb4-TX6MjJ-mwZfDsADxI41NYk,2412
47
47
  dbt/adapters/record/cursor/description.py,sha256=5LNebP2AF2aicPWfM9FsD5r7SAmdac8TX_4NZfJQgPk,1060
48
- dbt/adapters/record/cursor/execute.py,sha256=Y9HUVteOFbDtJJjZPQLny8UgKSs2OgNa19FS7w1bGRE,495
49
- dbt/adapters/record/cursor/fetchall.py,sha256=YeDTh4DU-Iqw9hCoJfqlrgHq2hhhwpIi1Zxx_KU0M6U,2057
48
+ dbt/adapters/record/cursor/execute.py,sha256=f8Yc1MKExj7QLbFnK8WnnwsoGESuYMWnFWhytbcAPjc,1271
49
+ dbt/adapters/record/cursor/fetchall.py,sha256=tcvxHOleST2vrP9Bs_HAbAGutLv9za2vH32HCl8ayc4,2149
50
50
  dbt/adapters/record/cursor/fetchmany.py,sha256=6PTkVa6xZs1g3M4OdqFrnrF9x0vrNJyVNk6rLbhd_Mg,502
51
51
  dbt/adapters/record/cursor/fetchone.py,sha256=IKtzTMQjSeK3g0svtWMXLx_7OGx6HpbPh1zicuOqARA,483
52
52
  dbt/adapters/record/cursor/rowcount.py,sha256=BuiRd_JpQTPN3YaGACfsXe1vmsvO4c49kCpIBZoG6hE,515
@@ -94,7 +94,7 @@ dbt/include/global_project/macros/materializations/models/clone/create_or_replac
94
94
  dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql,sha256=hslQlGKW0oW97srfugsFVRR-L6RrzRcnwr3uLhzI0X4,2577
95
95
  dbt/include/global_project/macros/materializations/models/incremental/incremental.sql,sha256=8gyBXan-saJ9GTSa8d05vMa-RSwyZ7pStOeHJpHU4BI,4374
96
96
  dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql,sha256=Sm1TqOeqcCQofj3REFcA97yukPB1J_mClDd55r5GewE,478
97
- dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=slUOJSR6FzbQa3S6qbyxg-2OqyhI-SHZoT6a1T90dAk,4796
97
+ dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=hrOgfAE3Aam0srudb0CgHZaAUFBnIXMAndoOncYP3T8,4840
98
98
  dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql,sha256=EOgcrYhwOGVPnyaBu7kIfe8LTOYVOu-AhxMtBs8ETpQ,4927
99
99
  dbt/include/global_project/macros/materializations/models/incremental/strategies.sql,sha256=ORGWiYfj-b3_VIps9FDlyx-Q4A2hZzX2aYLocW8b6pU,2613
100
100
  dbt/include/global_project/macros/materializations/seeds/helpers.sql,sha256=Y15ej-D3gm1ExIOMNT208q43gRk8d985WQBuGSooNL0,3920
@@ -107,7 +107,7 @@ dbt/include/global_project/macros/materializations/tests/helpers.sql,sha256=rxUx
107
107
  dbt/include/global_project/macros/materializations/tests/test.sql,sha256=Rz3O_3dWHlIofG3d2CwsP2bXFimRZUIwOevyB0iz1J4,1831
108
108
  dbt/include/global_project/macros/materializations/tests/unit.sql,sha256=KonePuFfwcz5uJ-JW0CrEy8_q-Gl45fonngGmFvQcNU,1252
109
109
  dbt/include/global_project/macros/materializations/tests/where_subquery.sql,sha256=xjuYd18tXo99OReJGQsfgEPYljUUyF00XzK4h0SJjdM,497
110
- dbt/include/global_project/macros/python_model/python.sql,sha256=V2j8MLlq3I01IWdRMrDA1J2Di2z_pHV4YYSMOa-WCVA,3475
110
+ dbt/include/global_project/macros/python_model/python.sql,sha256=qWoouNOP4Qdune_2Vitzmrzb0soHRzu0S4K22amVZK8,4056
111
111
  dbt/include/global_project/macros/relations/create.sql,sha256=99LLak1bhlhRw7yiI0c_4CKPlGyzqPBeBYBNeBPSmDo,701
112
112
  dbt/include/global_project/macros/relations/create_backup.sql,sha256=jAWJSw3BUxvYrjgBs3JkRJN_VHXtk05lMWPM4n-toWs,524
113
113
  dbt/include/global_project/macros/relations/create_intermediate.sql,sha256=bgPogZqRykUrdRxo_kvoKLrJ9C2x1c_TvtUZlYwUfmQ,568
@@ -163,7 +163,7 @@ dbt/include/global_project/macros/utils/right.sql,sha256=EwNG98CAFIwNDmarwopf7Rk
163
163
  dbt/include/global_project/macros/utils/safe_cast.sql,sha256=1mswwkDACmIi1I99JKb_-vq3kjMe4HhMRV70mW8Bt4Y,298
164
164
  dbt/include/global_project/macros/utils/split_part.sql,sha256=fXEIS0oIiYR7-4lYbb0QbZdG-q2TpV63AFd1ky4I5UM,714
165
165
  dbt/include/global_project/tests/generic/builtin.sql,sha256=p94xdyPwb2TlxgLBqCfrcRfJ1QNgsjPvBm8f0Q5eqZM,1022
166
- dbt_adapters-1.14.3.dist-info/METADATA,sha256=ecRsTmWChdgwOvuT8CfCIWVrXcyhRtCh66uuSebnmtE,4494
167
- dbt_adapters-1.14.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
168
- dbt_adapters-1.14.3.dist-info/licenses/LICENSE,sha256=9yjigiJhWcCZvQjdagGKDwrRph58QWc5P2bVSQwXo6s,11344
169
- dbt_adapters-1.14.3.dist-info/RECORD,,
166
+ dbt_adapters-1.14.4.dist-info/METADATA,sha256=ECmusNk2qpmLk7kLzMoI0WAcNT99HFJkcJIx9mZHo8I,4494
167
+ dbt_adapters-1.14.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
168
+ dbt_adapters-1.14.4.dist-info/licenses/LICENSE,sha256=9yjigiJhWcCZvQjdagGKDwrRph58QWc5P2bVSQwXo6s,11344
169
+ dbt_adapters-1.14.4.dist-info/RECORD,,