{"id":13703182,"url":"https://github.com/yu-iskw/dbt-artifacts-parser","last_synced_at":"2025-05-16T10:06:04.718Z","repository":{"id":40375932,"uuid":"464753497","full_name":"yu-iskw/dbt-artifacts-parser","owner":"yu-iskw","description":"A dbt artifacts parser in python","archived":false,"fork":false,"pushed_at":"2025-05-06T07:53:43.000Z","size":1328,"stargazers_count":91,"open_issues_count":4,"forks_count":19,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-16T10:05:28.641Z","etag":null,"topics":["dbt","dbt-artifacts","parser","pypi-package","python","python-package"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/dbt-artifacts-parser/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yu-iskw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-01T05:15:31.000Z","updated_at":"2025-05-15T06:46:47.000Z","dependencies_parsed_at":"2023-12-22T14:01:47.641Z","dependency_job_id":"69ea763f-72f5-4731-b48d-275f83f07d83","html_url":"https://github.com/yu-iskw/dbt-artifacts-parser","commit_stats":{"total_commits":86,"total_committers":10,"mean_commits":8.6,"dds":0.313953488372093,"last_synced_commit":"ce07b929898a45adaf2d67b5932012be5dcfe410"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yu-iskw%2Fdbt-artifacts-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yu-iskw%2Fdbt-artifacts-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yu-iskw%2Fdbt-artifacts-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yu-iskw%2Fdbt-artifacts-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yu-iskw","download_url":"https://codeload.github.com/yu-iskw/dbt-artifacts-parser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509477,"owners_count":22082891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbt","dbt-artifacts","parser","pypi-package","python","python-package"],"created_at":"2024-08-02T21:00:51.424Z","updated_at":"2025-05-16T10:06:04.682Z","avatar_url":"https://github.com/yu-iskw.png","language":"Python","funding_links":[],"categories":["Utilities"],"sub_categories":[],"readme":"[![Test python](https://github.com/yu-iskw/dbt-artifacts-parser/actions/workflows/test.yml/badge.svg)](https://github.com/yu-iskw/dbt-artifacts-parser/actions/workflows/test.yml)\n\u003ca href=\"https://pypi.org/project/dbt-artifacts-parser\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/pypi/v/dbt-artifacts-parser?color=%2334D058\u0026label=pypi%20package\" alt=\"Package version\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/dbt-artifacts-parser\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/pypi/pyversions/dbt-artifacts-parser.svg?color=%2334D058\" alt=\"Supported Python versions\"\u003e\n\u003c/a\u003e\n\n# dbt-artifacts-parser\n\nThis is a dbt artifacts parse in python.\nIt enables us to deal with `catalog.json`, `manifest.json`, `run-results.json` and `sources.json` as python objects.\n\nThis package is primarily designed for dbt-core, enabling seamless interaction with dbt artifacts as Python objects. While dbt Cloud provides additional artifact types beyond those of dbt-core, this package does not offer comprehensive support for them.\n\n## Supported Versions and Compatibility\n\n\u003e **⚠️ Important Note:**\n\u003e\n\u003e - **Pydantic v1 will not be supported for dbt 1.9 or later.**\n\u003e - **To parse dbt 1.9 or later, please migrate your code to pydantic v2.**\n\u003e - **We will reassess version compatibility upon the release of pydantic v3.**\n\n| Version | Supported dbt Version | Supported pydantic Version |\n|---------|-----------------------|----------------------------|\n|  0.8    | dbt 1.5 to 1.9        | pydantic v2                |\n|  0.7    | dbt 1.5 to 1.8        | pydantic v2                |\n|  0.6    | dbt 1.5 to 1.8        | pydantic v1                |\n|  0.5    | dbt 1.5 to 1.7        | pydantic v1                |\n\n## Installation\n\n```bash\npip install -U dbt-artifacts-parser\n```\n\n## Python classes\n\nThose are the classes to parse dbt artifacts.\n\n### Catalog\n\n- [CatalogV1](dbt_artifacts_parser/parsers/catalog/catalog_v1.py) for catalog.json v1\n\n### Manifest\n\n- [ManifestV1](dbt_artifacts_parser/parsers/manifest/manifest_v1.py) for manifest.json v1\n- [ManifestV2](dbt_artifacts_parser/parsers/manifest/manifest_v2.py) for manifest.json v2\n- [ManifestV3](dbt_artifacts_parser/parsers/manifest/manifest_v3.py) for manifest.json v3\n- [ManifestV4](dbt_artifacts_parser/parsers/manifest/manifest_v4.py) for manifest.json v4\n- [ManifestV5](dbt_artifacts_parser/parsers/manifest/manifest_v5.py) for manifest.json v5\n- [ManifestV6](dbt_artifacts_parser/parsers/manifest/manifest_v6.py) for manifest.json v6\n- [ManifestV7](dbt_artifacts_parser/parsers/manifest/manifest_v7.py) for manifest.json v7\n- [ManifestV8](dbt_artifacts_parser/parsers/manifest/manifest_v8.py) for manifest.json v8\n- [ManifestV9](dbt_artifacts_parser/parsers/manifest/manifest_v9.py) for manifest.json v9\n- [ManifestV10](dbt_artifacts_parser/parsers/manifest/manifest_v10.py) for manifest.json v10\n- [ManifestV11](dbt_artifacts_parser/parsers/manifest/manifest_v11.py) for manifest.json v11\n- [ManifestV12](dbt_artifacts_parser/parsers/manifest/manifest_v12.py) for manifest.json v12\n\n### Run Results\n\n- [RunResultsV1](dbt_artifacts_parser/parsers/manifest/manifest_v1.py) for run_results.json v1\n- [RunResultsV2](dbt_artifacts_parser/parsers/manifest/manifest_v2.py) for run_results.json v2\n- [RunResultsV3](dbt_artifacts_parser/parsers/manifest/manifest_v3.py) for run_results.json v3\n- [RunResultsV4](dbt_artifacts_parser/parsers/manifest/manifest_v4.py) for run_results.json v4\n- [RunResultsV5](dbt_artifacts_parser/parsers/manifest/manifest_v5.py) for run_results.json v5\n- [RunResultsV6](dbt_artifacts_parser/parsers/manifest/manifest_v6.py) for run_results.json v6\n\n### Sources\n\n- [SourcesV1](dbt_artifacts_parser/parsers/sources/sources_v1.py) for sources.json v1\n- [SourcesV2](dbt_artifacts_parser/parsers/sources/sources_v2.py) for sources.json v2\n- [SourcesV3](dbt_artifacts_parser/parsers/sources/sources_v3.py) for sources.json v3\n\n## Examples\n\n### Parse catalog.json\n\n```python\nimport json\n\n# parse any version of catalog.json\nfrom dbt_artifacts_parser.parser import parse_catalog\n\nwith open(\"path/to/catalog.json\", \"r\") as fp:\n    catalog_dict = json.load(fp)\n    catalog_obj = parse_catalog(catalog=catalog_dict)\n\n# parse catalog.json v1\nfrom dbt_artifacts_parser.parser import parse_catalog_v1\n\nwith open(\"path/to/catalog.json\", \"r\") as fp:\n    catalog_dict = json.load(fp)\n    catalog_obj = parse_catalog_v1(catalog=catalog_dict)\n```\n\n### Parse manifest.json\n\n```python\nimport json\n\n# parse any version of manifest.json\nfrom dbt_artifacts_parser.parser import parse_manifest\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest(manifest=manifest_dict)\n\n# parse manifest.json v1\nfrom dbt_artifacts_parser.parser import parse_manifest_v1\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v1(manifest=manifest_dict)\n\n# parse manifest.json v2\nfrom dbt_artifacts_parser.parser import parse_manifest_v2\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v2(manifest=manifest_dict)\n\n# parse manifest.json v3\nfrom dbt_artifacts_parser.parser import parse_manifest_v3\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v3(manifest=manifest_dict)\n\n# parse manifest.json v4\nfrom dbt_artifacts_parser.parser import parse_manifest_v4\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v4(manifest=manifest_dict)\n\n# parse manifest.json v5\nfrom dbt_artifacts_parser.parser import parse_manifest_v5\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v5(manifest=manifest_dict)\n\n# parse manifest.json v6\nfrom dbt_artifacts_parser.parser import parse_manifest_v6\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v6(manifest=manifest_dict)\n\n# parse manifest.json v7\nfrom dbt_artifacts_parser.parser import parse_manifest_v7\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v7(manifest=manifest_dict)\n\n# parse manifest.json v8\nfrom dbt_artifacts_parser.parser import parse_manifest_v8\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v8(manifest=manifest_dict)\n\n# parse manifest.json v9\nfrom dbt_artifacts_parser.parser import parse_manifest_v9\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v9(manifest=manifest_dict)\n\n# parse manifest.json v10\nfrom dbt_artifacts_parser.parser import parse_manifest_v10\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v10(manifest=manifest_dict)\n\n# parse manifest.json v11\nfrom dbt_artifacts_parser.parser import parse_manifest_v11\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v11(manifest=manifest_dict)\n\n# parse manifest.json v12\nfrom dbt_artifacts_parser.parser import parse_manifest_v12\n\nwith open(\"path/to/manifest.json\", \"r\") as fp:\n    manifest_dict = json.load(fp)\n    manifest_obj = parse_manifest_v12(manifest=manifest_dict)\n```\n\n### Parse run-results.json\n\n```python\nimport json\n\n# parse any version of run-results.json\nfrom dbt_artifacts_parser.parser import parse_run_results\n\nwith open(\"path/to/run-resultsjson\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results(run_results=run_results_dict)\n\n# parse run-results.json v1\nfrom dbt_artifacts_parser.parser import parse_run_results_v1\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v1(run_results=run_results_dict)\n\n# parse run-results.json v2\nfrom dbt_artifacts_parser.parser import parse_run_results_v2\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v2(run_results=run_results_dict)\n\n# parse run-results.json v3\nfrom dbt_artifacts_parser.parser import parse_run_results_v3\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v3(run_results=run_results_dict)\n\n# parse run-results.json v4\nfrom dbt_artifacts_parser.parser import parse_run_results_v4\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v4(run_results=run_results_dict)\n\n# parse run-results.json v5\nfrom dbt_artifacts_parser.parser import parse_run_results_v5\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v5(run_results=run_results_dict)\n\n# parse run-results.json v6\nfrom dbt_artifacts_parser.parser import parse_run_results_v6\n\nwith open(\"path/to/run-results.json\", \"r\") as fp:\n    run_results_dict = json.load(fp)\n    run_results_obj = parse_run_results_v6(run_results=run_results_dict)\n```\n\n### Parse sources.json\n\n```python\nimport json\n\n# parse any version of sources.json\nfrom dbt_artifacts_parser.parser import parse_sources\n\nwith open(\"path/to/sources.json\", \"r\") as fp:\n    sources_dict = json.load(fp)\n    sources_obj = parse_sources(sources=sources_dict)\n\n# parse sources.json v1\nfrom dbt_artifacts_parser.parser import parse_sources_v1\n\nwith open(\"path/to/sources.json\", \"r\") as fp:\n    sources_dict = json.load(fp)\n    sources_obj = parse_sources_v1(sources=sources_dict)\n\n# parse sources.json v2\nfrom dbt_artifacts_parser.parser import parse_sources_v2\n\nwith open(\"path/to/sources.json\", \"r\") as fp:\n    sources_dict = json.load(fp)\n    sources_obj = parse_sources_v2(sources=sources_dict)\n\n# parse sources.json v3\nfrom dbt_artifacts_parser.parser import parse_sources_v3\n\nwith open(\"path/to/sources.json\", \"r\") as fp:\n    sources_dict = json.load(fp)\n    sources_obj = parse_sources_v3(sources=sources_dict)\n```\n\n## Contributors\n\nThank you for your contributions!\n\nIf you are interested in contributing to this package, please check out the [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n\u003c!-- readme: contributors -start --\u003e\n\u003ctable\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/yu-iskw\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/1523515?v=4\" width=\"100;\" alt=\"yu-iskw\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eYu Ishikawa\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/dlawin\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/11282254?v=4\" width=\"100;\" alt=\"dlawin\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/bbrewington\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/10573749?v=4\" width=\"100;\" alt=\"bbrewington\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eBrent Brewington\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/judahrand\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/17158624?v=4\" width=\"100;\" alt=\"judahrand\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eJudah Rand\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/ulixius9\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/39544459?v=4\" width=\"100;\" alt=\"ulixius9\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eMayur Singal\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/nabilm\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/987369?v=4\" width=\"100;\" alt=\"nabilm\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eMohamed Nabil Mahmoud Hafez\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/OnkarVO7\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/28966081?v=4\" width=\"100;\" alt=\"OnkarVO7\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eOnkar Ravgan\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/pgoslatara\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/14027534?v=4\" width=\"100;\" alt=\"pgoslatara\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003ePádraic Slattery\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003ca href=\"https://github.com/meyer-glean\"\u003e\n                    \u003cimg src=\"https://avatars.githubusercontent.com/u/134302890?v=4\" width=\"100;\" alt=\"meyer-glean\"/\u003e\n                    \u003cbr /\u003e\n                    \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n                \u003c/a\u003e\n            \u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003ctbody\u003e\n\u003c/table\u003e\n\u003c!-- readme: contributors -end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyu-iskw%2Fdbt-artifacts-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyu-iskw%2Fdbt-artifacts-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyu-iskw%2Fdbt-artifacts-parser/lists"}