reqif
Python library for ReqIF format. ReqIF parsing and unparsing.
What it is and what it does
ReqIF is a Python library for working with ReqIF (Requirements Interchange Format), an XML-based standard for exchanging requirements data between tools. It provides both a programmatic API and command-line tools to parse ReqIF and ReqIFz (compressed) files into Python objects, unparse them back to XML, validate them against internal checks and the official OMG schema, format them with consistent indentation, and anonymize them for safe sharing. The library depends on jinja2, lxml, openpyxl, and xmlschema for XML handling and templating.
Typical workflows include reading requirements from ReqIF files exported by commercial tools, transforming or filtering them programmatically, and writing them back out; validating ReqIF files for schema compliance; pretty-printing hand-written or poorly formatted ReqIF XML; and anonymizing sensitive requirement data before sending files to third parties for debugging. The library logs diagnostics through Python's standard logging module and supports progress callbacks for long-running parse and unparse operations on large files.
Use it for:
- Parse ReqIF files exported from requirements management tools to extract and process specifications programmatically
- Validate ReqIF documents against internal checks and the official OMG ReqIF schema before importing into other tools
- Format and pretty-print hand-written or tool-generated ReqIF XML with consistent indentation and structure
- Anonymize sensitive requirement data in ReqIF files for safe sharing with external developers or tool vendors
- Round-trip ReqIF files (parse and unparse) to verify tool compatibility and detect parsing or generation issues
- Build custom requirement processing pipelines that read, transform, and write ReqIF data
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
ReqIF is a Python library for parsing, unparsing, formatting, validating, and anonymizing ReqIF and ReqIFz files, with command-line tools for each operation.
Yes. The library is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive Apache-2.0 license. It fills a clear niche for ReqIF handling in Python. Install it if you work with ReqIF files or need to integrate requirements data from tools that export this format.
Install
reqif on PyPI
pip
pip install reqifuv
uv add reqifpoetry
poetry add reqifInstalling reqif
Before you install
Low install friction with a pure-Python wheel and four common dependencies (jinja2, lxml, openpyxl, xmlschema). Active maintenance with a recent release (3 days old) and steady repository activity.
License in practice
Apache-2.0 is a permissive license; you can use, modify, and distribute this package freely in commercial and private projects, provided you include a copy of the license and state significant changes.
Quickstart
pip install reqif
from reqif.parser import ReqIFParser
reqif_bundle = ReqIFParser.parse("input.reqif")
for specification in reqif_bundle.core_content.req_if_content.specifications:
print(specification.long_name)
Verify before relying
- Whether the library handles all real-world ReqIF variants or only a subset of the official schema
- Performance characteristics for very large ReqIF files (hundreds of thousands of spec objects mentioned in docs)
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — jinja2, lxml, openpyxl, xmlschema |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 90,331/month — #13,599 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: reqif-0.1.0-py3-none-any.whl
Tags
More Markup packages
PyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
markdown-it-pyA Python markdown parser that converts markdown…
permissive · top 100 on PyPI
beautifulsoup4Beautiful Soup parses HTML and XML documents…
permissive · top 100 on PyPI
et-xmlfileet_xmlfile writes large XML files with minimal…
permissive · top 1,000 on PyPI
tomlkitParses and edits TOML files while preserving…
permissive · top 1,000 on PyPI
docstring-parserParses Python docstrings in ReST, Google,…
permissive · top 1,000 on PyPI
csaf-toolGenerates and analyzes CSAF 2.0 documents,…
permissive · top 15,000 on PyPI
bx-py-utilsA collection of utility functions covering…
permissive · top 15,000 on PyPI
pyEDFlibpyEDFlib reads and writes EDF+/BDF+ biomedical…
permissive · top 15,000 on PyPI
scrubadubDetects and replaces personally identifiable…
permissive · top 5,000 on PyPI
unidiff2Parses unified diff format into structured…
permissive · top 15,000 on PyPI
rdflibRDFLib is a Python library for parsing,…
permissive · top 1,000 on PyPI
presidio-anonymizerReplaces detected PII text entities with…
permissive · top 5,000 on PyPI
mail-parserParses raw email messages into structured…
permissive · top 5,000 on PyPI
grafeasPython client library for the Grafeas API,…
permissive · top 15,000 on PyPI
braqBraq is a Python library for parsing and…
permissive · top 15,000 on PyPI