dbt-contracts 0.1.0__tar.gz

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.
@@ -0,0 +1,337 @@
1
+ ################################################################################
2
+ ## dbt
3
+ ################################################################################
4
+ dbt_modules/
5
+ dbt_packages/
6
+ logs/
7
+ target/
8
+ .user.yml
9
+
10
+ ################################################################################
11
+ ## Python
12
+ ################################################################################
13
+ # Byte-compiled / optimized / DLL files
14
+ __pycache__/
15
+ *.py[cod]
16
+ *$py.class
17
+
18
+ # C extensions
19
+ *.so
20
+
21
+ # Distribution / packaging
22
+ .Python
23
+ build/
24
+ develop-eggs/
25
+ dist/
26
+ downloads/
27
+ eggs/
28
+ .eggs/
29
+ lib/
30
+ lib64/
31
+ parts/
32
+ sdist/
33
+ var/
34
+ wheels/
35
+ share/python-wheels/
36
+ *.egg-info/
37
+ .installed.cfg
38
+ *.egg
39
+ MANIFEST
40
+
41
+ # PyInstaller
42
+ # Usually these files are written by a python script from a template
43
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
44
+ *.manifest
45
+ *.spec
46
+
47
+ # Installer logs
48
+ pip-log.txt
49
+ pip-delete-this-directory.txt
50
+
51
+ # Unit test / coverage reports
52
+ htmlcov/
53
+ .tox/
54
+ .nox/
55
+ .coverage
56
+ .coverage.*
57
+ .cache
58
+ nosetests.xml
59
+ coverage.xml
60
+ *.cover
61
+ *.py,cover
62
+ .hypothesis/
63
+ .pytest_cache/
64
+ cover/
65
+
66
+ # Translations
67
+ *.mo
68
+ *.pot
69
+
70
+ # Django stuff:
71
+ *.log
72
+ local_settings.py
73
+ db.sqlite3
74
+ db.sqlite3-journal
75
+
76
+ # Flask stuff:
77
+ instance/
78
+ .webassets-cache
79
+
80
+ # Scrapy stuff:
81
+ .scrapy
82
+
83
+ # Sphinx documentation
84
+ docs/_build/
85
+ docs/reference/
86
+
87
+ # PyBuilder
88
+ .pybuilder/
89
+
90
+ # Jupyter Notebook
91
+ .ipynb_checkpoints
92
+
93
+ # IPython
94
+ profile_default/
95
+ ipython_config.py
96
+
97
+ # pyenv
98
+ # For a library or package, you might want to ignore these files since the code is
99
+ # intended to run in multiple environments; otherwise, check them in:
100
+ # .python-version
101
+
102
+ # pipenv
103
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
104
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
105
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
106
+ # install all needed dependencies.
107
+ #Pipfile.lock
108
+
109
+ # poetry
110
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
111
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
112
+ # commonly ignored for libraries.
113
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
114
+ #poetry.lock
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ #pdm.lock
119
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
120
+ # in version control.
121
+ # https://pdm.fming.dev/#use-with-ide
122
+ .pdm.toml
123
+
124
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
125
+ __pypackages__/
126
+
127
+ # Celery stuff
128
+ celerybeat-schedule
129
+ celerybeat.pid
130
+
131
+ # SageMath parsed files
132
+ *.sage.py
133
+
134
+ # Environments
135
+ .env
136
+ .venv
137
+ env/
138
+ venv/
139
+ ENV/
140
+ env.bak/
141
+ venv.bak/
142
+ dbt-env/
143
+
144
+ # Spyder project settings
145
+ .spyderproject
146
+ .spyproject
147
+
148
+ # Rope project settings
149
+ .ropeproject
150
+
151
+ # mkdocs documentation
152
+ /site
153
+
154
+ # mypy
155
+ .mypy_cache/
156
+ .dmypy.json
157
+ dmypy.json
158
+
159
+ # Pyre type checker
160
+ .pyre/
161
+
162
+ # pytype static type analyzer
163
+ .pytype/
164
+
165
+ # Cython debug symbols
166
+ cython_debug/
167
+
168
+ ### Python Patch ###
169
+ # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
170
+ poetry.toml
171
+
172
+ # ruff
173
+ .ruff_cache/
174
+
175
+ # LSP config files
176
+ pyrightconfig.json
177
+
178
+
179
+ ################################################################################
180
+ ## Linux
181
+ ################################################################################
182
+ *~
183
+
184
+ # temporary files which can be created if a process still has a handle open of a deleted file
185
+ .fuse_hidden*
186
+
187
+ # KDE directory preferences
188
+ .directory
189
+
190
+ # Linux trash folder which might appear on any partition or disk
191
+ .Trash-*
192
+
193
+ # .nfs files are created when an open file is removed but is still being accessed
194
+ .nfs*
195
+
196
+
197
+ ################################################################################
198
+ ## macOS
199
+ ################################################################################
200
+ # General
201
+ .DS_Store
202
+ .AppleDouble
203
+ .LSOverride
204
+
205
+ # Icon must end with two \r
206
+ Icon
207
+
208
+
209
+ # Thumbnails
210
+ ._*
211
+
212
+ # Files that might appear in the root of a volume
213
+ .DocumentRevisions-V100
214
+ .fseventsd
215
+ .Spotlight-V100
216
+ .TemporaryItems
217
+ .Trashes
218
+ .VolumeIcon.icns
219
+ .com.apple.timemachine.donotpresent
220
+
221
+ # Directories potentially created on remote AFP share
222
+ .AppleDB
223
+ .AppleDesktop
224
+ Network Trash Folder
225
+ Temporary Items
226
+ .apdisk
227
+
228
+ ### macOS Patch ###
229
+ # iCloud generated files
230
+ *.icloud
231
+
232
+
233
+ ################################################################################
234
+ ## Windows
235
+ ################################################################################
236
+ Thumbs.db
237
+ Thumbs.db:encryptable
238
+ ehthumbs.db
239
+ ehthumbs_vista.db
240
+
241
+ # Dump file
242
+ *.stackdump
243
+
244
+ # Folder config file
245
+ [Dd]esktop.ini
246
+
247
+ # Recycle Bin used on file shares
248
+ $RECYCLE.BIN/
249
+
250
+ # Windows Installer files
251
+ *.cab
252
+ *.msi
253
+ *.msix
254
+ *.msm
255
+ *.msp
256
+
257
+ # Windows shortcuts
258
+ *.lnk
259
+
260
+
261
+ ################################################################################
262
+ ## JetBrains
263
+ ################################################################################
264
+ # User-specific stuff
265
+ .idea/**/workspace.xml
266
+ .idea/**/tasks.xml
267
+ .idea/**/usage.statistics.xml
268
+ .idea/**/dictionaries
269
+ .idea/**/shelf
270
+
271
+ # AWS User-specific
272
+ .idea/**/aws.xml
273
+
274
+ # Generated files
275
+ .idea/**/contentModel.xml
276
+
277
+ # Sensitive or high-churn files
278
+ .idea/**/dataSources/
279
+ .idea/**/dataSources.ids
280
+ .idea/**/dataSources.local.xml
281
+ .idea/**/sqlDataSources.xml
282
+ .idea/**/dynamic.xml
283
+ .idea/**/uiDesigner.xml
284
+ .idea/**/dbnavigator.xml
285
+
286
+ # Gradle
287
+ .idea/**/gradle.xml
288
+ .idea/**/libraries
289
+
290
+ # Gradle and Maven with auto-import
291
+ # When using Gradle or Maven with auto-import, you should exclude module files,
292
+ # since they will be recreated, and may cause churn. Uncomment if using
293
+ # auto-import.
294
+ # .idea/artifacts
295
+ # .idea/compiler.xml
296
+ # .idea/jarRepositories.xml
297
+ # .idea/modules.xml
298
+ # .idea/*.iml
299
+ # .idea/modules
300
+ # *.iml
301
+ # *.ipr
302
+
303
+ # CMake
304
+ cmake-build-*/
305
+
306
+ # Mongo Explorer plugin
307
+ .idea/**/mongoSettings.xml
308
+
309
+ # File-based project format
310
+ *.iws
311
+
312
+ # IntelliJ
313
+ out/
314
+
315
+ # mpeltonen/sbt-idea plugin
316
+ .idea_modules/
317
+
318
+ # JIRA plugin
319
+ atlassian-ide-plugin.xml
320
+
321
+ # Cursive Clojure plugin
322
+ .idea/replstate.xml
323
+
324
+ # SonarLint plugin
325
+ .idea/sonarlint/
326
+
327
+ # Crashlytics plugin (for Android Studio and IntelliJ)
328
+ com_crashlytics_export_strings.xml
329
+ crashlytics.properties
330
+ crashlytics-build.properties
331
+ fabric.properties
332
+
333
+ # Editor-based Rest Client
334
+ .idea/httpRequests
335
+
336
+ # Android studio 3.1+ serialized cache file
337
+ .idea/caches/build_file_checksums.ser
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 George Martin Marino
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,228 @@
1
+ Metadata-Version: 2.3
2
+ Name: dbt-contracts
3
+ Version: 0.1.0
4
+ Summary: Enforce standards for your dbt projects through automated checks and generators
5
+ Project-URL: Documentation, https://geo-martino.github.io/dbt-contracts/
6
+ Project-URL: Release Notes, https://geo-martino.github.io/dbt-contracts/info/release-history.html
7
+ Project-URL: Contribute, https://geo-martino.github.io/dbt-contracts/info/contributing.html
8
+ Project-URL: Source code, https://github.com/geo-martino/dbt-contracts
9
+ Project-URL: Issues, https://github.com/geo-martino/dbt-contracts/issues
10
+ Author-email: George Martin Marino <gm.engineer+dbt-contracts@pm.me>
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: MacOS :: MacOS X
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: dbt-core~=1.8
24
+ Provides-Extra: build
25
+ Requires-Dist: hatch; extra == 'build'
26
+ Requires-Dist: versioningit; extra == 'build'
27
+ Provides-Extra: dev
28
+ Requires-Dist: docstring-parser<1.0,>=0.16; extra == 'dev'
29
+ Requires-Dist: flake8; extra == 'dev'
30
+ Requires-Dist: grip; extra == 'dev'
31
+ Requires-Dist: hatch; extra == 'dev'
32
+ Requires-Dist: ipywidgets; extra == 'dev'
33
+ Requires-Dist: jupyterlab; extra == 'dev'
34
+ Requires-Dist: pytest-asyncio<1.0,>=0.24; extra == 'dev'
35
+ Requires-Dist: pytest-xdist~=3.6; extra == 'dev'
36
+ Requires-Dist: pytest~=8.3; extra == 'dev'
37
+ Requires-Dist: sphinx-design<1.0,>=0.6.1; extra == 'dev'
38
+ Requires-Dist: sphinx-new-tab-link<1.0,>=0.6.1; extra == 'dev'
39
+ Requires-Dist: sphinx-rtd-theme<4.0,>=3.0.1; extra == 'dev'
40
+ Requires-Dist: sphinx<9.0,>=8.1.3; extra == 'dev'
41
+ Requires-Dist: versioningit; extra == 'dev'
42
+ Provides-Extra: docs
43
+ Requires-Dist: docstring-parser<1.0,>=0.16; extra == 'docs'
44
+ Requires-Dist: hatch; extra == 'docs'
45
+ Requires-Dist: sphinx-design<1.0,>=0.6.1; extra == 'docs'
46
+ Requires-Dist: sphinx-new-tab-link<1.0,>=0.6.1; extra == 'docs'
47
+ Requires-Dist: sphinx-rtd-theme<4.0,>=3.0.1; extra == 'docs'
48
+ Requires-Dist: sphinx<9.0,>=8.1.3; extra == 'docs'
49
+ Requires-Dist: versioningit; extra == 'docs'
50
+ Provides-Extra: test
51
+ Requires-Dist: pytest-asyncio<1.0,>=0.24; extra == 'test'
52
+ Requires-Dist: pytest-xdist~=3.6; extra == 'test'
53
+ Requires-Dist: pytest~=8.3; extra == 'test'
54
+ Description-Content-Type: text/markdown
55
+
56
+ # dbt-contracts
57
+
58
+ [![PyPI Version](https://img.shields.io/pypi/v/dbt-contracts?logo=pypi&label=Latest%20Version)](https://pypi.org/project/dbt-contracts)
59
+ [![Python Version](https://img.shields.io/pypi/pyversions/dbt-contracts.svg?logo=python&label=Supported%20Python%20Versions)](https://pypi.org/project/dbt-contracts/)
60
+ [![Documentation](https://img.shields.io/badge/Documentation-red.svg)](https://geo-martino.github.io/dbt-contracts)
61
+ </br>
62
+ [![PyPI Downloads](https://img.shields.io/pypi/dm/dbt-contracts?label=Downloads)](https://pypi.org/project/dbt-contracts/)
63
+ [![Code Size](https://img.shields.io/github/languages/code-size/geo-martino/dbt-contracts?label=Code%20Size)](https://github.com/geo-martino/dbt-contracts)
64
+ [![Contributors](https://img.shields.io/github/contributors/geo-martino/dbt-contracts?logo=github&label=Contributors)](https://github.com/geo-martino/dbt-contracts/graphs/contributors)
65
+ [![License](https://img.shields.io/github/license/geo-martino/dbt-contracts?label=License)](https://github.com/geo-martino/dbt-contracts/blob/master/LICENSE)
66
+ </br>
67
+ [![GitHub - Validate](https://github.com/geo-martino/dbt-contracts/actions/workflows/validate.yml/badge.svg?branch=master)](https://github.com/geo-martino/dbt-contracts/actions/workflows/validate.yml)
68
+ [![GitHub - Deployment](https://github.com/geo-martino/dbt-contracts/actions/workflows/deploy.yml/badge.svg?event=release)](https://github.com/geo-martino/dbt-contracts/actions/workflows/deploy.yml)
69
+ [![GitHub - Documentation](https://github.com/geo-martino/dbt-contracts/actions/workflows/docs_publish.yml/badge.svg)](https://github.com/geo-martino/dbt-contracts/actions/workflows/docs_publish.yml)
70
+
71
+ ### Enforce standards for your dbt projects through automated checks and generators
72
+
73
+ ## Contents
74
+ * [Installation](#installation)
75
+ * [Contracts Reference](#contracts-reference)
76
+ * [Models](#models)
77
+ * [Model Columns](#model-columns)
78
+ * [Sources](#sources)
79
+ * [Source Columns](#source-columns)
80
+ * [Macros](#macros)
81
+ * [Macro Arguments](#macro-arguments)
82
+
83
+ ## Installation
84
+ Install through pip using one of the following commands:
85
+
86
+ ```bash
87
+ pip install dbt-contracts
88
+ ```
89
+ ```bash
90
+ python -m pip install dbt-contracts
91
+ ```
92
+
93
+ ## Contracts Reference
94
+
95
+ Below you will find a list of all available contracts grouped by the dbt object it operates on.
96
+ Refer to this list to help when designing your contract file.
97
+
98
+ ### Models
99
+
100
+ #### Filters
101
+
102
+ - [`is_materialized`](https://geo-martino.github.io/dbt-contracts/reference/models.html#is-materialized): Check whether the given `node` is configured to be materialized.
103
+ - [`meta`](https://geo-martino.github.io/dbt-contracts/reference/models.html#meta): Check whether a given `resource` has any matching meta to the accepted_values.
104
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/models.html#name): Check whether a given `item` has a valid name.
105
+ - [`paths`](https://geo-martino.github.io/dbt-contracts/reference/models.html#paths): Check whether a given `item` has a valid path.
106
+
107
+ #### Enforcements
108
+
109
+ - [`exists`](https://geo-martino.github.io/dbt-contracts/reference/models.html#exists): Check whether the node exists in the database.
110
+ - [`has_all_columns`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-all-columns): Check whether the node properties contain all available columns of the node.
111
+ - [`has_constraints`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-constraints): Check whether the given `node` has an appropriate number of constraints.
112
+ - [`has_contract`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-contract): Check whether the node properties define a contract.
113
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-description): Check whether the given `resource` has a description set.
114
+ - [`has_expected_columns`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-expected-columns): Check whether the node properties contain the expected set of `columns`.
115
+ - [`has_matching_description`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-matching-description): Check whether the given `node` has a description configured which matches the remote resource.
116
+ - [`has_no_final_semicolon`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-no-final-semicolon): Check whether the given `node` has a no closing semicolon at the end of the script.
117
+ - [`has_no_hardcoded_refs`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-no-hardcoded-refs): Check whether the given `node` has a no hardcoded upstream references.
118
+ - [`has_properties`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-properties): Check whether the given `resource` has properties set in an appropriate properties file.
119
+ - [`has_tests`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-tests): Check whether the given `node` has an appropriate number of tests.
120
+ - [`has_valid_macro_dependencies`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-valid-macro-dependencies): Check whether the given `node` has valid upstream macro dependencies.
121
+ - [`has_valid_ref_dependencies`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-valid-ref-dependencies): Check whether the given `node` has valid upstream ref dependencies.
122
+ - [`has_valid_source_dependencies`](https://geo-martino.github.io/dbt-contracts/reference/models.html#has-valid-source-dependencies): Check whether the given `node` has valid upstream source dependencies.
123
+ - [`meta_has_accepted_values`](https://geo-martino.github.io/dbt-contracts/reference/models.html#meta-has-accepted-values): Check whether the resource's `meta` config is configured as expected.
124
+ - [`meta_has_allowed_keys`](https://geo-martino.github.io/dbt-contracts/reference/models.html#meta-has-allowed-keys): Check whether the resource's `meta` config contains only allowed keys.
125
+ - [`meta_has_required_keys`](https://geo-martino.github.io/dbt-contracts/reference/models.html#meta-has-required-keys): Check whether the resource's `meta` config contains all required keys.
126
+ - [`tags_have_allowed_values`](https://geo-martino.github.io/dbt-contracts/reference/models.html#tags-have-allowed-values): Check whether the given `resource` has properties set in an appropriate properties file.
127
+ - [`tags_have_required_values`](https://geo-martino.github.io/dbt-contracts/reference/models.html#tags-have-required-values): Check whether the given `resource` has properties set in an appropriate properties file.
128
+
129
+
130
+ ### Model Columns
131
+
132
+ #### Filters
133
+
134
+ - [`meta`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta): Check whether a given `resource` has any matching meta to the accepted_values.
135
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#name): Check whether a given `item` has a valid name.
136
+
137
+ #### Enforcements
138
+
139
+ - [`exists`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#exists): Check whether the column exists in the database.
140
+ - [`has_data_type`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-data-type): Check whether the given `column` of the given `parent` has a data type set.
141
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-description): Check whether the given `resource` has a description set.
142
+ - [`has_expected_name`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-expected-name): Check whether the given `column` of the given `parent` has a name that matches some expectation.
143
+ - [`has_matching_data_type`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-data-type): Check whether the given `column` of the given `parent`
144
+ - [`has_matching_description`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-description): Check whether the given `column` of the given `parent`
145
+ - [`has_matching_index`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-index): Check whether the given `column` of the given `parent`
146
+ - [`has_tests`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-tests): Check whether the given `column` of the given `parent` has an appropriate number of tests.
147
+ - [`meta_has_accepted_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-accepted-values): Check whether the resource's `meta` config is configured as expected.
148
+ - [`meta_has_allowed_keys`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-allowed-keys): Check whether the resource's `meta` config contains only allowed keys.
149
+ - [`meta_has_required_keys`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-required-keys): Check whether the resource's `meta` config contains all required keys.
150
+ - [`tags_have_allowed_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#tags-have-allowed-values): Check whether the given `resource` has properties set in an appropriate properties file.
151
+ - [`tags_have_required_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#tags-have-required-values): Check whether the given `resource` has properties set in an appropriate properties file.
152
+
153
+
154
+ ### Sources
155
+
156
+ #### Filters
157
+
158
+ - [`is_enabled`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#is-enabled): Check whether the given `source` is enabled.
159
+ - [`meta`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#meta): Check whether a given `resource` has any matching meta to the accepted_values.
160
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#name): Check whether a given `item` has a valid name.
161
+ - [`paths`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#paths): Check whether a given `item` has a valid path.
162
+
163
+ #### Enforcements
164
+
165
+ - [`exists`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#exists): Check whether the node exists in the database.
166
+ - [`has_all_columns`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-all-columns): Check whether the node properties contain all available columns of the node.
167
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-description): Check whether the given `resource` has a description set.
168
+ - [`has_downstream_dependencies`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-downstream-dependencies): Check whether the given `source` has freshness configured.
169
+ - [`has_expected_columns`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-expected-columns): Check whether the node properties contain the expected set of `columns`.
170
+ - [`has_freshness`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-freshness): Check whether the given `source` has freshness configured.
171
+ - [`has_loader`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-loader): Check whether the given `source` has a loader configured.
172
+ - [`has_matching_description`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-matching-description): Check whether the given `node` has a description configured which matches the remote resource.
173
+ - [`has_properties`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-properties): Check whether the given `resource` has properties set in an appropriate properties file.
174
+ - [`has_tests`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#has-tests): Check whether the given `node` has an appropriate number of tests.
175
+ - [`meta_has_accepted_values`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#meta-has-accepted-values): Check whether the resource's `meta` config is configured as expected.
176
+ - [`meta_has_allowed_keys`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#meta-has-allowed-keys): Check whether the resource's `meta` config contains only allowed keys.
177
+ - [`meta_has_required_keys`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#meta-has-required-keys): Check whether the resource's `meta` config contains all required keys.
178
+ - [`tags_have_allowed_values`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#tags-have-allowed-values): Check whether the given `resource` has properties set in an appropriate properties file.
179
+ - [`tags_have_required_values`](https://geo-martino.github.io/dbt-contracts/reference/sources.html#tags-have-required-values): Check whether the given `resource` has properties set in an appropriate properties file.
180
+
181
+
182
+ ### Source Columns
183
+
184
+ #### Filters
185
+
186
+ - [`meta`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta): Check whether a given `resource` has any matching meta to the accepted_values.
187
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#name): Check whether a given `item` has a valid name.
188
+
189
+ #### Enforcements
190
+
191
+ - [`exists`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#exists): Check whether the column exists in the database.
192
+ - [`has_data_type`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-data-type): Check whether the given `column` of the given `parent` has a data type set.
193
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-description): Check whether the given `resource` has a description set.
194
+ - [`has_expected_name`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-expected-name): Check whether the given `column` of the given `parent` has a name that matches some expectation.
195
+ - [`has_matching_data_type`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-data-type): Check whether the given `column` of the given `parent`
196
+ - [`has_matching_description`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-description): Check whether the given `column` of the given `parent`
197
+ - [`has_matching_index`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-matching-index): Check whether the given `column` of the given `parent`
198
+ - [`has_tests`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#has-tests): Check whether the given `column` of the given `parent` has an appropriate number of tests.
199
+ - [`meta_has_accepted_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-accepted-values): Check whether the resource's `meta` config is configured as expected.
200
+ - [`meta_has_allowed_keys`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-allowed-keys): Check whether the resource's `meta` config contains only allowed keys.
201
+ - [`meta_has_required_keys`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#meta-has-required-keys): Check whether the resource's `meta` config contains all required keys.
202
+ - [`tags_have_allowed_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#tags-have-allowed-values): Check whether the given `resource` has properties set in an appropriate properties file.
203
+ - [`tags_have_required_values`](https://geo-martino.github.io/dbt-contracts/reference/columns.html#tags-have-required-values): Check whether the given `resource` has properties set in an appropriate properties file.
204
+
205
+
206
+ ### Macros
207
+
208
+ #### Filters
209
+
210
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/macros.html#name): Check whether a given `item` has a valid name.
211
+ - [`paths`](https://geo-martino.github.io/dbt-contracts/reference/macros.html#paths): Check whether a given `item` has a valid path.
212
+
213
+ #### Enforcements
214
+
215
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/macros.html#has-description): Check whether the given `resource` has a description set.
216
+ - [`has_properties`](https://geo-martino.github.io/dbt-contracts/reference/macros.html#has-properties): Check whether the given `resource` has properties set in an appropriate properties file.
217
+
218
+
219
+ ### Macro Arguments
220
+
221
+ #### Filters
222
+
223
+ - [`name`](https://geo-martino.github.io/dbt-contracts/reference/arguments.html#name): Check whether a given `item` has a valid name.
224
+
225
+ #### Enforcements
226
+
227
+ - [`has_description`](https://geo-martino.github.io/dbt-contracts/reference/arguments.html#has-description): Check whether the given `resource` has a description set.
228
+ - [`has_type`](https://geo-martino.github.io/dbt-contracts/reference/arguments.html#has-type): Check whether the given `argument` has its type set in an appropriate properties file.