Skip to content

Commit 2296a85

Browse files
galvanaAdrian Galvanclaude
authored
Add data_purposes support to datasets (#7674)
Co-authored-by: Adrian Galvan <galvana@uci.edu> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent adfbc7c commit 2296a85

7 files changed

Lines changed: 43 additions & 5 deletions

File tree

.fides/db_dataset.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,9 @@ dataset:
697697
- name: data_categories
698698
data_categories:
699699
- system.operations
700+
- name: data_purposes
701+
data_categories:
702+
- system.operations
700703
- name: description
701704
data_categories:
702705
- system.operations
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type: Changed
2+
description: Updated fideslang to 3.1.3 to add `data_purposes` support at dataset, collection, field, and sub-field levels
3+
pr: 7674
4+
labels: []

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ dependencies = [
5555
"fastapi-cli~=0.0.16",
5656
"fastapi-pagination[sqlalchemy]==0.15.0",
5757
"fastapi[all]==0.123.3",
58-
"fideslang==3.1.4a1",
58+
"fideslang==3.1.3",
5959
"firebase-admin==5.3.0",
6060
"flower==2.0.1",
6161
"google-auth==2.48.0",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""add data_purposes column to ctl_datasets
2+
3+
Revision ID: c7e3a9b1d4f2
4+
Revises: 25ffa8bf6a95
5+
Create Date: 2026-03-25 15:00:00.000000
6+
7+
"""
8+
9+
import sqlalchemy as sa
10+
from alembic import op
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "c7e3a9b1d4f2"
14+
down_revision = "25ffa8bf6a95"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade() -> None:
20+
op.add_column(
21+
"ctl_datasets",
22+
sa.Column("data_purposes", sa.ARRAY(sa.String()), nullable=True),
23+
)
24+
25+
26+
def downgrade() -> None:
27+
op.drop_column("ctl_datasets", "data_purposes")

src/fides/api/models/sql_models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@ class Dataset(Base, FidesBase):
406406

407407
meta = Column(JSON)
408408
data_categories = Column(ARRAY(String))
409+
data_purposes = Column(ARRAY(String))
409410
collections = Column(JSON)
410411
fides_meta = Column(JSON)
411412

src/fides/service/connection/merge_configs_util.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,14 +328,17 @@ def merge_datasets(
328328
"""
329329
stored_dataset_copy = copy.deepcopy(stored_dataset)
330330
upcoming_dataset_copy = copy.deepcopy(upcoming_dataset)
331+
customer_dataset_copy = copy.deepcopy(customer_dataset)
331332

332333
normalized_stored_dataset = normalize_dataset(stored_dataset_copy, "stored")
333334
normalized_upcoming_dataset = normalize_dataset(upcoming_dataset_copy, "upcoming")
335+
normalized_customer_dataset = normalize_dataset(customer_dataset_copy, "customer")
334336
if normalized_stored_dataset is None or normalized_upcoming_dataset is None:
335337
return upcoming_dataset
336338

337339
stored_dataset_copy = normalized_stored_dataset
338340
upcoming_dataset_copy = normalized_upcoming_dataset
341+
customer_dataset = normalized_customer_dataset or customer_dataset
339342

340343
# convert dataset to yaml string and then replace the instance key placeholder
341344
wrapped_dataset = {"dataset": [stored_dataset_copy]}

uv.lock

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

0 commit comments

Comments
 (0)