Skip to content

feat(uploads): wrap agents and agents/revision endpoints#195

Closed
Valyrian-Code wants to merge 1 commit into
fossology:mainfrom
Valyrian-Code:feat/upload-agents-endpoints
Closed

feat(uploads): wrap agents and agents/revision endpoints#195
Valyrian-Code wants to merge 1 commit into
fossology:mainfrom
Valyrian-Code:feat/upload-agents-endpoints

Conversation

@Valyrian-Code

Copy link
Copy Markdown
Contributor

Refs #52.

Adds two read-only getters for the agents that have run on an upload:

  • upload_agents()GET /uploads/{id}/agents — returns list[AgentOfUpload] (uploadId / agentName / currentAgentId / currentAgentRev / isAgentRunning / successfulAgents)
  • upload_agents_revision()GET /uploads/{id}/agents/revision — returns list[AgentsRevision] (id / name / revision)

Adds the AgentOfUpload and AgentsRevision models to obj.py, following the existing from_json convention. Both methods raise AuthorizationError on HTTP 403, consistent with the other uploads endpoints.

API details

Verified against Fossology 4.4.0 (API 1.6.1) running in a container.

Tests

All 7 pass live: happy paths for both getters, mocked payload/parse assertions, and 403/500 error paths.

ruff and mypy pass.

🤖 Generated with Claude Code

Refs fossology#52.

Adds two read-only getters for the agents that have run on an upload:

- upload_agents() -> GET /uploads/{id}/agents, returning a list[AgentOfUpload]
  (uploadId / agentName / currentAgentId / currentAgentRev / isAgentRunning /
  successfulAgents)
- upload_agents_revision() -> GET /uploads/{id}/agents/revision, returning a
  list[AgentsRevision] (id / name / revision)

Adds the AgentOfUpload and AgentsRevision models to obj.py following the
existing from_json convention. Both methods raise AuthorizationError on HTTP
403, consistent with the other uploads endpoints.

Verified against Fossology 4.4.0 (API 1.6.1) running in a container: all 7
tests pass (live happy paths, mocked payload/parse assertions, and 403/500
error paths).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: RAJVEER42 <irajveer.bishnoi2310@gmail.com>
Copilot AI review requested due to automatic review settings July 1, 2026 16:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the uploads API wrapper to expose Fossology’s “agents run on an upload” data, adding typed model objects and corresponding client methods for two read-only endpoints.

Changes:

  • Added upload_agents() wrapper for GET /uploads/{id}/agents returning list[AgentOfUpload].
  • Added upload_agents_revision() wrapper for GET /uploads/{id}/agents/revision returning list[AgentsRevision].
  • Added new tests and new obj.py models to parse the responses via the existing from_json convention.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
tests/test_uploads.py Adds tests for the two new uploads getters (payload parsing and some error paths).
fossology/uploads.py Implements the two new uploads endpoints and error handling.
fossology/obj.py Introduces AgentOfUpload and AgentsRevision models with from_json + __str__.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/test_uploads.py
Comment on lines +409 to +420
@responses.activate
def test_upload_agents_revision_500_error(
foss: Fossology, foss_server: str, upload: Upload
):
responses.add(
responses.GET,
f"{foss_server}/api/v1/uploads/{upload.id}/agents/revision",
status=500,
)
with pytest.raises(FossologyApiError):
foss.upload_agents_revision(upload)

@Valyrian-Code Valyrian-Code deleted the feat/upload-agents-endpoints branch July 1, 2026 17:03
@Valyrian-Code

Copy link
Copy Markdown
Contributor Author

Replaced by #198.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants