Coop client exposes its services in Python. This page covers storing and retrieving EDSL objects; see Remote Inference, Remote Caching, and Human studies for execution and collection workflows.
Use these methods to reopen a study from another computer, reuse a collaborator’s questionnaire, or share completed results. push() uploads an object and pull() retrieves it as a usable EDSL object. The returned UUID is its unique identifier, which you can keep instead of searching for the object each time.
Authentication
Create an Expected Parrot account and configure your key using Managing Keys. Remote operations below require authentication. Saving a local.ep package does not upload it.
Upload and retrieve a survey
This example creates a local survey, then uploads a private copy. The upload stores the definition; it does not run the survey or generate responses.survey.humanize() when collecting human responses.
Use the client directly
The equivalent client operations let you work with multiple object types. Continuing with the UUID returned above:coop.push(object, description=..., visibility=...) to upload another object. Objects such as surveys, agents, scenarios, and results preserve different parts of a study; saving one does not automatically preserve every related artifact.
Find objects with filters and pagination
coop.list() returns a CoopRegularObjects collection of object metadata. For example, find private surveys and results whose descriptions match a study label:
The returned collection exposes
current_page, total_pages, page_size, and total_count. To retrieve another page, call coop.list() again with the same filters and a different page value. Fetching one page does not fetch all matches.
You can also filter the metadata you have already downloaded:
object_type="survey" in coop.list() to filter the search across all matching objects.
Retrieve the listed objects
Listing metadata does not download each object’s contents. Callfetch() on the original collection to download all objects on that page:
coop.pull(identifier, expected_object_type="results") retrieves the Results object directly; Results.pull(identifier) is the class-specific alternative. coop.get() also retrieves and deserializes objects. These identifiers refer to stored objects. Use the background jobs guide to find execution records and obtain their results UUIDs.
Update and share
coop.patch(survey_uuid, description="Revised description") updates metadata. Supply value=updated_survey to replace object content deliberately. Preserve a local version before updating a shared definition that collaborators may rely on.
Read metadata without downloading the object with coop.get_metadata(survey_uuid). coop.patch_metadata(survey_uuid, description="Revised description", visibility="private") changes metadata without replacing the object contents.
Use Python methods for access management:
ep shared, ep share, and ep unshare.
Delete a remote object
coop.delete(survey_uuid) deletes the remote object. Use it only when that deletion is intended. It is separate from removing a local file. The CLI equivalent is ep delete, which requires explicit confirmation in automated use.
Research materials and provenance
Keep questions, logic, source data, model settings, prompts, results, and the EDSL version needed to interpret a run. Use Notebooks to share supporting notebooks or scripts and Saving objects for local versioning.Common methods
These client methods contact Expected Parrot and require configured access.url_or_uuid can be a stored object’s URL or UUID.
