---
name: preprocess_text
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "def preprocess_text(text: str) -> str"
description: "Normaliza whitespace y newlines de un texto crudo. Util como paso previo a chunking o indexing."
tags: [text, preprocessing, normalization, whitespace, newlines]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [re]
params:
  - name: text
    desc: "Texto crudo a normalizar"
output: "Texto con whitespace normalizado y newlines ajustados"
tested: true
tests: ["texto con saltos de linea Windows CRLF", "texto con multiples newlines consecutivos", "texto con espacios leading y trailing en cada linea"]
test_file_path: "python/functions/core/preprocess_text_test.py"
file_path: "python/functions/core/core.py"
---

## Ejemplo

```python
raw = "  hello  \r\n  world  \r\n\n\n\n  end  "
result = preprocess_text(raw)
# "hello\nworld\n\nend"
```

## Notas

Funcion pura. Aplica tres pasos en orden: normalizar line endings (CRLF y CR a LF), colapsar 3+ newlines consecutivos a 2, strip de cada linea. El strip global final elimina whitespace al inicio y al final del texto completo.
