Skip to content

Commit 657503f

Browse files
authored
Merge pull request #117 from dbt-labs/fix-plan-json
Fix issue with plan when adding/removing fields
2 parents c4b14f1 + 1219299 commit 657503f

4 files changed

Lines changed: 52 additions & 12 deletions

File tree

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies = [
88
"click<9.0.0,>=8.1.3",
99
"requests<3.0.0,>=2.32.0",
1010
"loguru<1.0.0,>=0.6.0",
11-
"deepdiff<7.0.0,>=6.2.2",
11+
"deepdiff>=8.0.0,<9.0.0",
1212
"pydantic<3.0.0,>=2.0.0",
1313
"croniter<2.0.0,>=1.3.8",
1414
"ruamel-yaml<1.0.0,>=0.17.21",
@@ -20,7 +20,7 @@ dependencies = [
2020
"importlib-metadata<7,>=6.0",
2121
]
2222
name = "dbt-jobs-as-code"
23-
version = "1.0.0"
23+
version = "1.0.1"
2424
description = "A CLI to allow defining dbt Cloud jobs as code"
2525
readme = "README.md"
2626
keywords = [

src/dbt_jobs_as_code/schemas/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ def check_job_mapping_same(source_job: JobDefinition, dest_job: JobDefinition) -
4242
logger.success(f"✅ Job {source_job.identifier} is identical")
4343
return True
4444
else:
45+
# we can't json.dump types normally, so we provide a custom logic to just return the type name
46+
def type_serializer(obj):
47+
if isinstance(obj, type):
48+
return obj.__name__
49+
raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable")
50+
4551
logger.info(
46-
f"❌ Job {source_job.identifier} is different - Diff:\n{json.dumps(diffs, indent=2)}"
52+
f"❌ Job {source_job.identifier} is different - Diff:\n{json.dumps(diffs, indent=2, default=type_serializer)}"
4753
)
4854
return False
4955

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from dbt_jobs_as_code.schemas import check_job_mapping_same
2+
from dbt_jobs_as_code.schemas.job import JobDefinition
3+
4+
5+
def test_check_job_mapping_same():
6+
mock_job1 = JobDefinition(
7+
id=1,
8+
name="Job 1",
9+
project_id=100,
10+
environment_id=200,
11+
account_id=300,
12+
settings={},
13+
run_generate_sources=False,
14+
execute_steps=[],
15+
generate_docs=False,
16+
schedule={"cron": "0 14 * * 0,1,2,3,4,5,6"},
17+
triggers={},
18+
)
19+
mock_job2 = JobDefinition(
20+
id=2,
21+
name="Job 2",
22+
project_id=100,
23+
environment_id=400,
24+
account_id=300,
25+
deferring_environment_id=400,
26+
settings={},
27+
run_generate_sources=False,
28+
execute_steps=[],
29+
generate_docs=False,
30+
schedule={"cron": "0 14 * * 0,1,2,3,4,5,6"},
31+
triggers={},
32+
)
33+
34+
assert check_job_mapping_same(mock_job1, mock_job2) == False

uv.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)