Metadata-Version: 2.4
Name: dexpi.specificator
Version: 0.9
Summary: Easy creation of engineering information models and related specification documents
Author: DEXPI e.V.
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Sphinx==8.1.3
Requires-Dist: attrs==25.3.0
Requires-Dist: piccolo_theme==0.24.0
Requires-Dist: pnb.mcl==0.1.4
Requires-Dist: pyexcel-ezodf==0.3.4
Requires-Dist: tomlkit==0.13.2
Requires-Dist: Jinja2==3.1.6
Requires-Dist: MarkupSafe==3.0.2
Requires-Dist: Pygments==2.19.2
Requires-Dist: alabaster==1.0.0
Requires-Dist: babel==2.17.0
Requires-Dist: certifi==2025.8.3
Requires-Dist: charset-normalizer==3.4.3
Requires-Dist: colorama==0.4.6
Requires-Dist: docutils==0.21.2
Requires-Dist: idna==3.10
Requires-Dist: imagesize==1.4.1
Requires-Dist: lxml==5.4.0
Requires-Dist: packaging==25.0
Requires-Dist: pyparsing==3.2.3
Requires-Dist: rdflib==7.1.4
Requires-Dist: requests==2.32.5
Requires-Dist: snowballstemmer==3.0.1
Requires-Dist: sphinxcontrib-applehelp==2.0.0
Requires-Dist: sphinxcontrib-devhelp==2.0.0
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0
Requires-Dist: sphinxcontrib-jsmath==1.0.1
Requires-Dist: sphinxcontrib-qthelp==2.0.0
Requires-Dist: sphinxcontrib-serializinghtml==2.0.0
Requires-Dist: urllib3==2.5.0
Dynamic: license-file

# DEXPI Specificator

## Introduction
The **DEXPI Specificator** is a tool for generating **DEXPI specifications** in various formats. It automates the creation of engineering information models and related specification documents. This guide describes three different ways to run the Specificator:

1. **As a CI/CD pipeline in GitLab** *(Preferred method for automation)*
2. **Using Docker to run the Specificator locally**
3. **Executing the Specificator as a Python script**

---

## 1. Running the Specificator in GitLab CI/CD *(Preferred)*
The GitLab CI/CD pipeline automates the execution of the Specificator and provides the generated files as artifacts.

### **Steps to Run in GitLab CI/CD:**
1. Push your changes to the repository.
2. The GitLab pipeline will automatically build the Specificator Docker image (if necessary) and execute it.
3. After the pipeline completes, download the generated artifacts (**specification.zip** and **specification.tar.gz**) from the CI/CD job artifacts.

### **Advantages:**
✅ Fully automated execution
✅ Output files are available in GitLab artifacts
✅ No local setup required

---

## 2. Running the Specificator using Docker
You can use Docker to run the Specificator locally without setting up a Python environment.

### **Steps to Run Using Docker:**
1. Download the latest `docker_image.tar` artifact from GitLab CI/CD.
2. Load the Docker image:
   ```sh
   docker load -i docker_image.tar
   ```
3. Run the Specificator inside a Docker container:
   ```sh
   docker run --rm -v "$(pwd):/app" IMAGE_NAME python examples/flexpi\ minus/run_specificator.py
   ```
   *(Replace `IMAGE_NAME` with the actual image tag from GitLab.)*

### **Advantages:**
✅ No need to install Python or dependencies
✅ Fully isolated execution environment
✅ Works on Windows, MacOS, and Linux

---

## 3. Running the Specificator as a Python script
You can also run the Specificator directly as a Python script in a virtual environment.

### **Steps to Run Using Python:**
1. Install **Python 3.12 or later**.
2. Clone the repository:
   ```sh
   git clone <repository-url>
   cd dexpi-specificator
   ```
3. Create a virtual environment and install dependencies:
   ```sh
   python -m venv env
   source env/bin/activate  # On Windows: env\Scripts\activate
   pip install .
   ```
4. Run the Specificator:
   ```sh
   python examples/flexpi\ minus/run_specificator.py
   ```

### **Advantages:**
✅ Allows development and debugging of the Specificator
✅ Full control over dependencies and execution
✅ No need for Docker

---

## Conclusion
The **preferred way** to use the Specificator is through **GitLab CI/CD** for automation and consistency. However, **Docker** provides a flexible way to run it locally, while running it as a **Python script** allows for development and debugging.

Choose the method that best fits your needs! 🚀

