---
name: directory_scan_result
lang: py
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class DirectoryScanResult:
      root: str
      processable: list[ClassifiedFile] = field(default_factory=list)
      unsupported: list[ClassifiedFile] = field(default_factory=list)
      skipped: list[str] = field(default_factory=list)
      warnings: list[str] = field(default_factory=list)
description: "Resultado de un escaneo de arbol de directorios. Agrupa archivos procesables, no soportados, paths saltados (con razon) y warnings generados durante el escaneo."
tags: [directory, scan, filesystem, result, infra]
uses_types: [classified_file_py_infra]
file_path: "python/types/infra/directory_scan_result.py"
---

## Campos

- `root` — path absoluto del directorio raiz escaneado.
- `processable` — lista de `ClassifiedFile` con clasificacion `"processable"`.
- `unsupported` — lista de `ClassifiedFile` con clasificacion `"unsupported"`.
- `skipped` — lista de strings con formato `"path (reason)"` para archivos/dirs omitidos.
- `warnings` — mensajes de advertencia no fatales generados durante el escaneo.

## Ejemplo

```python
from scan_directory import scan_directory

result = scan_directory("/data/docs", supported_extensions={".pdf", ".md"})
print(f"Procesables: {len(result.processable)}")
print(f"No soportados: {len(result.unsupported)}")
for s in result.skipped:
    print(f"  Saltado: {s}")
```

## Notas

Producido exclusivamente por `scan_directory`. Los campos `processable` y `unsupported` estan ordenados por `rel_path`. El campo `skipped` incluye tanto directorios podados como archivos individuales ignorados (dot files, symlinks, archivos vacios).
