Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8f98d13
add all dataclasses and tests
linglp Jul 14, 2026
78ec656
fix docstring
linglp Jul 15, 2026
879a2c8
added create replica endpoint, dataclasses, updated documentation
linglp Jul 15, 2026
b7d80dd
add test for create replica data classes and add add a unit test of c…
linglp Jul 15, 2026
df9d8bd
if nothing returned, then it should raise error
linglp Jul 15, 2026
bdf168c
raise an error if query_request is none when querying the grid
linglp Jul 15, 2026
9ff1bad
update documentation; export filter and column selection data classes…
linglp Jul 16, 2026
3f6f584
add the connect method
linglp Jul 17, 2026
146ac3c
add connect to documentation
linglp Jul 17, 2026
050a448
restore thing
linglp Jul 17, 2026
16ac436
when no validation result returned, it should not raise an error
linglp Jul 17, 2026
224ddd4
added otel trace method
linglp Jul 17, 2026
a5ea43d
update docstring
linglp Jul 17, 2026
8fb46ce
add test
linglp Jul 17, 2026
6449b72
make sure that GridQuery does not allow empty column selection
linglp Jul 17, 2026
d07551b
make create replica a private method
linglp Jul 20, 2026
028b57a
update docstring
linglp Jul 20, 2026
cf7b2d4
remove fill_from_dict in selectItem classes and filter classes; edit …
linglp Jul 20, 2026
67a045f
update import; docstring example; and documentation
linglp Jul 20, 2026
efacbfe
Merge branch 'develop' into SYNPY-1880-clean
linglp Jul 20, 2026
17cb35e
update to reference the grid previously created
linglp Jul 20, 2026
3b81365
query result should be returned instead of none when there is no row
linglp Jul 20, 2026
b853a52
add to grid class docstring
linglp Jul 20, 2026
2c81990
update docstring example to avoid recreating another grid instance
linglp Jul 21, 2026
990fac7
added integration tests
linglp Jul 22, 2026
740c76d
update docstring
linglp Jul 22, 2026
056e25c
add import back
linglp Jul 22, 2026
8518dce
add comment
linglp Jul 22, 2026
ee55485
Merge branch 'develop' into SYNPY-1880-clean
linglp Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions docs/reference/experimental/async/curator.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,126 @@
- import_csv_async
- delete_async
- list_async
- connect_async
- validate_rows_async
---
[](){ #query-reference-async }
::: synapseclient.models.Query
options:
inherited_members: true
members:
---
[](){ #GridQuery-reference-async }
::: synapseclient.models.curation.GridQuery
options:
inherited_members: true
members:
---
[](){ #QueryRequest-reference-async }
::: synapseclient.models.curation.QueryRequest
options:
inherited_members: true
members:
---
[](){ #SelectItem-reference-async }
::: synapseclient.models.curation.SelectItem
options:
inherited_members: true
members:
---
[](){ #SelectByName-reference-async }
::: synapseclient.models.curation.SelectByName
options:
inherited_members: true
members:
---
[](){ #SelectAll-reference-async }
::: synapseclient.models.curation.SelectAll
options:
inherited_members: true
members:
---
[](){ #CountStar-reference-async }
::: synapseclient.models.curation.CountStar
options:
inherited_members: true
members:
---
[](){ #SelectSelection-reference-async }
::: synapseclient.models.curation.SelectSelection
options:
inherited_members: true
members:
---
[](){ #Filter-reference-async }
::: synapseclient.models.curation.Filter
options:
inherited_members: true
members:
---
[](){ #RowValidationResultFilter-reference-async }
::: synapseclient.models.curation.RowValidationResultFilter
options:
inherited_members: true
members:
---
[](){ #CellValueFilter-reference-async }
::: synapseclient.models.curation.CellValueFilter
options:
inherited_members: true
members:
---
[](){ #RowSelectionFilter-reference-async }
::: synapseclient.models.curation.RowSelectionFilter
options:
inherited_members: true
members:
---
[](){ #RowIsValidFilter-reference-async }
::: synapseclient.models.curation.RowIsValidFilter
options:
inherited_members: true
members:
---
[](){ #RowIdFilter-reference-async }
::: synapseclient.models.curation.RowIdFilter
options:
inherited_members: true
members:
---
[](){ #ValidationOperator-reference-async }
::: synapseclient.models.curation.ValidationOperator
options:
inherited_members: true
members:
---
[](){ #CellValueOperator-reference-async }
::: synapseclient.models.curation.CellValueOperator
options:
inherited_members: true
members:
---
[](){ #GridQueryResult-reference-async }
::: synapseclient.models.curation.GridQueryResult
options:
inherited_members: true
members:
---
[](){ #GridRow-reference-async }
::: synapseclient.models.curation.GridRow
options:
inherited_members: true
members:
---
[](){ #SelectColumn-reference-async }
::: synapseclient.models.curation.SelectColumn
options:
inherited_members: true
members:
---
[](){ #GridQueryValidationResult-reference-async }
::: synapseclient.models.curation.GridQueryValidationResult
options:
inherited_members: true
members:
---
116 changes: 116 additions & 0 deletions docs/reference/experimental/sync/curator.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,126 @@
- import_csv
- delete
- list
- connect
- validate_rows
---
[](){ #query-reference }
::: synapseclient.models.Query
options:
inherited_members: true
members:
---
[](){ #GridQuery-reference }
::: synapseclient.models.curation.GridQuery
options:
inherited_members: true
members:
---
[](){ #QueryRequest-reference }
::: synapseclient.models.curation.QueryRequest
options:
inherited_members: true
members:
---
[](){ #SelectItem-reference }
::: synapseclient.models.curation.SelectItem
options:
inherited_members: true
members:
---
[](){ #SelectByName-reference }
::: synapseclient.models.curation.SelectByName
options:
inherited_members: true
members:
---
[](){ #SelectAll-reference }
::: synapseclient.models.curation.SelectAll
options:
inherited_members: true
members:
---
[](){ #CountStar-reference }
::: synapseclient.models.curation.CountStar
options:
inherited_members: true
members:
---
[](){ #SelectSelection-reference }
::: synapseclient.models.curation.SelectSelection
options:
inherited_members: true
members:
---
[](){ #Filter-reference }
::: synapseclient.models.curation.Filter
options:
inherited_members: true
members:
---
[](){ #RowValidationResultFilter-reference }
::: synapseclient.models.curation.RowValidationResultFilter
options:
inherited_members: true
members:
---
[](){ #CellValueFilter-reference }
::: synapseclient.models.curation.CellValueFilter
options:
inherited_members: true
members:
---
[](){ #RowSelectionFilter-reference }
::: synapseclient.models.curation.RowSelectionFilter
options:
inherited_members: true
members:
---
[](){ #RowIsValidFilter-reference }
::: synapseclient.models.curation.RowIsValidFilter
options:
inherited_members: true
members:
---
[](){ #RowIdFilter-reference }
::: synapseclient.models.curation.RowIdFilter
options:
inherited_members: true
members:
---
[](){ #ValidationOperator-reference }
::: synapseclient.models.curation.ValidationOperator
options:
inherited_members: true
members:
---
[](){ #CellValueOperator-reference }
::: synapseclient.models.curation.CellValueOperator
options:
inherited_members: true
members:
---
[](){ #GridQueryResult-reference }
::: synapseclient.models.curation.GridQueryResult
options:
inherited_members: true
members:
---
[](){ #GridRow-reference }
::: synapseclient.models.curation.GridRow
options:
inherited_members: true
members:
---
[](){ #SelectColumn-reference }
::: synapseclient.models.curation.SelectColumn
options:
inherited_members: true
members:
---
[](){ #GridQueryValidationResult-reference }
::: synapseclient.models.curation.GridQueryValidationResult
options:
inherited_members: true
members:
---
2 changes: 2 additions & 0 deletions synapseclient/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
)
from .curation_services import (
create_curation_task,
create_grid_replica,
delete_curation_task,
delete_grid_session,
get_curation_task,
Expand Down Expand Up @@ -339,6 +340,7 @@
"list_grid_sessions",
"update_curation_task",
"update_curation_task_status",
"create_grid_replica",
# download_list_services
"add_to_download_list_async",
"clear_download_list_async",
Expand Down
35 changes: 35 additions & 0 deletions synapseclient/api/curation_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,3 +284,38 @@ async def delete_grid_session(
client = Synapse.get_client(synapse_client=synapse_client)

await client.rest_delete_async(uri=f"/grid/session/{session_id}")


async def create_grid_replica(
create_replica_request: Dict[str, Any],
session_id: str,
*,
synapse_client: Optional["Synapse"] = None,
) -> dict[str, Any]:
"""
Create a new replica for a grid session. A replica represents an
'in-memory' grid document identified by a unique replicaId.

https://rest-docs.synapse.org/rest/POST/grid/session/sessionId/replica.html

Note: Only the user that started the grid session may create a replica.
A user is limited to 10 replicas per-hour per-grid-session.

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.

I thought we determined this limit doesn't exist?


Arguments:
create_replica_request: The complete CreateReplicaRequest object.
session_id: The grid session ID.
synapse_client: If not passed in and caching was not disabled by
`Synapse.allow_client_caching(False)` this will use the last created
instance from the Synapse class constructor.

Returns:
The CreateReplicaResponse containing information about the created replica.
"""
from synapseclient import Synapse

client = Synapse.get_client(synapse_client=synapse_client)

return await client.rest_post_async(
uri=f"/grid/session/{session_id}/replica",
body=json.dumps(create_replica_request),
)
17 changes: 17 additions & 0 deletions synapseclient/core/constants/concrete_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,23 @@
)
SYNCHRONIZE_GRID_REQUEST = "org.sagebionetworks.repo.model.grid.SynchronizeGridRequest"
GRID_CSV_IMPORT_REQUEST = "org.sagebionetworks.repo.model.grid.GridCsvImportRequest"
GRID_QUERY_JOB_REQUEST = "org.sagebionetworks.repo.model.grid.GridQueryJobRequest"

# Grid Query SelectItem Types
SELECT_BY_NAME = "org.sagebionetworks.repo.model.grid.query.SelectByName"
SELECT_ALL = "org.sagebionetworks.repo.model.grid.query.SelectAll"
COUNT_STAR = "org.sagebionetworks.repo.model.grid.query.function.CountStar"
SELECT_SELECTION = "org.sagebionetworks.repo.model.grid.query.SelectSelection"

# Grid Query Filter Types
ROW_VALIDATION_RESULT_FILTER = (
"org.sagebionetworks.repo.model.grid.query.RowValidationResultFilter"
)
CELL_VALUE_FILTER = "org.sagebionetworks.repo.model.grid.query.CellValueFilter"
ROW_SELECTION_FILTER = "org.sagebionetworks.repo.model.grid.query.RowSelectionFilter"
ROW_IS_VALID_FILTER = "org.sagebionetworks.repo.model.grid.query.RowIsValidFilter"
ROW_ID_FILTER = "org.sagebionetworks.repo.model.grid.query.RowIdFilter"

UPLOAD_TO_TABLE_PREVIEW_REQUEST = (
"org.sagebionetworks.repo.model.table.UploadToTablePreviewRequest"
)
Loading
Loading