From 775ef8d8ed9afcb62713c7a0f34819b34ce34bff Mon Sep 17 00:00:00 2001 From: Mattt Zmuda Date: Sat, 10 Feb 2024 03:54:55 -0800 Subject: [PATCH 1/2] Fix logic for when to stream output when running models --- internal/cmd/prediction/create.go | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/internal/cmd/prediction/create.go b/internal/cmd/prediction/create.go index 8dd0bb2..13f213d 100644 --- a/internal/cmd/prediction/create.go +++ b/internal/cmd/prediction/create.go @@ -78,8 +78,15 @@ var CreateCmd = &cobra.Command{ return fmt.Errorf("failed to coerce inputs: %w", err) } - shouldWait := cmd.Flags().Changed("wait") || !cmd.Flags().Changed("no-wait") - shouldStream := !cmd.Flags().Changed("wait") && cmd.Flags().Changed("stream") || (outputSchema != nil && outputSchema.Type == "array" && outputSchema.Items.Value.Type == "string" && outputSchema.Items.Value.Format != "uri") + shouldWait := (cmd.Flags().Changed("wait") || !cmd.Flags().Changed("no-wait")) + + canStream := (outputSchema != nil && + outputSchema.Type == "array" && + outputSchema.Items.Value.Type == "string" && + outputSchema.Extensions["x-cog-array-display"] == "concatenate" && + outputSchema.Extensions["x-cog-array-type"] == "iterator") + shouldStream := canStream && !cmd.Flags().Changed("wait") && + (cmd.Flags().Changed("stream") || !cmd.Flags().Changed("no-stream")) s.Start() var prediction *replicate.Prediction @@ -304,15 +311,20 @@ func init() { func AddCreateFlags(cmd *cobra.Command) { cmd.Flags().Bool("json", false, "Emit JSON") - cmd.Flags().Bool("no-wait", false, "Don't wait for prediction to complete") + cmd.Flags().Bool("web", false, "View on web") + cmd.MarkFlagsMutuallyExclusive("json", "web") + cmd.Flags().BoolP("wait", "w", true, "Wait for prediction to complete") + cmd.Flags().Bool("no-wait", false, "Don't wait for prediction to complete") + cmd.MarkFlagsMutuallyExclusive("wait", "no-wait") + cmd.Flags().Bool("stream", false, "Stream prediction output") - cmd.Flags().Bool("web", false, "View on web") + cmd.Flags().Bool("no-stream", false, "Don't stream prediction output") + cmd.MarkFlagsMutuallyExclusive("stream", "no-stream") + cmd.MarkFlagsMutuallyExclusive("stream", "wait") + cmd.Flags().String("separator", "=", "Separator between input key and value") + cmd.Flags().Bool("save", false, "Save prediction outputs to directory") cmd.Flags().String("output-directory", "", "Output directory, defaults to ./{prediction-id}") - - cmd.MarkFlagsMutuallyExclusive("json", "web") - cmd.MarkFlagsMutuallyExclusive("stream", "wait") - cmd.MarkFlagsMutuallyExclusive("wait", "no-wait") } From 441d2df9b83148812efa7c8f0cde3baac4a8ca91 Mon Sep 17 00:00:00 2001 From: Mattt Zmuda Date: Sat, 10 Feb 2024 03:58:18 -0800 Subject: [PATCH 2/2] Reorder conditionals --- internal/cmd/prediction/create.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/cmd/prediction/create.go b/internal/cmd/prediction/create.go index 13f213d..17f88e2 100644 --- a/internal/cmd/prediction/create.go +++ b/internal/cmd/prediction/create.go @@ -83,8 +83,8 @@ var CreateCmd = &cobra.Command{ canStream := (outputSchema != nil && outputSchema.Type == "array" && outputSchema.Items.Value.Type == "string" && - outputSchema.Extensions["x-cog-array-display"] == "concatenate" && - outputSchema.Extensions["x-cog-array-type"] == "iterator") + outputSchema.Extensions["x-cog-array-type"] == "iterator" && + outputSchema.Extensions["x-cog-array-display"] == "concatenate") shouldStream := canStream && !cmd.Flags().Changed("wait") && (cmd.Flags().Changed("stream") || !cmd.Flags().Changed("no-stream"))