Skip to content

Commit 2a91d21

Browse files
committed
remove plugin catalog trust flag
1 parent 0574e7b commit 2a91d21

10 files changed

Lines changed: 20 additions & 77 deletions

File tree

packages/data-designer/src/data_designer/cli/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,6 @@ staging.
273273
catalogs:
274274
- alias: research
275275
url: https://raw.githubusercontent.com/acme/dd-plugins/main/catalog/plugins.json
276-
trusted: false
277276
```
278277

279278
### `~/.data-designer/plugin-catalog-cache/`

packages/data-designer/src/data_designer/cli/commands/plugin.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,19 +213,13 @@ def catalog_add_command(
213213
url: str = typer.Argument(
214214
help="Catalog repository URL, catalog URL, local catalog file, or local catalog directory."
215215
),
216-
trusted: bool = typer.Option(
217-
False,
218-
"--trusted",
219-
help="Mark the catalog as trusted for install-plan display and confirmations.",
220-
),
221216
) -> None:
222217
"""Add a plugin catalog alias."""
223218
_warn_if_parent_catalog_unused(ctx, "catalog management commands operate on aliases directly")
224219
controller = PluginCatalogController(DATA_DESIGNER_HOME)
225220
controller.run_catalog_add(
226221
alias=alias,
227222
url=url,
228-
trusted=trusted,
229223
)
230224

231225

packages/data-designer/src/data_designer/cli/controllers/plugin_catalog_controller.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,6 @@ def run_install(
207207
if plan.source_warning is not None:
208208
print_warning(plan.source_warning)
209209

210-
if not catalog.trusted:
211-
print_warning(
212-
"This catalog is not marked trusted. Plugin package installation executes Python package code from "
213-
"the requirement above."
214-
)
215-
216210
if dry_run:
217211
if not compatibility.is_compatible:
218212
print_warning(
@@ -322,13 +316,11 @@ def run_catalog_list(self) -> None:
322316
table = Table(title="Plugin Catalogs", border_style=NordColor.NORD8.value)
323317
table.add_column("Alias", style=NordColor.NORD14.value, no_wrap=True)
324318
table.add_column("URL", style=NordColor.NORD4.value)
325-
table.add_column("Trusted", style=NordColor.NORD13.value, justify="center")
326319

327320
for catalog in catalogs:
328321
table.add_row(
329322
catalog.alias,
330323
catalog.url,
331-
"yes" if catalog.trusted else "no",
332324
)
333325
console.print(table)
334326

@@ -337,14 +329,12 @@ def run_catalog_add(
337329
*,
338330
alias: str,
339331
url: str,
340-
trusted: bool,
341332
) -> None:
342333
"""Add a plugin catalog alias."""
343334
try:
344335
catalog = self.catalog_service.add_catalog(
345336
alias,
346337
url,
347-
trusted=trusted,
348338
)
349339
except ValidationError as e:
350340
if any(tuple(error["loc"]) == ("alias",) for error in e.errors()):

packages/data-designer/src/data_designer/cli/plugin_catalog.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ class PluginCatalogConfig(BaseModel):
185185

186186
alias: str = Field(pattern=PLUGIN_CATALOG_ALIAS_PATTERN)
187187
url: str
188-
trusted: bool = False
189188
cache_ttl_seconds: int = Field(default=PLUGIN_CATALOG_DEFAULT_CACHE_TTL_SECONDS, ge=0)
190189

191190

@@ -221,7 +220,6 @@ class InstallPlan:
221220
command: list[str]
222221
manager: str
223222
catalog_alias: str
224-
trusted_catalog: bool
225223
source_warning: str | None = None
226224
data_designer_protection: str | None = None
227225
command_stdin: str | None = None
@@ -428,7 +426,7 @@ def _validate_catalog_object_keys(context: str, value: dict[str, object], expect
428426
keys = set(value)
429427
if keys != expected_keys:
430428
# Catalog v2 is strict by design: additive wire-schema changes should bump
431-
# schema_version so older CLIs do not silently ignore trust-sensitive fields.
429+
# schema_version so older CLIs do not silently ignore new fields.
432430
raise PluginCatalogError(
433431
f"{context} has invalid fields; expected {{{_format_catalog_keys(expected_keys)}}}, "
434432
f"got {{{_format_catalog_keys(keys)}}}"

packages/data-designer/src/data_designer/cli/repositories/plugin_catalog_repository.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
from data_designer.cli.plugin_catalog import (
1818
DEFAULT_PLUGIN_CATALOG_ALIAS,
19-
DEFAULT_PLUGIN_CATALOG_URL,
2019
MAX_PLUGIN_CATALOG_SIZE_BYTES,
2120
PLUGIN_CATALOG_CACHE_DIR_NAME,
2221
PLUGIN_CATALOG_DEFAULT_CACHE_TTL_SECONDS,
@@ -80,7 +79,6 @@ def add_catalog(
8079
alias: str,
8180
url: str,
8281
*,
83-
trusted: bool = False,
8482
cache_ttl_seconds: int = PLUGIN_CATALOG_DEFAULT_CACHE_TTL_SECONDS,
8583
) -> PluginCatalogConfig:
8684
"""Persist a new catalog alias.
@@ -94,7 +92,6 @@ def add_catalog(
9492
catalog = PluginCatalogConfig(
9593
alias=alias,
9694
url=normalize_catalog_location(url),
97-
trusted=trusted,
9895
cache_ttl_seconds=cache_ttl_seconds,
9996
)
10097
registry = self.load() or PluginCatalogRegistry()
@@ -235,7 +232,6 @@ def default_catalog() -> PluginCatalogConfig:
235232
return PluginCatalogConfig(
236233
alias=DEFAULT_PLUGIN_CATALOG_ALIAS,
237234
url=catalog_url,
238-
trusted=catalog_url == DEFAULT_PLUGIN_CATALOG_URL,
239235
cache_ttl_seconds=PLUGIN_CATALOG_DEFAULT_CACHE_TTL_SECONDS,
240236
)
241237

packages/data-designer/src/data_designer/cli/services/plugin_catalog_service.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,11 @@ def add_catalog(
146146
self,
147147
alias: str,
148148
url: str,
149-
*,
150-
trusted: bool,
151149
) -> PluginCatalogConfig:
152150
"""Add a plugin catalog alias."""
153151
return self.repository.add_catalog(
154152
alias,
155153
url,
156-
trusted=trusted,
157154
)
158155

159156
def remove_catalog(self, alias: str) -> None:

packages/data-designer/src/data_designer/cli/services/plugin_install_service.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ def build_install_plan(
104104
command=command,
105105
manager=target.manager,
106106
catalog_alias=catalog.alias,
107-
trusted_catalog=catalog.trusted,
108107
source_warning=_combine_warnings(target.warning, source_warning),
109108
data_designer_protection=data_designer_protection,
110109
command_stdin=command_stdin,

packages/data-designer/tests/cli/commands/test_plugin_command.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,13 @@ def test_plugin_catalog_add_command_delegates_to_controller(mock_ctrl_cls: Magic
127127
"add",
128128
"research",
129129
"https://github.com/acme/dd-plugins",
130-
"--trusted",
131130
],
132131
)
133132

134133
assert result.exit_code == 0
135134
mock_ctrl.run_catalog_add.assert_called_once_with(
136135
alias="research",
137136
url="https://github.com/acme/dd-plugins",
138-
trusted=True,
139137
)
140138

141139

packages/data-designer/tests/cli/controllers/test_plugin_catalog_controller.py

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_run_list_mentions_hidden_incompatible_packages_when_visible_list_is_emp
4242
controller: PluginCatalogController,
4343
) -> None:
4444
entry = _entry()
45-
catalog = _catalog(trusted=True)
45+
catalog = _catalog()
4646
controller.catalog_service.get_catalog.return_value = catalog
4747
controller.catalog_service.list_entries.side_effect = [[], [entry]]
4848

@@ -69,7 +69,7 @@ def test_run_search_mentions_hidden_incompatible_packages_when_visible_matches_a
6969
controller: PluginCatalogController,
7070
) -> None:
7171
entry = _entry()
72-
catalog = _catalog(trusted=True)
72+
catalog = _catalog()
7373
controller.catalog_service.get_catalog.return_value = catalog
7474
controller.catalog_service.search_entries.side_effect = [[], [entry]]
7575

@@ -95,7 +95,7 @@ def test_run_list_renders_package_first_catalog_table(
9595
_entry(name="text-column", plugin_type="column-generator"),
9696
_entry(name="text-processor", plugin_type="processor"),
9797
]
98-
catalog = _catalog(trusted=True)
98+
catalog = _catalog()
9999
controller.catalog_service.get_catalog.return_value = catalog
100100
controller.catalog_service.list_entries.return_value = package_entries
101101
controller.catalog_service.group_entries_by_package.return_value = {
@@ -148,7 +148,7 @@ def test_run_info_renders_package_metadata_with_nested_runtime_plugins(
148148
_entry(name="text-column", plugin_type="column-generator"),
149149
_entry(name="text-processor", plugin_type="processor"),
150150
]
151-
catalog = _catalog(trusted=True)
151+
catalog = _catalog()
152152
controller.catalog_service.get_catalog.return_value = catalog
153153
controller.catalog_service.get_package_entries.return_value = package_entries
154154
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(True, [])
@@ -209,7 +209,7 @@ def test_run_info_warns_when_install_plan_has_source_warning(
209209
controller: PluginCatalogController,
210210
) -> None:
211211
entry = _entry()
212-
catalog = _catalog(trusted=True)
212+
catalog = _catalog()
213213
controller.catalog_service.get_catalog.return_value = catalog
214214
controller.catalog_service.get_package_entries.return_value = [entry]
215215
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(True, [])
@@ -230,7 +230,7 @@ def test_run_info_rejects_runtime_plugin_name_that_is_not_package_alias(
230230
mock_print_error: MagicMock,
231231
controller: PluginCatalogController,
232232
) -> None:
233-
catalog = _catalog(trusted=True)
233+
catalog = _catalog()
234234
controller.catalog_service.get_catalog.return_value = catalog
235235
controller.catalog_service.get_package_entries.return_value = []
236236

@@ -255,7 +255,7 @@ def test_run_install_dry_run_renders_plan_without_installing(
255255
controller: PluginCatalogController,
256256
) -> None:
257257
entry = _entry()
258-
catalog = _catalog(trusted=True)
258+
catalog = _catalog()
259259
plan = _plan(catalog, data_designer_protection="pinned installed Data Designer packages; data-designer 0.5.10")
260260
controller.catalog_service.get_catalog.return_value = catalog
261261
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -288,7 +288,7 @@ def test_run_install_blocks_incompatible_package(
288288
controller: PluginCatalogController,
289289
) -> None:
290290
entry = _entry()
291-
catalog = _catalog(trusted=True)
291+
catalog = _catalog()
292292
controller.catalog_service.get_catalog.return_value = catalog
293293
controller.catalog_service.get_package_entries.return_value = [entry]
294294
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(
@@ -318,7 +318,7 @@ def test_run_install_rejects_runtime_plugin_name_as_target(
318318
mock_print_error: MagicMock,
319319
controller: PluginCatalogController,
320320
) -> None:
321-
catalog = _catalog(trusted=True)
321+
catalog = _catalog()
322322
controller.catalog_service.get_catalog.return_value = catalog
323323
controller.catalog_service.get_package_entries.return_value = []
324324

@@ -344,7 +344,7 @@ def test_run_install_dry_run_renders_incompatible_plan_and_block_message(
344344
controller: PluginCatalogController,
345345
) -> None:
346346
entry = _entry()
347-
catalog = _catalog(trusted=True)
347+
catalog = _catalog()
348348
controller.catalog_service.get_catalog.return_value = catalog
349349
controller.catalog_service.get_package_entries.return_value = [entry]
350350
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(
@@ -376,7 +376,7 @@ def test_run_install_dry_run_allows_incompatible_entry_for_inspection(
376376
controller: PluginCatalogController,
377377
) -> None:
378378
entry = _entry()
379-
catalog = _catalog(trusted=True)
379+
catalog = _catalog()
380380
controller.catalog_service.get_catalog.return_value = catalog
381381
controller.catalog_service.get_package_entries.return_value = [entry]
382382
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(
@@ -410,7 +410,7 @@ def test_run_install_warns_when_install_plan_has_source_warning(
410410
controller: PluginCatalogController,
411411
) -> None:
412412
entry = _entry()
413-
catalog = _catalog(trusted=True)
413+
catalog = _catalog()
414414
controller.catalog_service.get_catalog.return_value = catalog
415415
controller.catalog_service.get_package_entries.return_value = [entry]
416416
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(True, [])
@@ -425,29 +425,6 @@ def test_run_install_warns_when_install_plan_has_source_warning(
425425
assert mock_console.print.call_count >= 1
426426

427427

428-
@patch("data_designer.cli.controllers.plugin_catalog_controller.console")
429-
@patch("data_designer.cli.controllers.plugin_catalog_controller.print_warning")
430-
def test_run_install_warns_for_untrusted_catalog(
431-
mock_print_warning: MagicMock,
432-
mock_console: MagicMock,
433-
controller: PluginCatalogController,
434-
) -> None:
435-
entry = _entry()
436-
catalog = _catalog(trusted=False)
437-
controller.catalog_service.get_catalog.return_value = catalog
438-
controller.catalog_service.get_package_entries.return_value = [entry]
439-
controller.catalog_service.evaluate_compatibility.return_value = CompatibilityResult(True, [])
440-
controller.install_service.build_install_plan.return_value = _plan(catalog)
441-
442-
controller.run_install("data-designer-text-transform", catalog_alias="local", dry_run=True)
443-
444-
mock_print_warning.assert_called_once_with(
445-
"This catalog is not marked trusted. Plugin package installation executes Python package code from "
446-
"the requirement above."
447-
)
448-
assert mock_console.print.call_count >= 1
449-
450-
451428
@patch("data_designer.cli.controllers.plugin_catalog_controller.console")
452429
@patch("data_designer.cli.controllers.plugin_catalog_controller.print_success")
453430
def test_run_install_reports_success_when_verification_finds_entry_point(
@@ -456,7 +433,7 @@ def test_run_install_reports_success_when_verification_finds_entry_point(
456433
controller: PluginCatalogController,
457434
) -> None:
458435
entry = _entry()
459-
catalog = _catalog(trusted=True)
436+
catalog = _catalog()
460437
plan = _plan(catalog)
461438
controller.catalog_service.get_catalog.return_value = catalog
462439
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -482,7 +459,7 @@ def test_run_install_warns_when_verification_misses_entry_point(
482459
controller: PluginCatalogController,
483460
) -> None:
484461
entry = _entry()
485-
catalog = _catalog(trusted=True)
462+
catalog = _catalog()
486463
plan = _plan(catalog)
487464
controller.catalog_service.get_catalog.return_value = catalog
488465
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -509,7 +486,7 @@ def test_run_uninstall_dry_run_renders_plan_without_uninstalling(
509486
controller: PluginCatalogController,
510487
) -> None:
511488
entry = _entry()
512-
catalog = _catalog(trusted=True)
489+
catalog = _catalog()
513490
plan = _uninstall_plan(catalog)
514491
controller.catalog_service.get_catalog.return_value = catalog
515492
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -539,7 +516,7 @@ def test_run_uninstall_wraps_plan_error(
539516
controller: PluginCatalogController,
540517
) -> None:
541518
entry = _entry()
542-
catalog = _catalog(trusted=True)
519+
catalog = _catalog()
543520
controller.catalog_service.get_catalog.return_value = catalog
544521
controller.catalog_service.get_package_entries.return_value = [entry]
545522
controller.install_service.build_uninstall_plan.side_effect = ValueError("uv was requested")
@@ -560,7 +537,7 @@ def test_run_uninstall_reports_success_when_entry_points_are_removed(
560537
controller: PluginCatalogController,
561538
) -> None:
562539
entry = _entry()
563-
catalog = _catalog(trusted=True)
540+
catalog = _catalog()
564541
plan = _uninstall_plan(catalog)
565542
controller.catalog_service.get_catalog.return_value = catalog
566543
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -585,7 +562,7 @@ def test_run_uninstall_warns_when_entry_points_remain(
585562
controller: PluginCatalogController,
586563
) -> None:
587564
entry = _entry()
588-
catalog = _catalog(trusted=True)
565+
catalog = _catalog()
589566
plan = _uninstall_plan(catalog)
590567
controller.catalog_service.get_catalog.return_value = catalog
591568
controller.catalog_service.get_package_entries.return_value = [entry]
@@ -614,7 +591,6 @@ def test_run_catalog_add_wraps_invalid_alias_validation_error(
614591
plugin_controller.run_catalog_add(
615592
alias="foo/bar",
616593
url="https://github.com/acme/dd-plugins",
617-
trusted=False,
618594
)
619595

620596
assert exc_info.value.exit_code == 1
@@ -635,11 +611,10 @@ def test_run_catalog_list_wraps_registry_load_error(
635611
mock_print_error.assert_called_once_with("Failed to list plugin catalogs: bad registry")
636612

637613

638-
def _catalog(*, trusted: bool) -> PluginCatalogConfig:
614+
def _catalog() -> PluginCatalogConfig:
639615
return PluginCatalogConfig(
640616
alias="local",
641617
url="https://raw.githubusercontent.com/acme/dd-plugins/main/catalog/plugins.json",
642-
trusted=trusted,
643618
)
644619

645620

@@ -655,7 +630,6 @@ def _plan(
655630
command=["python", "-m", "pip", "install", "data-designer-text-transform"],
656631
manager="pip",
657632
catalog_alias=catalog.alias,
658-
trusted_catalog=catalog.trusted,
659633
source_warning=source_warning,
660634
data_designer_protection=data_designer_protection,
661635
)

0 commit comments

Comments
 (0)