Skip to content

Commit e025798

Browse files
committed
fix: black format linting
1 parent d1c1a2a commit e025798

2 files changed

Lines changed: 68 additions & 39 deletions

File tree

data_pipeline/contract/contract_logic.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ def remove_rows_with_null_constraint(
125125
tuple: (Filtered DataFrame, Count of dropped rows, Set of invalid order_ids)
126126
"""
127127

128-
129128
initial_count = len(df)
130129
invalid_ids = set()
131130

tests/test_semantic_stage.py

Lines changed: 68 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,30 @@ def valid_assembled_df():
5353
"order_revenue": [12.34, 56.78],
5454
"product_id": ["prod1", "prod2"],
5555
"order_status": ["delivered", "delivered"],
56-
"order_purchase_timestamp": pd.to_datetime([
57-
"2023-01-02 09:00:00",
58-
"2023-01-10 14:00:00",
59-
]),
60-
"order_approved_at": pd.to_datetime([
61-
"2023-01-03 09:00:00",
62-
"2023-01-11 14:00:00",
63-
]),
64-
"order_delivered_timestamp": pd.to_datetime([
65-
"2023-01-06 09:00:00",
66-
"2023-01-16 14:00:00",
67-
]),
68-
"order_estimated_delivery_date": pd.to_datetime([
69-
"2023-01-05",
70-
"2023-01-15",
71-
]),
56+
"order_purchase_timestamp": pd.to_datetime(
57+
[
58+
"2023-01-02 09:00:00",
59+
"2023-01-10 14:00:00",
60+
]
61+
),
62+
"order_approved_at": pd.to_datetime(
63+
[
64+
"2023-01-03 09:00:00",
65+
"2023-01-11 14:00:00",
66+
]
67+
),
68+
"order_delivered_timestamp": pd.to_datetime(
69+
[
70+
"2023-01-06 09:00:00",
71+
"2023-01-16 14:00:00",
72+
]
73+
),
74+
"order_estimated_delivery_date": pd.to_datetime(
75+
[
76+
"2023-01-05",
77+
"2023-01-15",
78+
]
79+
),
7280
"lead_time_days": [3, 5],
7381
"approval_lag_days": [1, 1],
7482
"delivery_delay_days": [1, 1],
@@ -77,14 +85,16 @@ def valid_assembled_df():
7785
"order_year_week": ["2023-W01", "2023-W01"],
7886
"run_id": ["20230101T120000", "20230101T120000"],
7987
}
80-
).astype({
81-
"order_status": "category",
82-
"lead_time_days": "int16",
83-
"approval_lag_days": "int16",
84-
"delivery_delay_days": "int16",
85-
"order_year": "int16",
86-
"order_revenue": "float32",
87-
})
88+
).astype(
89+
{
90+
"order_status": "category",
91+
"lead_time_days": "int16",
92+
"approval_lag_days": "int16",
93+
"delivery_delay_days": "int16",
94+
"order_year": "int16",
95+
"order_revenue": "float32",
96+
}
97+
)
8898

8999

90100
# =============================================================================
@@ -116,8 +126,10 @@ def test_log_info_appends_only_to_info(empty_report):
116126
def test_seller_semantic_model_grain_preserved_success(tmp_path, valid_assembled_df):
117127
run_context = RunContext.create(base=tmp_path, run_id="20230101T120000")
118128
seller_semantic = build_seller_semantic(valid_assembled_df, run_context)
119-
120-
expected_fact_len = valid_assembled_df[["seller_id", "order_year_week"]].drop_duplicates().shape[0]
129+
130+
expected_fact_len = (
131+
valid_assembled_df[["seller_id", "order_year_week"]].drop_duplicates().shape[0]
132+
)
121133
assert len(seller_semantic["seller_weekly_fact"]) == expected_fact_len
122134

123135
expected_dim_len = valid_assembled_df["seller_id"].nunique()
@@ -149,14 +161,20 @@ def test_build_semantic_layer_success(
149161
run_context.initialize_directories()
150162

151163
# Setup Assembled layer
152-
valid_assembled_df.to_parquet(run_context.assembled_path / "assembled_events_2023_01_01.parquet")
153-
valid_customers_df.to_parquet(run_context.assembled_path / "df_customers_2023_01_01.parquet")
154-
valid_products_df.to_parquet(run_context.assembled_path / "df_products_2023_01_01.parquet")
164+
valid_assembled_df.to_parquet(
165+
run_context.assembled_path / "assembled_events_2023_01_01.parquet"
166+
)
167+
valid_customers_df.to_parquet(
168+
run_context.assembled_path / "df_customers_2023_01_01.parquet"
169+
)
170+
valid_products_df.to_parquet(
171+
run_context.assembled_path / "df_products_2023_01_01.parquet"
172+
)
155173

156174
report = build_semantic_layer(run_context)
157175

158176
assert report["status"] == "success"
159-
177+
160178
for module_name, module_config in SEMANTIC_MODULES.items():
161179
for table_name in module_config["tables"]:
162180
outputs_path = (
@@ -175,14 +193,18 @@ def test_build_semantic_layer_fails_on_multiple_ids(tmp_path, valid_assembled_df
175193
broken_assembled = valid_assembled_df.copy()
176194
broken_assembled.loc[1, "run_id"] = "another_run"
177195

178-
broken_assembled.to_parquet(run_context.assembled_path / "assembled_events_2023_01_01.parquet")
196+
broken_assembled.to_parquet(
197+
run_context.assembled_path / "assembled_events_2023_01_01.parquet"
198+
)
179199

180200
report = build_semantic_layer(run_context)
181201

182202
assert report["status"] == "failed"
183203
assert report["modules"]["seller_semantic"]["build_stage"]["status"] == "failed"
184-
assert any("Multiple run_ids detected" in error
185-
for error in report["modules"]["seller_semantic"]["build_stage"]["errors"])
204+
assert any(
205+
"Multiple run_ids detected" in error
206+
for error in report["modules"]["seller_semantic"]["build_stage"]["errors"]
207+
)
186208

187209

188210
def test_build_semantic_layer_fails_on_missing_columns(tmp_path, valid_assembled_df):
@@ -191,9 +213,13 @@ def test_build_semantic_layer_fails_on_missing_columns(tmp_path, valid_assembled
191213
run_context.initialize_directories()
192214

193215
broken_assembled = valid_assembled_df.copy()
194-
broken_assembled.drop(columns="order_revenue", inplace=True) # Used in seller_weekly_fact
216+
broken_assembled.drop(
217+
columns="order_revenue", inplace=True
218+
) # Used in seller_weekly_fact
195219

196-
broken_assembled.to_parquet(run_context.assembled_path / "assembled_events_2023_01_01.parquet")
220+
broken_assembled.to_parquet(
221+
run_context.assembled_path / "assembled_events_2023_01_01.parquet"
222+
)
197223

198224
report = build_semantic_layer(run_context)
199225

@@ -210,11 +236,15 @@ def test_build_semantic_layer_fails_on_missing_or_empty_df(tmp_path):
210236
run_context.initialize_directories()
211237

212238
empty_df = pd.DataFrame()
213-
empty_df.to_parquet(run_context.assembled_path / "assembled_events_2023_01_01.parquet")
239+
empty_df.to_parquet(
240+
run_context.assembled_path / "assembled_events_2023_01_01.parquet"
241+
)
214242

215243
report = build_semantic_layer(run_context)
216244

217245
assert report["status"] == "failed"
218246
# load_single_delta itself succeeds even if DF is empty
219-
assert any("missing or empty" in error
220-
for error in report["steps"]["load_tables"]["errors"])
247+
assert any(
248+
"missing or empty" in error
249+
for error in report["steps"]["load_tables"]["errors"]
250+
)

0 commit comments

Comments
 (0)