Metadata-Version: 2.4
Name: omararch48-pxyz-utils
Version: 0.1.0
Summary: Utilidades, validaciones y transformaciones de datos en Python
License: MIT
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"

# pxyz_utils

Paquete de utilidades: validaciones y transformaciones de datos en Python.

Incluye, a modo de ejemplo:

- `pxyz_utils.validators.is_valid_email` — valida formato de correo electronico.
- `pxyz_utils.transformers.flatten_dict` — aplana un diccionario anidado.

## Instalacion

```bash
pip install omararch48-pxyz-utils
```

## Uso

```python
from pxyz_utils.validators import is_valid_email
from pxyz_utils.transformers import flatten_dict

is_valid_email("usuario@dominio.com")  # True
flatten_dict({"a": 1, "b": {"c": 2}})  # {"a": 1, "b.c": 2}
```

## Desarrollo local (sin Docker)

```bash
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
```

## Desarrollo con Docker

El proyecto incluye un `docker-compose.yml` con un servicio `dev` que construye
una imagen a partir del `Dockerfile` (instala el paquete en modo editable junto
con las dependencias de desarrollo: `pytest`, `build`, `twine`) y monta el
codigo del proyecto como volumen para que los cambios se reflejen al instante.

1. Copia `.env.example` a `.env` si aun no existe y ajusta lo necesario:

   ```bash
   cp .env.example .env
   ```

2. Levanta el contenedor:

   ```bash
   docker compose up -d --build
   ```

3. Entra al contenedor:

   ```bash
   docker exec -it pxyz_utils_dev bash
   ```

4. Dentro del contenedor ya puedes correr tests, reinstalar dependencias, etc.:

   ```bash
   pytest
   pip install -e ".[dev]"
   ```

5. Para detener el entorno:

   ```bash
   docker compose down
   ```

## Empaquetar y publicar

Se puede hacer tanto en local como dentro del contenedor de desarrollo
(`docker exec -it pxyz_utils_dev bash`):

```bash
python -m build
twine upload dist/*
```

Si publicas hacia un indice privado (por ejemplo un registro Gitea/PyPI
propio), define `TWINE_USERNAME`, `TWINE_PASSWORD` y `TWINE_REPOSITORY_URL`
en `.env` antes de levantar el contenedor; estas variables se propagan
automaticamente al entorno del servicio `dev`.
