ATH-MaaS/Pixelle-Video · error · ValueError

No assets provided. Please upload at least one image or vide

Error message

No assets provided. Please upload at least one image or video.

What it means

The asset_based pipeline requires at least one image or video to operate on. setup_environment reads context.request['assets'] and raises ValueError when the list is empty or missing, before any asset analysis starts.

Source

Thrown at pixelle_video/pipelines/asset_based.py:187

            context: Pipeline context with assets list
        
        Returns:
            Updated context with asset_index
        """
        # Create isolated task directory
        task_dir, task_id = create_task_output_dir()
        context.task_id = task_id
        context.task_dir = Path(task_dir)  # Convert to Path for easier usage
        
        # Determine final video path
        context.final_video_path = get_task_final_video_path(task_id)
        
        logger.info(f"📁 Task directory created: {task_dir}")
        logger.info("🔍 Analyzing uploaded assets...")
        
        assets: List[str] = context.request.get("assets", [])
        if not assets:
            raise ValueError("No assets provided. Please upload at least one image or video.")
        
        total_assets = len(assets)
        logger.info(f"Found {total_assets} assets to analyze")
        
        # Emit initial progress (0-15% for asset analysis)
        self._emit_progress(ProgressEvent(
            event_type="analyzing_assets",
            progress=0.01,
            frame_current=0,
            frame_total=total_assets,
            extra_info="start"
        ))
        
        self.asset_index = {}
        
        for i, asset_path in enumerate(assets, 1):
            asset_path_obj = Path(asset_path)
            

View on GitHub (pinned to 848b054e4f)

Solutions

  1. Add at least one image or video path to the request's 'assets' list before invoking the pipeline
  2. Verify the upload step actually stores file paths under the request key 'assets' (not another key)
  3. If the intent was text-to-video with no assets, switch to a pipeline that supports text-only generation

Example fix

# before
await pipeline(text="a cat surfing", request={})
# after
await pipeline(text="a cat surfing", request={"assets": ["/tmp/uploads/cat.jpg"]})
Defensive patterns

Strategy: validation

Validate before calling

assets = request.get("assets") or []
if not assets:
    raise ValueError("assets must contain at least one image or video path")

Type guard

def has_assets(req: dict) -> bool:
    a = req.get("assets")
    return isinstance(a, (list, tuple)) and len(a) > 0

Try / catch

try:
    result = await pipeline(request=req)
except ValueError as e:
    if "No assets provided" in str(e):
        result = await text_only_pipeline(request=req)
    else:
        raise

Prevention

When it happens

Trigger: Calling the asset-based pipeline (via __call__/service.generate_video) without an 'assets' key in the request, or with assets: [].

Common situations: Text-only prompt submitted to a pipeline that fundamentally needs reference media; frontend forgot to include uploaded file paths; assets uploaded under a different request key (e.g. 'images'/'media') so the default [] kicks in.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30). Data as JSON: /api/errors/e325a3555679c7da. Report an issue: GitHub.