Skip to main content

DOORS-to-Python ORM

Python Version Pydantic DOORS

Highlights

  • Automated ORM Generation: Dynamically maps DOORS formal modules into strictly typed Python objects.
  • Pydantic Type Safety: Automatically converts DOORS drop-down choices into strict Python Literal types, providing IDE autocomplete and validation.
  • Headless DXL Execution: Interacts directly with the DOORS database in batch mode (no GUI required) with built-in memory management.
  • Agnostic Core Engine: Completely decouples project-specific business logic from the core DOORS extraction mechanics.

Overview

Integrating Python data pipelines with legacy IBM Rational DOORS databases is difficult. Developers are often forced to write raw DXL scripts or deal with fragile, untyped dictionaries.

This project acts as an automated Object-Relational Mapper (ORM) for DOORS. It uses headless DXL scripts to extract the attribute schema of any DOORS Formal Module, converts that schema into a standard JSON Schema, and leverages datamodel-codegen to build Pydantic models.

Usage

Generate models and extract data directly from the CLI using the newly installed terminal command:

# Extract the schema, generate models, and pull data using an absolute DOORS path
doors-client --profile all --module-path "/Project Name/System Subfolder/Requirements/Target Formal Module"

Once extracted, interact with your DOORS data natively in Python:

>>> from pathlib import Path
>>> from pydantic import TypeAdapter
>>> from generated.models import DoorsObject

# Load your extracted data natively
>>> adapter = TypeAdapter(list[DoorsObject])
>>> reqs = adapter.validate_json(Path("generated/module_data.json").read_text(encoding="cp1252"))

# Enjoy full IDE autocomplete and strict type validation!
>>> print(reqs[0].absolute_number)
155
>>> reqs[0].verification_status = "Invalid Status"
ValidationError: 1 validation error for DoorsObject
verification_status
  Input should be 'Passed', 'Failed', 'Pending', or '' [type=literal_error, input_value='Invalid Status', input_type=str]

Installation

Ensure you have Python 3.10+ installed. To use this tool in another project, you can install it directly from GitHub:

pip install git+[https://github.com/your-username/doors-client.git](https://github.com/your-username/doors-client.git)

If you are cloning the repository for local development, install it in editable mode:

pip install -e .

System Requirements

  • IBM Rational DOORS: The DOORS client must be installed on your local machine.
  • DOORS Executable: Set the DOORS_EXE_PATH environment variable to point to your doors.exe installation (e.g., C:/Program Files/IBM/Rational/DOORS/9.7/bin/doors.exe), or explicitly pass the --doors-exe flag to the CLI when running the script.

License

doors-client is distributed under the MIT license. See the included LICENSE file for details.

I am providing code in the repository to you under an open source license. Because this is my personal repository, the license you receive to my code is from me and not my employer.

Download files

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

Source Distribution

doors_client-0.2.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

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

doors_client-0.2.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file doors_client-0.2.0.tar.gz.

File metadata

  • Download URL: doors_client-0.2.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for doors_client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0650d652e4e0dda35d5e22f757fff52b90e5725a8814d1dd122a776ec128b315
MD5 07382218dfce06aba2c60320b289b0e3
BLAKE2b-256 c3d1ba41d99f2eedf028a31537b2c09ac5b5d0e0890e824ff2cdc267f6504cf4

See more details on using hashes here.

File details

Details for the file doors_client-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: doors_client-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for doors_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bea0238d7ee69e208099e1d497cd6802353ac775281a2d08d01af00483dd6ca7
MD5 86148ae90d3c3c971e073609f69bcbf8
BLAKE2b-256 ddb3ca092ec0a6d126cf9d60c80dffb5eb6f505393cc8b73f634e857934c9498

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

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