fix: add machine-readable CLI output controls - #1119
Conversation
NVBugs: 6556548, 6556552, 6556553, 6556555 Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
df07b50 to
8a35a57
Compare
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe CLI adds ChangesCLI output and error handling
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py (1)
267-270: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick winMake
iter_json_lineslazy.The function builds the complete
list[str]beforeformat_outputwrites the first record. Large--streamor--all-pagesresponses retain the response data and all serialized lines in memory. Return an iterator and yield one serialized record per loop.Proposed fix
+from collections.abc import Iterator + -def iter_json_lines(data: Any, *, is_list: bool = False) -> list[str]: +def iter_json_lines(data: Any, *, is_list: bool = False) -> Iterator[str]: """Return newline-delimited JSON records for streaming-style output.""" records = _extract_items_from_response(data) if is_list else [data] - return [json.dumps(model_to_dict(record), ensure_ascii=False, separators=(",", ":")) for record in records] + for record in records: + yield json.dumps(model_to_dict(record), ensure_ascii=False, separators=(",", ":"))🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py` around lines 267 - 270, Update iter_json_lines to return an iterator rather than list[str], yielding each serialized record from the records loop as it is processed. Preserve the existing _extract_items_from_response, model_to_dict, and JSON serialization behavior while allowing format_output to consume records lazily.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/nemo_platform_ext/tests/cli/core/test_errors.py`:
- Line 27: Update the remote/API failure assertions in the affected tests to use
the documented exit code value 3 or a test-owned constant, rather than the
imported REMOTE_ERROR_EXIT_CODE from the module under test. Remove that import
and ensure every listed failure case asserts the actual status independently;
leave the root help text assertion unchanged.
In
`@tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2`:
- Line 67: Move stream-format validation to the start of each command, before
any data acquisition: in
tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
lines 67-67, validate before handle_code_generation and API fetching; in
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.py lines
94-94, validate before discover_manifests(); and in
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.py
lines 209-209, validate before load_skills(). Preserve UsageError behavior for
invalid --stream combinations.
---
Nitpick comments:
In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py`:
- Around line 267-270: Update iter_json_lines to return an iterator rather than
list[str], yielding each serialized record from the records loop as it is
processed. Preserve the existing _extract_items_from_response, model_to_dict,
and JSON serialization behavior while allowing format_output to consume records
lazily.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: d65098e1-88b0-4880-8f69-743566055a79
⛔ Files ignored due to path filters (38)
sdk/python/nemo-platform/src/nemo_platform/cli/app.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/adapters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/files/filesets.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/guardrail/configs.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/iam/role_bindings.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/gateway/openai/v1/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/prompts.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/providers.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/virtual_models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/annotations.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/groups.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/steps.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/tasks.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/models/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/projects.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/secrets/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/members.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/skills/cli.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/errors.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/types.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/test_plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_errors.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/test_app.pyis excluded by!sdk/**
📒 Files selected for processing (39)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/app.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/errors.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/types.pypackages/nemo_platform_ext/tests/cli/commands/test_plugins.pypackages/nemo_platform_ext/tests/cli/core/test_errors.pypackages/nemo_platform_ext/tests/cli/core/test_formatters.pypackages/nemo_platform_ext/tests/cli/test_app.pytools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py`:
- Around line 267-270: Update iter_json_lines to return Iterator[str] and lazily
yield each serialized record as it is processed, rather than building and
returning a list comprehension. Preserve the existing record extraction,
model_to_dict conversion, and JSON formatting behavior while allowing callers
such as the output path around line 622 to receive the first record immediately.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: be637102-9e99-48ec-9b56-f1b00568a988
⛔ Files ignored due to path filters (38)
sdk/python/nemo-platform/src/nemo_platform/cli/app.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/adapters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/files/filesets.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/guardrail/configs.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/iam/role_bindings.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/gateway/openai/v1/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/prompts.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/providers.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/virtual_models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/annotations.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/groups.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/steps.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/tasks.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/models/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/projects.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/secrets/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/members.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/skills/cli.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/errors.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/types.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/test_plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_errors.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/test_app.pyis excluded by!sdk/**
📒 Files selected for processing (39)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/app.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/errors.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/types.pypackages/nemo_platform_ext/tests/cli/commands/test_plugins.pypackages/nemo_platform_ext/tests/cli/core/test_errors.pypackages/nemo_platform_ext/tests/cli/core/test_formatters.pypackages/nemo_platform_ext/tests/cli/test_app.pytools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
🚧 Files skipped from review as they are similar to previous changes (38)
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.py
- packages/nemo_platform_ext/tests/cli/test_app.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.py
- packages/nemo_platform_ext/tests/cli/core/test_formatters.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.py
- tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/app.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/types.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/init.py
- packages/nemo_platform_ext/tests/cli/core/test_errors.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/errors.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.py
- packages/nemo_platform_ext/tests/cli/commands/test_plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.py
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py (1)
629-631: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick winRemove the redundant per-record flush.
Click documents that
click.echo()always flushes its output and uses Click-managed output streams. (click.palletsprojects.com) Callingsys.stdout.flush()again adds unnecessary overhead and may flush a different stream. Verify the pinned Click version, then remove the second flush.Proposed fix
for line in iter_json_lines(data, is_list=is_list): click.echo(line) - sys.stdout.flush() return🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py` around lines 629 - 631, Remove the redundant sys.stdout.flush() call from the loop that emits records via click.echo() in the formatter, after verifying the pinned Click version supports Click-managed flushing. Keep click.echo(line) as the sole output operation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py`:
- Around line 629-631: Remove the redundant sys.stdout.flush() call from the
loop that emits records via click.echo() in the formatter, after verifying the
pinned Click version supports Click-managed flushing. Keep click.echo(line) as
the sole output operation.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 257cd8ad-ac58-4ccd-9e94-baa27c884ad4
⛔ Files ignored due to path filters (36)
sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/adapters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/files/filesets.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/guardrail/configs.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/iam/role_bindings.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/gateway/openai/v1/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/prompts.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/providers.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/virtual_models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/annotations.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/groups.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/steps.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/tasks.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/models/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/projects.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/secrets/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/members.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/skills/cli.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/skills/test_cli.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/test_plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_errors.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/test_app.pyis excluded by!sdk/**
📒 Files selected for processing (37)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.pypackages/nemo_platform_ext/tests/cli/commands/skills/test_cli.pypackages/nemo_platform_ext/tests/cli/commands/test_plugins.pypackages/nemo_platform_ext/tests/cli/core/test_errors.pypackages/nemo_platform_ext/tests/cli/core/test_formatters.pypackages/nemo_platform_ext/tests/cli/test_app.pytools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
🚧 Files skipped from review as they are similar to previous changes (30)
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/init.py
- tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
- packages/nemo_platform_ext/tests/cli/commands/test_plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.py
- packages/nemo_platform_ext/tests/cli/core/test_errors.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/init.py
- packages/nemo_platform_ext/tests/cli/core/test_formatters.py
Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
c48fc86 to
7aed28d
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.py`:
- Around line 268-272: Update iter_json_lines to obtain records through a lazy
iterator rather than _extract_items_from_response, avoiding list(value())
materialization and unnecessary copies of list-backed results. Preserve the
existing single-record behavior when is_list is false and yield each converted
record unchanged.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 5f9cd69c-f7dc-4f5f-9c4b-36e2049b4947
⛔ Files ignored due to path filters (39)
sdk/python/nemo-platform/src/nemo_platform/cli/app.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/adapters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/files/filesets.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/guardrail/configs.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/iam/role_bindings.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployment_configs/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/deployments/versions.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/gateway/openai/v1/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/prompts.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/providers.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/inference/virtual_models.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/annotations.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/evaluator_results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/spans/groups.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/intake/traces.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/results.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/steps.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/jobs/tasks.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/models/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/projects.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/secrets/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/__init__.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/api/workspaces/members.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/commands/skills/cli.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/errors.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/src/nemo_platform/cli/core/types.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/skills/test_cli.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/commands/test_plugins.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_errors.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/core/test_formatters.pyis excluded by!sdk/**sdk/python/nemo-platform/tests/vendored/nemo_platform_ext/cli/test_app.pyis excluded by!sdk/**
📒 Files selected for processing (40)
packages/nemo_platform_ext/src/nemo_platform_ext/cli/app.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/gateway/openai/v1/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/__init__.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/errors.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/formatters.pypackages/nemo_platform_ext/src/nemo_platform_ext/cli/core/types.pypackages/nemo_platform_ext/tests/cli/commands/skills/test_cli.pypackages/nemo_platform_ext/tests/cli/commands/test_plugins.pypackages/nemo_platform_ext/tests/cli/core/test_errors.pypackages/nemo_platform_ext/tests/cli/core/test_formatters.pypackages/nemo_platform_ext/tests/cli/test_app.pytools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
🚧 Files skipped from review as they are similar to previous changes (38)
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/prompts.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/evaluator_results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/steps.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/results.py
- packages/nemo_platform_ext/tests/cli/commands/skills/test_cli.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/models.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/members.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/adapters.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/models/init.py
- tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/sdk/cli_generator/templates/list_command.py.j2
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/versions.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/tasks.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/jobs/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/providers.py
- packages/nemo_platform_ext/tests/cli/test_app.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/types.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployment_configs/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/evaluator_results.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/annotations.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/guardrail/configs.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/core/errors.py
- packages/nemo_platform_ext/tests/cli/core/test_formatters.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/secrets/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/skills/cli.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/files/filesets.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/traces.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/virtual_models.py
- packages/nemo_platform_ext/tests/cli/commands/test_plugins.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/intake/spans/groups.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/inference/deployments/init.py
- packages/nemo_platform_ext/tests/cli/core/test_errors.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/app.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/workspaces/init.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/projects.py
- packages/nemo_platform_ext/src/nemo_platform_ext/cli/commands/api/iam/role_bindings.py
anastasia-nesterenko
left a comment
There was a problem hiding this comment.
minor questions
Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
Signed-off-by: Matt Kornfield <mkornfield@nvidia.com>
Summary
--outputaliases alongside existing CLI format flags.--streamsupport for list commands and manual plugin/skill listings, emitting NDJSON for JSON/raw output.NVBugs
Validation
make update-climake vendor-nemo-platform-extuv run --frozen pytest packages/nemo_platform_ext/tests/cli/commands/use_cases/test_chat.py -q: 33 passeduv run --frozen pytest tests/vendored/nemo_platform_ext/cli/commands/use_cases/test_chat.py -qfromsdk/python/nemo-platform: 33 passeduv run --frozen pytest packages/nemo_platform_ext/tests/cli/core/test_formatters.py packages/nemo_platform_ext/tests/cli/core/test_errors.py packages/nemo_platform_ext/tests/cli/test_app.py packages/nemo_platform_ext/tests/cli/commands/test_plugins.py packages/nemo_platform_ext/tests/cli/commands/skills/test_cli.py -q: 215 passeduv run --frozen ruff check packages/nemo_platform_ext/tests/cli/commands/use_cases/test_chat.py: passedgit diff --check: passed--help,--output,--stream, NDJSON output, and remote error exit code 3Review follow-up
dfc09505akeeps streamed response item extraction lazy and adds regression coverage.266d554f1regenerates list commands after merging current main so newexperimentscommands get the same stream/output behavior.34d0bca44updates chat syntax tests to expect the documented remote/API exit code 3 and vendors the test update into the SDK copy.--outputand JSON-lines list streaming.Summary by CodeRabbit
New Features
--streamsupport across CLI list commands for newline-delimited JSON output.--outputas an alias for--output-format.Bug Fixes
Documentation