Skip to content

Commit

Permalink
add manifest v8 compatibility (#25)
Browse files Browse the repository at this point in the history
* add manifest v8 compatibility

* add jaffle_shop manifest
  • Loading branch information
dlawin authored Jan 31, 2023
1 parent 39bb790 commit 7bdf853
Show file tree
Hide file tree
Showing 9 changed files with 5,635 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,6 @@ dmypy.json

# Pyre type checker
.pyre/

# VSCode
.vscode
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Those are the classes to parse dbt artifacts.
- [ManifestV5](dbt_artifacts_parser/parsers/manifest/manifest_v5.py) for manifest.json v5
- [ManifestV6](dbt_artifacts_parser/parsers/manifest/manifest_v6.py) for manifest.json v6
- [ManifestV7](dbt_artifacts_parser/parsers/manifest/manifest_v7.py) for manifest.json v7
- [ManifestV8](dbt_artifacts_parser/parsers/manifest/manifest_v8.py) for manifest.json v8

### Run Results
- [RunResultsV1](dbt_artifacts_parser/parsers/manifest/manifest_v1.py) for run_results.json v1
Expand Down Expand Up @@ -124,6 +125,13 @@ from dbt_artifacts_parser.parser import parse_manifest_v7
with open("path/to/manifest.json", "r") as fp:
manifest_dict = json.load(fp)
manifest_obj = parse_manifest_v7(manifest=manifest_dict)

# parse manifest.json v8
from dbt_artifacts_parser.parser import parse_manifest_v8

with open("path/to/manifest.json", "r") as fp:
manifest_dict = json.load(fp)
manifest_obj = parse_manifest_v8(manifest=manifest_dict)
```

### Parse run-results.json
Expand Down
15 changes: 13 additions & 2 deletions dbt_artifacts_parser/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
# limitations under the License.
#
from typing import Union
from dbt_artifacts_parser.parsers.manifest.manifest_v7 import ManifestV7

from dbt_artifacts_parser.parsers.utils import get_dbt_schema_version

Expand All @@ -26,6 +25,8 @@
from dbt_artifacts_parser.parsers.manifest.manifest_v4 import ManifestV4
from dbt_artifacts_parser.parsers.manifest.manifest_v5 import ManifestV5
from dbt_artifacts_parser.parsers.manifest.manifest_v6 import ManifestV6
from dbt_artifacts_parser.parsers.manifest.manifest_v7 import ManifestV7
from dbt_artifacts_parser.parsers.manifest.manifest_v8 import ManifestV8
from dbt_artifacts_parser.parsers.run_results.run_results_v1 import RunResultsV1
from dbt_artifacts_parser.parsers.run_results.run_results_v2 import RunResultsV2
from dbt_artifacts_parser.parsers.run_results.run_results_v3 import RunResultsV3
Expand Down Expand Up @@ -69,7 +70,7 @@ def parse_catalog_v1(catalog: dict) -> CatalogV1:
def parse_manifest(
manifest: dict
) -> Union[ManifestV1, ManifestV2, ManifestV3, ManifestV4, ManifestV5,
ManifestV6, ManifestV7]:
ManifestV6, ManifestV7, ManifestV8]:
"""Parse manifest.json
Args:
Expand All @@ -93,6 +94,8 @@ def parse_manifest(
return ManifestV6(**manifest)
elif dbt_schema_version == ArtifactTypes.MANIFEST_V7.value.dbt_schema_version:
return ManifestV7(**manifest)
elif dbt_schema_version == ArtifactTypes.MANIFEST_V8.value.dbt_schema_version:
return ManifestV8(**manifest)
raise ValueError("Not a soft of manifest.json")


Expand Down Expand Up @@ -152,6 +155,14 @@ def parse_manifest_v7(manifest: dict) -> ManifestV6:
raise ValueError("Not a manifest.json v7")


def parse_manifest_v8(manifest: dict) -> ManifestV6:
"""Parse manifest.json ver.8"""
dbt_schema_version = get_dbt_schema_version(artifact_json=manifest)
if dbt_schema_version == ArtifactTypes.MANIFEST_V8.value.dbt_schema_version:
return ManifestV8(**manifest)
raise ValueError("Not a manifest.json v8")


#
# run-results
#
Expand Down
Loading

0 comments on commit 7bdf853

Please sign in to comment.