Skip to main content

pyreqif

Librería Python para leer, editar y reempaquetar documentos ReqIF (.reqif / .reqifz), el estándar OMG usado habitualmente para intercambiar requisitos entre fabricante y proveedor (p.ej. lastenheft de automoción).

Dos clases:

  • Reqif: un único fichero .reqif. Lee cada requisito (SPEC-OBJECT) con su texto, y dos campos configurables pensados para el flujo proveedor: comentario (Kommentar Lieferant M, XHTML) y estado (Status Lieferant M, enumerado). Permite editarlos, exportar/importar por Excel (con desplegable de validación para el estado, e imágenes embebidas en la celda si se le pasa un resolutor) y detecta las imágenes embebidas en el texto de cada requisito.
  • Reqifz: un .reqifz (zip con uno o varios .reqif más sus adjuntos). Extrae a un directorio de trabajo, expone cada .reqif como un Reqif, y reempaqueta todo de vuelta conservando los adjuntos intactos.

Instalación

pip install pyreqifz

(el nombre del paquete en PyPI es pyreqifzpyreqif ya estaba cogido — pero el módulo se sigue importando como pyreqif.)

Uso básico

from pyreqif import Reqifz

with Reqifz("lastenheft.reqifz") as pack:
    for doc in pack:
        print(doc, "->", len(doc), "requisitos")

    doc = pack.get(0)  # o pack.get("nombre_del_fichero.reqif")

    # leer
    req = doc.get("_a1b2c3...")
    print(req.text, req.comment, req.status, req.images)

    # editar (None deja el campo igual, "" lo vacía)
    doc.update("_a1b2c3...", comment="Aceptado, sin cambios.", status="akzeptiert")

    # exportar a Excel, con la primera imagen de cada requisito
    # incrustada en su celda (columna "Imagen")
    doc.to_excel("requisitos.xlsx", image_resolver=pack.image_path)

    # importar de vuelta (solo toca comentario y estado)
    doc.update_from_excel("requisitos_revisado.xlsx")

    # volver a empaquetar con los cambios
    pack.save("lastenheft_editado.reqifz")

Un .reqif suelto (sin comprimir) se usa igual, sin pasar por Reqifz (pero entonces to_excel() no puede incrustar imágenes, ya que no sabe dónde están los adjuntos — pásale tu propio image_resolver si los tienes en otro sitio):

from pyreqif import Reqif

doc = Reqif("documento.reqif")
doc.update("_a1b2c3...", status="Klärungsbedarf")
doc.save("documento_editado.reqif")

Nombres de atributo

Por defecto se usan los nombres estándar de ReqIF para el texto (ReqIF.Text / ReqIF.ChapterName como respaldo) y los nombres de campo de este flujo concreto de proveedor (Kommentar Lieferant M / Status Lieferant M). Si tu documento usa otros nombres, crea una subclase:

from pyreqif import Reqif

class MiReqif(Reqif):
    COMMENT_ATTR = "Supplier Comment"
    STATUS_ATTR = "Supplier Status"

Desarrollo

uv venv
uv pip install -e ".[dev]"
uv run pytest

Licencia

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyreqifz-0.1.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyreqifz-0.1.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file pyreqifz-0.1.1.tar.gz.

File metadata

  • Download URL: pyreqifz-0.1.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for pyreqifz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 232c63dab71e02c3846319b08ec7de8e252d9bdcb72c8a4e82ca1eb651b92537
MD5 fbeab517c7a326202b63bad5e31ae961
BLAKE2b-256 18be508c2a02a90dd3dee495c5e90e22143e2c1327e52e2c4622e2a9daa3a64b

See more details on using hashes here.

File details

Details for the file pyreqifz-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyreqifz-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for pyreqifz-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 43e753c276c22106a42d61c353ff875309c54925b6d2057948e00f0617186e52
MD5 f54700d9695ca6e9ed0bc26f953c2e78
BLAKE2b-256 750f1bd0e8a9fb43b783e9dfc79118fb32f1525a396880ae15bb3d7f4dd801bc

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page