Documentation Index
Fetch the complete documentation index at: https://docs.law4devs.eu/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Compliance deadlines are specific dates by which organizations must satisfy a legal obligation. Each deadline is extracted from a framework article and classified by type (e.g. "transposition", "application", "notification").
Methods
deadlines()
Returns a page of compliance deadlines. Without filters, returns deadlines across all frameworks.
# All deadlines
page = client.compliance.deadlines()
print(f"Total deadlines: {page.meta.total}")
# Filter by framework
page = client.compliance.deadlines(framework_slug="nis2")
for dl in page.data:
print(f"{dl.deadline_date} [{dl.deadline_type}] {dl.description}")
Parameters
| Parameter | Type | Default | Description |
|---|
framework_slug | str | None | Filter to a specific framework |
page | int | 1 | Page number |
per_page | int | 20 | Items per page (1–100) |
Returns Page[ComplianceDeadline]
iter_deadlines()
Iterate over all deadlines, optionally filtered by framework.
for deadline in client.compliance.iter_deadlines(framework_slug="nis2"):
print(f"{deadline.deadline_date}: {deadline.description}")
Parameters — same kwargs as deadlines() (except page).
Returns Iterator[ComplianceDeadline]
Model
ComplianceDeadline
| Field | Type | Description |
|---|
id | int | Internal numeric ID |
framework_slug | str | Parent framework slug |
article_number | int | None | Source article number |
paragraph_ref | str | None | Source paragraph label |
deadline_date | str | ISO 8601 date, e.g. "2024-10-17" |
deadline_type | str | "transposition", "application", "notification", "review", or "other" |
description | str | Plain-text description of the obligation |
Examples
Print upcoming deadlines sorted by date
from law4devs import Law4DevsClient
from datetime import date
client = Law4DevsClient()
today = date.today().isoformat()
upcoming = sorted(
[dl for dl in client.compliance.iter_deadlines() if dl.deadline_date >= today],
key=lambda d: d.deadline_date,
)
print("Upcoming compliance deadlines:")
for dl in upcoming:
print(f" {dl.deadline_date} [{dl.framework_slug}] {dl.description[:60]}")
Deadlines for a specific framework
print("NIS2 compliance deadlines:")
for dl in client.compliance.iter_deadlines(framework_slug="nis2"):
source = f"Art. {dl.article_number}" if dl.article_number else "general"
print(f" {dl.deadline_date} ({source}) {dl.description}")
Group deadlines by type
from collections import defaultdict
by_type = defaultdict(list)
for dl in client.compliance.iter_deadlines():
by_type[dl.deadline_type].append(dl)
for dtype, deadlines in sorted(by_type.items()):
print(f"{dtype}: {len(deadlines)} deadlines")
Export a deadline calendar to JSON
import json
calendar = []
for dl in client.compliance.iter_deadlines():
calendar.append({
"date": dl.deadline_date,
"framework": dl.framework_slug,
"type": dl.deadline_type,
"description": dl.description,
"source_article": dl.article_number,
})
calendar.sort(key=lambda x: x["date"])
with open("compliance_calendar.json", "w") as f:
json.dump(calendar, f, indent=2)
print(f"Exported {len(calendar)} deadlines")
Check if a specific deadline has passed
from datetime import date
dl = client.compliance.deadlines(framework_slug="nis2").data[0]
deadline_date = date.fromisoformat(dl.deadline_date)
if deadline_date < date.today():
print(f"OVERDUE: {dl.description}")
else:
days_left = (deadline_date - date.today()).days
print(f"{days_left} days until: {dl.description}")
Deadline dates are extracted from the official legislative text and may not reflect national transposition extensions. Always verify against the official EUR-Lex publication for legal certainty.