interloper-api 0.68.0__tar.gz → 0.69.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {interloper_api-0.68.0 → interloper_api-0.69.0}/PKG-INFO +1 -1
  2. {interloper_api-0.68.0 → interloper_api-0.69.0}/pyproject.toml +1 -1
  3. {interloper_api-0.68.0 → interloper_api-0.69.0}/pyproject.toml.orig +1 -1
  4. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/backfills.py +13 -2
  5. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/runs.py +15 -2
  6. {interloper_api-0.68.0 → interloper_api-0.69.0}/README.md +0 -0
  7. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/__init__.py +0 -0
  8. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/app.py +0 -0
  9. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/dependencies/__init__.py +0 -0
  10. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/dependencies/auth.py +0 -0
  11. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/dependencies/rbac.py +0 -0
  12. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/dependencies/state.py +0 -0
  13. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/notifications/__init__.py +0 -0
  14. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/notifications/invitations.py +0 -0
  15. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/__init__.py +0 -0
  16. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/admin.py +0 -0
  17. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/agent.py +0 -0
  18. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/auth.py +0 -0
  19. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/catalog.py +0 -0
  20. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/components.py +0 -0
  21. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/health.py +0 -0
  22. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/oauth.py +0 -0
  23. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/organisations.py +0 -0
  24. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/tokens.py +0 -0
  25. {interloper_api-0.68.0 → interloper_api-0.69.0}/src/interloper_api/routes/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: interloper-api
3
- Version: 0.68.0
3
+ Version: 0.69.0
4
4
  Summary: Interloper FastAPI routes
5
5
  Author: Guillaume Onfroy
6
6
  Author-email: Guillaume Onfroy <guillaume@digitlcloud.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "interloper-api"
3
- version = "0.68.0"
3
+ version = "0.69.0"
4
4
  description = "Interloper FastAPI routes"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -3,7 +3,7 @@
3
3
  # ###############
4
4
  [project]
5
5
  name = "interloper-api"
6
- version = "0.68.0"
6
+ version = "0.69.0"
7
7
  description = "Interloper FastAPI routes"
8
8
  readme = "README.md"
9
9
  authors = [{ name = "Guillaume Onfroy", email = "guillaume@digitlcloud.com" }]
@@ -36,11 +36,19 @@ class BackfillCreateRequest(BaseModel):
36
36
 
37
37
 
38
38
  class BackfillResponse(BaseModel):
39
- """Response body for a backfill."""
39
+ """Response body for a backfill.
40
+
41
+ The target component's identity is resolved server-side, same contract
42
+ as ``RunResponse``: the ``component_*`` identity fields are ``None``
43
+ exactly when the target was deleted.
44
+ """
40
45
 
41
46
  id: UUID
42
47
  org_id: UUID
43
48
  component_id: UUID | None
49
+ component_kind: str | None = None
50
+ component_key: str | None = None
51
+ component_name: str | None = None
44
52
  status: str
45
53
  start_key: str
46
54
  end_key: str
@@ -56,7 +64,7 @@ class BackfillResponse(BaseModel):
56
64
  """Convert a DB Backfill to a BackfillResponse.
57
65
 
58
66
  Args:
59
- backfill: The DB Backfill row.
67
+ backfill: The DB Backfill row, with its ``target`` relationship loaded.
60
68
 
61
69
  Returns:
62
70
  The response model.
@@ -65,6 +73,9 @@ class BackfillResponse(BaseModel):
65
73
  id=backfill.id,
66
74
  org_id=backfill.org_id,
67
75
  component_id=backfill.component_id,
76
+ component_kind=backfill.target.kind if backfill.target else None,
77
+ component_key=backfill.target.key if backfill.target else None,
78
+ component_name=backfill.target.name if backfill.target else None,
68
79
  status=backfill.status,
69
80
  start_key=backfill.start_key,
70
81
  end_key=backfill.end_key,
@@ -33,11 +33,21 @@ MAX_EVENTS_PAGE_SIZE = 1000
33
33
 
34
34
 
35
35
  class RunResponse(BaseModel):
36
- """Response body for a run."""
36
+ """Response body for a run.
37
+
38
+ The target component's identity is resolved server-side (the row is
39
+ eagerly joined), so clients never need a second lookup — including for
40
+ target kinds they do not know about. All three ``component_*`` identity
41
+ fields are ``None`` exactly when the target was deleted
42
+ (``component_id`` nulls on deletion).
43
+ """
37
44
 
38
45
  id: UUID
39
46
  org_id: UUID
40
47
  component_id: UUID | None
48
+ component_kind: str | None = None
49
+ component_key: str | None = None
50
+ component_name: str | None = None
41
51
  backfill_id: UUID | None
42
52
  partition_key: str | None
43
53
  status: str
@@ -53,7 +63,7 @@ class RunResponse(BaseModel):
53
63
  """Convert a DB Run to a RunResponse.
54
64
 
55
65
  Args:
56
- run: The DB Run row.
66
+ run: The DB Run row, with its ``target`` relationship loaded.
57
67
 
58
68
  Returns:
59
69
  The response model.
@@ -62,6 +72,9 @@ class RunResponse(BaseModel):
62
72
  id=run.id,
63
73
  org_id=run.org_id,
64
74
  component_id=run.component_id,
75
+ component_kind=run.target.kind if run.target else None,
76
+ component_key=run.target.key if run.target else None,
77
+ component_name=run.target.name if run.target else None,
65
78
  backfill_id=run.backfill_id,
66
79
  partition_key=run.partition_key,
67
80
  status=run.status,