annex4ac


Nameannex4ac JSON
Version 1.3.2 PyPI version JSON
download
home_pageNone
SummaryAnnex IV-as-Code CLI: generate & validate EU AI Act Annex IV with legal compliance
upload_time2025-08-05 10:11:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords ai act compliance cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Annex IV‑as‑Code (annex4ac)
Project code and files located at https://github.com/ai-act-cli/annex4ac

Generate and validate EU AI Act Annex IV technical documentation straight from your CI. 

100% local by default.

SaaS/PDF unlocks with a licence key .

> **⚠️ Legal Disclaimer:** This software is provided for informational and compliance assistance purposes only. It is not legal advice and should not be relied upon as such. Users are responsible for ensuring their documentation meets all applicable legal requirements and should consult with qualified legal professionals for compliance matters. The authors disclaim any liability for damages arising from the use of this software.

> **🔒 Data Protection:** All processing occurs locally on your machine. No data leaves your system.

---

## 🚀 Quick‑start

```bash
# 1 Install (Python 3.9+) - includes all dependencies
pip install annex4ac

# 2 Pull the latest Annex IV layout
annex4ac fetch-schema annex_template.yaml

# 3 Fill in the YAML → validate
cp annex_template.yaml my_annex.yaml
$EDITOR my_annex.yaml
annex4ac validate my_annex.yaml   # "Validation OK!" or exit 1

# Optional: Check if document is stale (heuristic, not legal requirement)
annex4ac validate my_annex.yaml --stale-after 30  # Warn if older than 30 days
annex4ac validate my_annex.yaml --stale-after 180 --strict-age  # Fail CI if older than 180 days

# 4 Generate output (PDF requires license)
# HTML (free) - automatically validates before generation
annex4ac generate my_annex.yaml --output annex_iv.html --fmt html

# DOCX (free) - automatically validates before generation
annex4ac generate my_annex.yaml --output annex_iv.docx --fmt docx

# PDF (Pro - requires license) - automatically validates before generation
export ANNEX4AC_LICENSE="your_jwt_token_here"
annex4ac generate my_annex.yaml --output annex_iv.pdf --fmt pdf

# Skip validation if needed (not recommended)
annex4ac generate my_annex.yaml --output annex_iv.pdf --fmt pdf --skip-validation

# 5 Review existing documentation (optional)
# Note: Review functionality has been moved to annex4nlp package
annex4nlp annex_iv.pdf  # Analyze for compliance issues
annex4nlp doc1.pdf doc2.pdf  # Compare multiple documents for contradictions
```

> **License System:** Pro features require a JWT license token. Contact support to obtain your token, then set it as the `ANNEX4AC_LICENSE` environment variable. See [LICENSE_SYSTEM.md](LICENSE_SYSTEM.md) for details.

> **Hint :** You only need to edit the YAML once per model version—CI keeps it green.

---

## 💡 Use Cases

**For Developers:**
- Generate compliant Annex IV documentation from YAML
- Validate documentation in CI/CD pipelines
- Review existing PDFs for compliance issues

**For Legal Teams:**
- Ensure all 9 required sections are present
- Check for contradictions between documents
- Verify GDPR compliance requirements

**For Enterprises:**
- Generate archival PDF/A-2b documents
- Track 10-year retention periods
- Maintain up-to-date technical documentation

---



---

## 🗂 Required YAML fields (June 2024 format)

| Key                      | Annex IV § |
| ------------------------ | ---------- |
| `risk_level`             | —          | "high", "limited", "minimal" — determines required sections |
| `use_cases`              | —          | List of tags (Annex III) for auto high-risk. Acceptable values: employment_screening, biometric_id, critical_infrastructure, education_scoring, justice_decision, migration_control |
| `system_overview`        |  1         |
| `development_process`    |  2         |
| `system_monitoring`      |  3         |
| `performance_metrics`    |  4         |
| `risk_management`        |  5         |
| `changes_and_versions`   |  6         |
| `standards_applied`      |  7         |
| `compliance_declaration` |  8         |
| `post_market_plan`       |  9         |
| `enterprise_size`        | —          | `"sme"`, `"mid"`, `"large"` – enterprise size classification (Art. 11 exemption). |
| `placed_on_market`       | —          | ISO datetime when the AI system was placed on market (required for retention calculation). |
| `last_updated`           | —          | ISO datetime of last documentation update (for optional freshness heuristic). |

---

## 🛠 Commands

| Command        | What it does                                                                  |
| -------------- | ----------------------------------------------------------------------------- |
| `fetch-schema` | Download the current Annex IV HTML, convert to YAML scaffold `annex_schema.yaml`. |
| `validate`     | Validate your YAML against the Pydantic schema and built-in Python rules. Exits 1 on error. Supports `--sarif` for GitHub annotations, `--stale-after` for optional freshness heuristic, and `--strict-age` for strict age checking.             |
| `generate`     | Render PDF (Pro), HTML, or DOCX from YAML. Automatically validates before generation. PDF requires license, HTML/DOCX are free. |
| `annex4nlp`       | Review functionality has been moved to `annex4nlp` package. Analyze PDF technical documentation for compliance issues, missing sections, and contradictions between documents. Uses advanced NLP for intelligent negation detection. Provides detailed console output with error/warning classification.|

Run `annex4ac --help` for full CLI.

---

## ✨ Features

Generate compliant EU AI Act Annex IV documentation with advanced validation and review capabilities.

### Schema-First Approach
- **Always up-to-date**: Every run pulls the latest Annex IV HTML from the official AI Act Explorer
- **9 numbered sections**: YAML scaffold mirrors the official July 2024 format
- **Auto-validation**: `annex4ac generate` validates before generation
- **Fail-fast CI**: `annex4ac validate` exits 1 on errors, blocking PRs

### Multiple Output Formats
- **HTML (Free)**: Web-ready documentation
- **DOCX (Free)**: Microsoft Word compatible
- **PDF (Pro)**: Professional PDF with embedded fonts and metadata
- **PDF/A-2b (Pro)**: Archival format for long-term preservation

### EU-Compliant Formatting
- **List formatting**: `(a) ...; (b) ...; (c) ...` according to EU drafting rules
- **Hierarchical lists**: Support for nested structures
- **Cross-format consistency**: Same formatting in PDF, HTML, and DOCX
- **Proper punctuation**: Semicolons and final periods

### Compliance Review: annex4nlp
- **Advanced NLP**: Uses spaCy and negspaCy for intelligent analysis
- **Section validation**: Checks all 9 required Annex IV sections
- **Contradiction detection**: Finds inconsistencies between documents
- **GDPR compliance**: Analyzes data protection and privacy issues
- **Console output**: Detailed error/warning classification

## 🔧 Advanced Features

### Retention and Freshness Tracking
- **10-year retention**: Automatic calculation from `placed_on_market` date
- **Freshness validation**: `--stale-after N` for document age checking
- **Legal compliance**: Meets Article 18 requirements

### List Formatting Examples

#### Hierarchical Lists (EU-Compliant)
```yaml
development_process: |
  (a) Requirements analysis phase (3 months):
      - Stakeholder interviews and requirements gathering
      - Technical feasibility assessment
      - Risk analysis and compliance review
  
  (b) Design and architecture phase (4 months):
      - System architecture design
      - Data flow and security design
      - Integration planning
```

#### Regular Bulleted Lists
```yaml
standards_applied: |
  Compliance with international standards:
  
  - ISO 27001: Information security management
  - IEEE 2857: AI system development guidelines
  - GDPR: Data protection and privacy
  - ISO 9001: Quality management systems
  - Internal AI ethics guidelines and policies
```

### Console Output Example
```
============================================================
COMPLIANCE REVIEW RESULTS
============================================================

❌ ERRORS (2):
  1. [doc1.pdf] (Section 1) Missing content for Annex IV section 1.
  2. [doc2.pdf] (Section 5) No mention of risk management procedures.

⚠️  WARNINGS (1):
  1. [doc1.pdf] No mention of transparency or explainability.

Found 3 total issue(s): 2 errors, 1 warnings
```



---

## 🏷️ High-risk tags (Annex III)

The list of high-risk tags (Annex III) is now loaded dynamically from the official website. If the network is unavailable, a cache or fallback list is used. This affects the auto_high_risk logic in validation.

---

## 🏷️ Schema version in PDF

Each PDF now displays the Annex IV schema version stamp (e.g., v20240613) and the document generation date.

---

## 🔑 Pro-licence & JWT

To generate PDF in Pro mode, a license is required (JWT, RSA signature). The ANNEX4AC_LICENSE key can be checked offline, the public key is stored in the package. See [LICENSE_SYSTEM.md](LICENSE_SYSTEM.md) for detailed information about the license system.

---

## 🛡️ Rule-based validation (Python)

- **High-risk systems**: All 9 sections of Annex IV are mandatory (Art. 11 §1).
- **Limited/minimal risk**: Annex IV is optional but recommended for transparency (Art. 52).
- For high-risk (`risk_level: high`), post_market_plan is required.
- If use_cases contains a high-risk tag (Annex III), risk_level must be high (auto high-risk).
- SARIF report now supports coordinates (line/col) for integration with GitHub Code Scanning.
- **Auto-detection**: Systems with Annex III use_cases are automatically classified as high-risk.

---

## 🐙 GitHub Action example

```yaml
name: Annex IV gate
on: [pull_request]

jobs:
  ai-act-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install annex4ac
      - run: annex4ac validate model.yaml
```

Add `ANNEX4AC_LICENSE` as a secret to use PDF export in CI.

---

## 📄 Offline cache

If Annex IV is temporarily unavailable online, use:

```bash
annex4ac fetch-schema --offline
```

This will load the last saved schema from `~/.cache/annex4ac/` (the cache is updated automatically every 14 days).

---

## ⚙️ Local development

```bash
git clone https://github.com/your‑org/annex4ac
cd annex4ac
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
pytest                     # unit tests
python annex4ac.py --help
```

---

## 🔑 Licensing & pricing

| Tier       | Price           | Features                                                     |
| ---------- | --------------- | ------------------------------------------------------------ |
| Community  | **Free**        | `fetch-schema`, `validate`, unlimited public repos           |
| Pro        | **€15 / month** | PDF generation, version history (future SaaS), email support |
| Enterprise | Custom          | Self‑hosted Docker, SLA 99.9 %, custom sections              |

Pay once, use anywhere – CLI, GitHub Action, future REST API.

---

## 🛠 Requirements

- Python 3.9+
- [reportlab](https://www.reportlab.com/documentation) (PDF, Pro)
- [pydantic](https://docs.pydantic.dev) (schema validation)
- [typer](https://typer.tiangolo.com) (CLI)
- [pyyaml](https://pyyaml.org/) (YAML)

---

## 📚 References

* Annex IV HTML – [https://artificialintelligenceact.eu/annex/4/](https://artificialintelligenceact.eu/annex/4/)
* Official Journal PDF – [https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689)
* ReportLab docs – [https://www.reportlab.com/documentation](https://www.reportlab.com/documentation)
* Typer docs – [https://typer.tiangolo.com](https://typer.tiangolo.com)
* Pydantic docs – [https://docs.pydantic.dev](https://docs.pydantic.dev)
* PDF/A Standard – [ISO 19005-2:2011](https://www.iso.org/standard/50655.html)
* sRGB Color Space – [IEC 61966-2-1:1999](https://webstore.iec.ch/publication/6169)

---

## 📄 Licensing

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

### Third-party Components

* **PyJWT** - MIT License
* **ReportLab** - BSD-style License  
* **Typer** - MIT License
* **Liberation Sans Fonts** - SIL Open Font License 1.1 (included in `fonts/` directory)

The Liberation Sans fonts are used for PDF generation and are licensed under the SIL Open Font License 1.1. See the [LICENSE](LICENSE) file for the complete license text. 

The software assists in preparing documentation, but does not confirm compliance with legal requirements or standards. The user is responsible for the final accuracy and compliance of the documents.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "annex4ac",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "AI Act, compliance, CLI",
    "author": null,
    "author_email": "Aleksandr Racionalus <prihodko02bk@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/84/2b/2f928547da9140909caf549f471529c528d69e3adc1f7bb542b3ecd26417/annex4ac-1.3.2.tar.gz",
    "platform": null,
    "description": "# Annex\u202fIV\u2011as\u2011Code\u00a0(annex4ac)\r\nProject code and files located at https://github.com/ai-act-cli/annex4ac\r\n\r\nGenerate and validate EU\u00a0AI\u00a0Act Annex\u202fIV technical documentation straight from your CI. \r\n\r\n100% local by default.\r\n\r\nSaaS/PDF unlocks with a licence key .\r\n\r\n> **\u26a0\ufe0f Legal Disclaimer:** This software is provided for informational and compliance assistance purposes only. It is not legal advice and should not be relied upon as such. Users are responsible for ensuring their documentation meets all applicable legal requirements and should consult with qualified legal professionals for compliance matters. The authors disclaim any liability for damages arising from the use of this software.\r\n\r\n> **\ud83d\udd12 Data Protection:** All processing occurs locally on your machine. No data leaves your system.\r\n\r\n---\r\n\r\n## \ud83d\ude80 Quick\u2011start\r\n\r\n```bash\r\n# 1 Install (Python 3.9+) - includes all dependencies\r\npip install annex4ac\r\n\r\n# 2 Pull the latest Annex IV layout\r\nannex4ac fetch-schema annex_template.yaml\r\n\r\n# 3 Fill in the YAML \u2192 validate\r\ncp annex_template.yaml my_annex.yaml\r\n$EDITOR my_annex.yaml\r\nannex4ac validate my_annex.yaml   # \"Validation OK!\" or exit 1\r\n\r\n# Optional: Check if document is stale (heuristic, not legal requirement)\r\nannex4ac validate my_annex.yaml --stale-after 30  # Warn if older than 30 days\r\nannex4ac validate my_annex.yaml --stale-after 180 --strict-age  # Fail CI if older than 180 days\r\n\r\n# 4 Generate output (PDF requires license)\r\n# HTML (free) - automatically validates before generation\r\nannex4ac generate my_annex.yaml --output annex_iv.html --fmt html\r\n\r\n# DOCX (free) - automatically validates before generation\r\nannex4ac generate my_annex.yaml --output annex_iv.docx --fmt docx\r\n\r\n# PDF (Pro - requires license) - automatically validates before generation\r\nexport ANNEX4AC_LICENSE=\"your_jwt_token_here\"\r\nannex4ac generate my_annex.yaml --output annex_iv.pdf --fmt pdf\r\n\r\n# Skip validation if needed (not recommended)\r\nannex4ac generate my_annex.yaml --output annex_iv.pdf --fmt pdf --skip-validation\r\n\r\n# 5 Review existing documentation (optional)\r\n# Note: Review functionality has been moved to annex4nlp package\r\nannex4nlp annex_iv.pdf  # Analyze for compliance issues\r\nannex4nlp doc1.pdf doc2.pdf  # Compare multiple documents for contradictions\r\n```\r\n\r\n> **License System:** Pro features require a JWT license token. Contact support to obtain your token, then set it as the `ANNEX4AC_LICENSE` environment variable. See [LICENSE_SYSTEM.md](LICENSE_SYSTEM.md) for details.\r\n\r\n> **Hint :** You only need to edit the YAML once per model version\u2014CI keeps it green.\r\n\r\n---\r\n\r\n## \ud83d\udca1 Use Cases\r\n\r\n**For Developers:**\r\n- Generate compliant Annex IV documentation from YAML\r\n- Validate documentation in CI/CD pipelines\r\n- Review existing PDFs for compliance issues\r\n\r\n**For Legal Teams:**\r\n- Ensure all 9 required sections are present\r\n- Check for contradictions between documents\r\n- Verify GDPR compliance requirements\r\n\r\n**For Enterprises:**\r\n- Generate archival PDF/A-2b documents\r\n- Track 10-year retention periods\r\n- Maintain up-to-date technical documentation\r\n\r\n---\r\n\r\n\r\n\r\n---\r\n\r\n## \ud83d\uddc2 Required YAML fields (June 2024 format)\r\n\r\n| Key                      | Annex IV \u00a7 |\r\n| ------------------------ | ---------- |\r\n| `risk_level`             | \u2014          | \"high\", \"limited\", \"minimal\" \u2014 determines required sections |\r\n| `use_cases`              | \u2014          | List of tags (Annex III) for auto high-risk. Acceptable values: employment_screening, biometric_id, critical_infrastructure, education_scoring, justice_decision, migration_control |\r\n| `system_overview`        |  1         |\r\n| `development_process`    |  2         |\r\n| `system_monitoring`      |  3         |\r\n| `performance_metrics`    |  4         |\r\n| `risk_management`        |  5         |\r\n| `changes_and_versions`   |  6         |\r\n| `standards_applied`      |  7         |\r\n| `compliance_declaration` |  8         |\r\n| `post_market_plan`       |  9         |\r\n| `enterprise_size`        | \u2014          | `\"sme\"`, `\"mid\"`, `\"large\"` \u2013 enterprise size classification (Art. 11 exemption). |\r\n| `placed_on_market`       | \u2014          | ISO datetime when the AI system was placed on market (required for retention calculation). |\r\n| `last_updated`           | \u2014          | ISO datetime of last documentation update (for optional freshness heuristic). |\r\n\r\n---\r\n\r\n## \ud83d\udee0 Commands\r\n\r\n| Command        | What it does                                                                  |\r\n| -------------- | ----------------------------------------------------------------------------- |\r\n| `fetch-schema` | Download the current Annex IV HTML, convert to YAML scaffold `annex_schema.yaml`. |\r\n| `validate`     | Validate your YAML against the Pydantic schema and built-in Python rules. Exits 1 on error. Supports `--sarif` for GitHub annotations, `--stale-after` for optional freshness heuristic, and `--strict-age` for strict age checking.             |\r\n| `generate`     | Render PDF (Pro), HTML, or DOCX from YAML. Automatically validates before generation. PDF requires license, HTML/DOCX are free. |\r\n| `annex4nlp`       | Review functionality has been moved to `annex4nlp` package. Analyze PDF technical documentation for compliance issues, missing sections, and contradictions between documents. Uses advanced NLP for intelligent negation detection. Provides detailed console output with error/warning classification.|\r\n\r\nRun `annex4ac --help` for full CLI.\r\n\r\n---\r\n\r\n## \u2728 Features\r\n\r\nGenerate compliant EU AI Act Annex IV documentation with advanced validation and review capabilities.\r\n\r\n### Schema-First Approach\r\n- **Always up-to-date**: Every run pulls the latest Annex IV HTML from the official AI Act Explorer\r\n- **9 numbered sections**: YAML scaffold mirrors the official July 2024 format\r\n- **Auto-validation**: `annex4ac generate` validates before generation\r\n- **Fail-fast CI**: `annex4ac validate` exits 1 on errors, blocking PRs\r\n\r\n### Multiple Output Formats\r\n- **HTML (Free)**: Web-ready documentation\r\n- **DOCX (Free)**: Microsoft Word compatible\r\n- **PDF (Pro)**: Professional PDF with embedded fonts and metadata\r\n- **PDF/A-2b (Pro)**: Archival format for long-term preservation\r\n\r\n### EU-Compliant Formatting\r\n- **List formatting**: `(a) ...; (b) ...; (c) ...` according to EU drafting rules\r\n- **Hierarchical lists**: Support for nested structures\r\n- **Cross-format consistency**: Same formatting in PDF, HTML, and DOCX\r\n- **Proper punctuation**: Semicolons and final periods\r\n\r\n### Compliance Review: annex4nlp\r\n- **Advanced NLP**: Uses spaCy and negspaCy for intelligent analysis\r\n- **Section validation**: Checks all 9 required Annex IV sections\r\n- **Contradiction detection**: Finds inconsistencies between documents\r\n- **GDPR compliance**: Analyzes data protection and privacy issues\r\n- **Console output**: Detailed error/warning classification\r\n\r\n## \ud83d\udd27 Advanced Features\r\n\r\n### Retention and Freshness Tracking\r\n- **10-year retention**: Automatic calculation from `placed_on_market` date\r\n- **Freshness validation**: `--stale-after N` for document age checking\r\n- **Legal compliance**: Meets Article 18 requirements\r\n\r\n### List Formatting Examples\r\n\r\n#### Hierarchical Lists (EU-Compliant)\r\n```yaml\r\ndevelopment_process: |\r\n  (a) Requirements analysis phase (3 months):\r\n      - Stakeholder interviews and requirements gathering\r\n      - Technical feasibility assessment\r\n      - Risk analysis and compliance review\r\n  \r\n  (b) Design and architecture phase (4 months):\r\n      - System architecture design\r\n      - Data flow and security design\r\n      - Integration planning\r\n```\r\n\r\n#### Regular Bulleted Lists\r\n```yaml\r\nstandards_applied: |\r\n  Compliance with international standards:\r\n  \r\n  - ISO 27001: Information security management\r\n  - IEEE 2857: AI system development guidelines\r\n  - GDPR: Data protection and privacy\r\n  - ISO 9001: Quality management systems\r\n  - Internal AI ethics guidelines and policies\r\n```\r\n\r\n### Console Output Example\r\n```\r\n============================================================\r\nCOMPLIANCE REVIEW RESULTS\r\n============================================================\r\n\r\n\u274c ERRORS (2):\r\n  1. [doc1.pdf] (Section 1) Missing content for Annex IV section 1.\r\n  2. [doc2.pdf] (Section 5) No mention of risk management procedures.\r\n\r\n\u26a0\ufe0f  WARNINGS (1):\r\n  1. [doc1.pdf] No mention of transparency or explainability.\r\n\r\nFound 3 total issue(s): 2 errors, 1 warnings\r\n```\r\n\r\n\r\n\r\n---\r\n\r\n## \ud83c\udff7\ufe0f High-risk tags (Annex III)\r\n\r\nThe list of high-risk tags (Annex III) is now loaded dynamically from the official website. If the network is unavailable, a cache or fallback list is used. This affects the auto_high_risk logic in validation.\r\n\r\n---\r\n\r\n## \ud83c\udff7\ufe0f Schema version in PDF\r\n\r\nEach PDF now displays the Annex IV schema version stamp (e.g., v20240613) and the document generation date.\r\n\r\n---\r\n\r\n## \ud83d\udd11 Pro-licence & JWT\r\n\r\nTo generate PDF in Pro mode, a license is required (JWT, RSA signature). The ANNEX4AC_LICENSE key can be checked offline, the public key is stored in the package. See [LICENSE_SYSTEM.md](LICENSE_SYSTEM.md) for detailed information about the license system.\r\n\r\n---\r\n\r\n## \ud83d\udee1\ufe0f Rule-based validation (Python)\r\n\r\n- **High-risk systems**: All 9 sections of Annex IV are mandatory (Art. 11 \u00a71).\r\n- **Limited/minimal risk**: Annex IV is optional but recommended for transparency (Art. 52).\r\n- For high-risk (`risk_level: high`), post_market_plan is required.\r\n- If use_cases contains a high-risk tag (Annex III), risk_level must be high (auto high-risk).\r\n- SARIF report now supports coordinates (line/col) for integration with GitHub Code Scanning.\r\n- **Auto-detection**: Systems with Annex III use_cases are automatically classified as high-risk.\r\n\r\n---\r\n\r\n## \ud83d\udc19 GitHub Action example\r\n\r\n```yaml\r\nname: Annex IV gate\r\non: [pull_request]\r\n\r\njobs:\r\n  ai-act-check:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - uses: actions/checkout@v4\r\n      - uses: actions/setup-python@v5\r\n        with:\r\n          python-version: '3.11'\r\n      - run: pip install annex4ac\r\n      - run: annex4ac validate model.yaml\r\n```\r\n\r\nAdd `ANNEX4AC_LICENSE` as a secret to use PDF export in CI.\r\n\r\n---\r\n\r\n## \ud83d\udcc4 Offline cache\r\n\r\nIf Annex IV is temporarily unavailable online, use:\r\n\r\n```bash\r\nannex4ac fetch-schema --offline\r\n```\r\n\r\nThis will load the last saved schema from `~/.cache/annex4ac/` (the cache is updated automatically every 14 days).\r\n\r\n---\r\n\r\n## \u2699\ufe0f Local development\r\n\r\n```bash\r\ngit clone https://github.com/your\u2011org/annex4ac\r\ncd annex4ac\r\npython -m venv .venv && source .venv/bin/activate\r\npip install -r requirements.txt\r\npytest                     # unit tests\r\npython annex4ac.py --help\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udd11 Licensing & pricing\r\n\r\n| Tier       | Price           | Features                                                     |\r\n| ---------- | --------------- | ------------------------------------------------------------ |\r\n| Community  | **Free**        | `fetch-schema`, `validate`, unlimited public repos           |\r\n| Pro        | **\u20ac15 / month** | PDF generation, version history (future SaaS), email support |\r\n| Enterprise | Custom          | Self\u2011hosted Docker, SLA 99.9 %, custom sections              |\r\n\r\nPay once, use anywhere \u2013 CLI, GitHub Action, future REST API.\r\n\r\n---\r\n\r\n## \ud83d\udee0 Requirements\r\n\r\n- Python 3.9+\r\n- [reportlab](https://www.reportlab.com/documentation) (PDF, Pro)\r\n- [pydantic](https://docs.pydantic.dev) (schema validation)\r\n- [typer](https://typer.tiangolo.com) (CLI)\r\n- [pyyaml](https://pyyaml.org/) (YAML)\r\n\r\n---\r\n\r\n## \ud83d\udcda References\r\n\r\n* Annex IV HTML \u2013 [https://artificialintelligenceact.eu/annex/4/](https://artificialintelligenceact.eu/annex/4/)\r\n* Official Journal PDF \u2013 [https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:L_202401689)\r\n* ReportLab docs \u2013 [https://www.reportlab.com/documentation](https://www.reportlab.com/documentation)\r\n* Typer docs \u2013 [https://typer.tiangolo.com](https://typer.tiangolo.com)\r\n* Pydantic docs \u2013 [https://docs.pydantic.dev](https://docs.pydantic.dev)\r\n* PDF/A Standard \u2013 [ISO 19005-2:2011](https://www.iso.org/standard/50655.html)\r\n* sRGB Color Space \u2013 [IEC 61966-2-1:1999](https://webstore.iec.ch/publication/6169)\r\n\r\n---\r\n\r\n## \ud83d\udcc4 Licensing\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n### Third-party Components\r\n\r\n* **PyJWT** - MIT License\r\n* **ReportLab** - BSD-style License  \r\n* **Typer** - MIT License\r\n* **Liberation Sans Fonts** - SIL Open Font License 1.1 (included in `fonts/` directory)\r\n\r\nThe Liberation Sans fonts are used for PDF generation and are licensed under the SIL Open Font License 1.1. See the [LICENSE](LICENSE) file for the complete license text. \r\n\r\nThe software assists in preparing documentation, but does not confirm compliance with legal requirements or standards. The user is responsible for the final accuracy and compliance of the documents.\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Annex IV-as-Code CLI: generate & validate EU AI Act Annex IV with legal compliance",
    "version": "1.3.2",
    "project_urls": null,
    "split_keywords": [
        "ai act",
        " compliance",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cccdb014b0a277154f60c89314c006f07704ab6252e8986a65174c10a4907a1f",
                "md5": "3b008b2aa0525e864a8040f6032b293e",
                "sha256": "80a10275299a2015023b8d543d60971f70c72c8f84d382215d3f40e1a8d4e879"
            },
            "downloads": -1,
            "filename": "annex4ac-1.3.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3b008b2aa0525e864a8040f6032b293e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 270261,
            "upload_time": "2025-08-05T10:11:29",
            "upload_time_iso_8601": "2025-08-05T10:11:29.057603Z",
            "url": "https://files.pythonhosted.org/packages/cc/cd/b014b0a277154f60c89314c006f07704ab6252e8986a65174c10a4907a1f/annex4ac-1.3.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "842b2f928547da9140909caf549f471529c528d69e3adc1f7bb542b3ecd26417",
                "md5": "62ba4fbefa3071e5d4e1c93c3142d6ca",
                "sha256": "5cbe97c0e025bb57502e5377951cf78d104ab2b17f6bb9084698eb6a4d0b68ff"
            },
            "downloads": -1,
            "filename": "annex4ac-1.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "62ba4fbefa3071e5d4e1c93c3142d6ca",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 277573,
            "upload_time": "2025-08-05T10:11:30",
            "upload_time_iso_8601": "2025-08-05T10:11:30.964695Z",
            "url": "https://files.pythonhosted.org/packages/84/2b/2f928547da9140909caf549f471529c528d69e3adc1f7bb542b3ecd26417/annex4ac-1.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-05 10:11:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "annex4ac"
}
        
Elapsed time: 1.32655s