feat: Code Ocean version 4.1 functionality #64
Merged
jake-valsamis merged 4 commits intomainfrom Jan 23, 2026
Merged
Conversation
…e.py - Capsules now uses configurable _route for API paths - Pipelines extends Capsules with _route="pipelines" and method aliases - Moved AppPanel classes from components.py back to capsule.py - Added run_pipeline as alias for run_capsule in Computations Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds Code Ocean version 4.1 functionality for pipelines and custom S3 endpoints. It introduces a dedicated Pipelines client that reuses capsule functionality through inheritance, adds support for custom S3 endpoint configuration in data assets, and provides convenient method aliases for pipeline operations.
Changes:
- New
pipeline.pymodule with aPipelinesclient class that inherits fromCapsulesand provides pipeline-specific method aliases - Added
endpoint_nameanduse_input_bucketfields to S3 source and target configurations indata_asset.pyfor custom S3 endpoint support - Added
run_pipeline()method alias incomputation.pyfor more intuitive pipeline execution - Integrated
Pipelinesclient into the mainCodeOceanclient - Refactored
Capsulesclass to use a configurable_routeattribute, enabling route polymorphism for subclasses
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/codeocean/pipeline.py | New module introducing the Pipelines client class that inherits from Capsules and provides pipeline-specific method aliases |
| src/codeocean/data_asset.py | Added endpoint_name field to AWSS3Source and AWSS3Target for custom S3 endpoint support, and use_input_bucket field for admin-only internal bucket access |
| src/codeocean/computation.py | Added run_pipeline as an alias to run_capsule for improved API clarity when executing pipelines |
| src/codeocean/client.py | Integrated the new Pipelines client, making it accessible via client.pipelines |
| src/codeocean/capsule.py | Refactored hardcoded "capsules" route strings to use the configurable _route attribute; removed deprecated search_pipelines methods from Capsules class |
| examples/run_pipeline.py | Updated to use the new run_pipeline() method instead of run_capsule() for better semantic clarity |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Pipelines now holds an internal Capsules instance with _route="pipelines" and delegates to it. This avoids exposing Capsules methods on Pipelines. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
zvikagart
approved these changes
Jan 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
client.pipelinesfor pipeline-specific API operationsPipelinesclass uses composition: delegates to an internalCapsulesinstance with_route="pipelines"get_pipeline,search_pipelines, etc.) - no inheritedget_capsuleetc.Capsulesnow uses configurable_routefor API paths (defaults to"capsules")run_pipelinealias onComputations(same asrun_capsule)endpoint_nameanduse_input_bucketfields toAWSS3Sourceendpoint_namefield toAWSS3TargetTest plan
client.pipelines.get_pipeline()hits/pipelines/{id}endpointclient.pipelines.search_pipelines()hits/pipelines/searchendpointclient.computations.run_pipeline()works same asrun_capsule()client.capsulesmethods still work unchanged🤖 Generated with Claude Code