---
title: "Bridge Python"
description: "Bridge Python"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-10-08"
last_update: "2026-10-08"
time_minutes: 1
draft: false
unlisted: false
url: "https://core.libredte.cl/docs/bridge-python"
---

# Bridge Python



---

## Introducción

Bridge Python para la Biblioteca PHP

# Bridge Python para la Biblioteca PHP

[![CI](https://github.com/libredte/libredte-lib-core-bridge-python/actions/workflows/ci.yml/badge.svg?branch=main&amp;event=push)](https://github.com/libredte/libredte-lib-core-bridge-python/actions/workflows/ci.yml?query=branch%3Amain)
[![PyPI](https://img.shields.io/pypi/v/libredte-lib-core-bridge.svg)](https://pypi.org/project/libredte-lib-core-bridge/)
[![Descargas](https://img.shields.io/pypi/dm/libredte-lib-core-bridge.svg)](https://pypi.org/project/libredte-lib-core-bridge/)

Bridge que expone, desde Python, las operaciones de
`libredte/libredte-lib-core`, a través del
[Dispatcher](https://www.derafu.dev/docs/dispatcher), usando
[`derafu-backbone-bridge`](https://www.derafu.dev/docs/core/backbone-bridge-python)
como base. Repositorio:
[`libredte-lib-core-bridge-python`](https://github.com/libredte/libredte-lib-core-bridge-python).

&gt; [!IMPORTANT] Importante
&gt;
&gt; Aunque se llame &quot;bridge&quot;, `phpy` no le habla a un proceso PHP
&gt; aparte: embebe el motor de PHP dentro de tu propio proceso Python
&gt; (es PHP compilado con `--enable-embed`, cargado como librería, no
&gt; un servidor al otro lado de una red). Tu aplicación Python queda
&gt; igual de sujeta a los términos de la
&gt; [licencia AGPL](https://www.derafu.dev/docs/lib/licencia) que si usaras la
&gt; [Biblioteca PHP](https://www.derafu.dev/docs/lib) o el [Dispatcher](https://www.derafu.dev/docs/dispatcher)
&gt; directamente. Si buscas integrarte sin ese efecto, revisa los
&gt; [Servicios Web (API)](https://www.derafu.dev/docs/api), la
&gt; [Imagen Docker (API)](https://www.derafu.dev/docs/docker-api) o la
&gt; [Imagen Docker (Consola)](https://www.derafu.dev/docs/docker-console).

## Requerimientos

Antes de instalar, confirma que tienes:

- Python 3.14 o superior, compilado con soporte para `phpy`. La
  imagen de referencia con esto ya listo es
  [`ghcr.io/derafu/docker-python3.14-caddy-server:phpy`](https://github.com/derafu/docker-python3.14-caddy-server).
- Una instalación real (vía Composer) del
  [Dispatcher](https://www.derafu.dev/docs/dispatcher) accesible en disco.

## Instalación

Se instala con pip:

```shell
pip install libredte-lib-core-bridge
```

## Ejemplo

Un uso mínimo:

```python
from libredte_lib_core_bridge import Dispatcher

# environment=&#039;prod&#039;, debug=False por defecto.
dispatcher = Dispatcher()

result = dispatcher.dispatch(
    &#039;billing.identifier.caf_loader::load&#039;,
    xml=xml_base64,
)
```

`dispatch()` nunca deja pasar un error de PHP sin tipar: lanza una
excepción Python (`derafu_backbone_bridge.BackboneBridgeError` o una
de sus subclases) en vez de una excepción PHP cruda.

&gt; [!NOTE] Nota
&gt;
&gt; Revisa [Uso del Bridge Python](https://www.derafu.dev/docs/bridge-python/uso) para cómo
&gt; apuntarlo a tu instalación del Dispatcher y el manejo de errores.

## Términos y condiciones de uso

Este proyecto es software libre y puede ser redistribuido y/o
modificado bajo los términos de la Licencia Pública General Affero
de GNU (AGPL), versión 3 o (a elección) cualquier versión posterior.
Ver [COPYING](https://github.com/libredte/libredte-lib-core-bridge-python/blob/main/COPYING).




---

## Uso del Bridge Python

Uso completo del Bridge Python

# Uso del Bridge Python

Repasa cómo apuntar `Dispatcher` a tu instalación del Dispatcher,
despachar operaciones y manejar los errores que puedan ocurrir.

## Ubicar el Dispatcher

`Dispatcher` no sabe dónde vive el código PHP en disco. Eso se
resuelve vía la variable de entorno `BACKBONE_DISPATCHER_AUTOLOAD`
(apuntando al `vendor/autoload.php` de tu instalación del
[Dispatcher](https://www.derafu.dev/docs/dispatcher)):

```shell
autoload=/ruta/al/dispatcher/vendor/autoload.php
export BACKBONE_DISPATCHER_AUTOLOAD=&quot;$autoload&quot;
```

```python
from libredte_lib_core_bridge import Dispatcher

dispatcher = Dispatcher()
```

O pasando `autoload_path` explícito al construirlo, sin necesidad de
la variable de entorno:

```python
autoload_path = &#039;/ruta/al/dispatcher/vendor/autoload.php&#039;

# El entorno puede ser &#039;prod&#039; (default), &#039;dev&#039; o &#039;test&#039;.
dispatcher = Dispatcher(
    environment=&#039;prod&#039;,
    debug=False,
    autoload_path=autoload_path,
)
```

## Despachar operaciones

Con el dispatcher ya listo, cada llamada indica la operación y sus
parámetros como argumentos con nombre:

```python
result = dispatcher.dispatch(
    &#039;billing.identifier.caf_loader::load&#039;,
    xml=xml_base64,
)
```

El identificador de la operación sigue la forma
`&quot;package.component.worker:operation&quot;`, y los parámetros se pasan
como argumentos con nombre. Revisa
[Funcionalidades](https://www.derafu.dev/docs/lib/funcionalidades) de la biblioteca PHP
para ver qué paquetes, componentes y workers (y por lo tanto qué
operaciones) están disponibles.

## Manejo de errores

`dispatch()` nunca deja pasar un error de PHP sin tipar: lanza una
excepción Python (`derafu_backbone_bridge.BackboneBridgeError` o una
de sus subclases, como `LibredteLibCoreError` para errores propios
de `libredte-lib-core`) en vez de una excepción PHP cruda.




---

## Arquitectura

Cómo está armado este paquete

# Arquitectura

Así está pre-cableado el bridge:

- `Dispatcher` es una subclase de
  `derafu_backbone_bridge.GenericDispatcher`, pre-cableada con el
  `Bootstrap::boot()` de `libredte-lib-core-dispatcher`.
- No importa `phpy` en ningún punto: todo el manejo de `phpy` vive
  dentro de
  [`derafu-backbone-bridge`](https://www.derafu.dev/docs/core/backbone-bridge-python).

## Desarrollo

Los tests de este paquete corren contra la biblioteca real, sin
mocks:

```shell
make install-dev

# ruff + tests.
make check
```

Los tests requieren `phpy` (solo disponible dentro del contenedor
`docker-python3.14-caddy-server` construido con `PHPY_ENABLED=true`)
y una instalación real de `libredte-lib-core-dispatcher` (con sus
propias dependencias de Composer) accesible en disco. No usan ningún
fixture externo: generan un CAF real y válido en memoria vía el
propio `caf_faker:create` de `libredte-lib-core`.





---
Última actualización el 08/10/2026

