Parser for DTL (Domain Transport Language) - Ultra-compact, cryptographic data transport format
Project description
๐งฌ DTL Parser
Parser for DTL (Domain Transport Language) - Ultra-compact, schema-driven, cryptographic data transport format.
๐ Specification: dtlaz.org
Installation
pip install dtl-parser
Quick Start
import dtl
# ๐ง INTELLIGENT PARSING - Auto-detects input type!
# File path
doc = dtl.parse("data.dtl")
# Raw string
doc = dtl.parse("@dtlv1.0^dtHC^...")
# Bytes
doc = dtl.parse(b"@dtlv1.0^dtHC^...")
# URL
doc = dtl.parse("https://example.com/data.dtl")
# File handle
doc = dtl.parse(open("data.dtl"))
# StringIO / BytesIO
doc = dtl.parse(io.StringIO(content))
# Dict containing DTL
doc = dtl.parse({"_dtl": content})
# Base64 encoded
doc = dtl.parse(base64_encoded_string)
# pathlib.Path
doc = dtl.parse(Path("data.dtl"))
# Access tables
for row in doc.get_table("USERS"):
print(row["name"])
# Get config values
region = doc.get_config("default_region")
๐ง Intelligent Input Detection
The parser automatically detects input type:
| Input | Detection | Action |
|---|---|---|
"data.dtl" |
File path | Read file |
"@dtlv1.0^..." |
DTL string | Parse directly |
"https://..." |
URL | Fetch & parse |
b"@dtlv1.0..." |
Bytes | Decode & parse |
open(file) |
File handle | Read & parse |
io.StringIO() |
Stream | Read & parse |
{"_dtl": ...} |
Dict | Extract & parse |
Path("file") |
pathlib.Path | Read file |
| Base64 string | Encoded DTL | Decode & parse |
None |
stdin | Read from stdin |
Helper Functions
# Check if input is valid DTL
if dtl.is_dtl(some_input):
doc = dtl.parse(some_input)
# Detect input type
input_type = dtl.detect_input_type(some_input)
# Returns: "file", "string", "bytes", "url", "stream", "dict", "stdin"
๐ Security Features
DTL supports cryptographic security for sensitive data:
Security Modes
| Mode | Description | Use Case |
|---|---|---|
S0 |
No security (plaintext) | Public data |
S1 |
Row-level hashing (BLAKE3) | Integrity verification |
S2 |
Row-level encryption (AES-256-GCM) | Confidential data |
Web3 Modes
| Mode | Description | Use Case |
|---|---|---|
W0 |
No signatures | Standard files |
W1 |
File-level Ed25519 signature | Document signing |
W2 |
Row-level signatures | Audit trails |
Secure Writing
from dtl import SecureDTLWriter, DTLSecurity
# Generate encryption key
key = DTLSecurity.generate_key()
# Create secure writer (S2 = encrypted)
writer = SecureDTLWriter(
security_mode="S2",
encryption_key=key
)
# Write encrypted table
content = writer.create_file(
domain="dtHC",
profile="pPatients",
tables={
"PATIENTS": {
"schema": {"id": "s", "name": "s", "ssn": "s"},
"rows": [
{"id": "P001", "name": "John Doe", "ssn": "123-45-6789"}
]
}
}
)
Integrity Verification
from dtl import DTLSecurity
# Hash a row
row_hash = DTLSecurity.hash_row("P001|John Doe|active")
# Verify file integrity
is_valid, message = DTLSecurity.verify_file_integrity(content)
# Check available crypto
crypto = DTLSecurity.is_crypto_available()
# {'blake3': True, 'encryption': True, 'signatures': True}
Digital Signatures
from dtl import DTLSecurity
# Generate keypair
private_key, public_key = DTLSecurity.generate_signing_keypair()
# Sign content
signature = DTLSecurity.sign_content(content, private_key)
# Verify signature
is_valid = DTLSecurity.verify_signature(content, signature, public_key)
Install Security Dependencies
pip install dtl-parser[security]
๐ Format Converters
Convert between DTL and other formats bidirectionally:
JSON โ DTL
import dtl
# JSON โ DTL
doc = dtl.from_json({"users": [{"id": 1, "name": "Alice"}]})
doc = dtl.from_json('{"data": [1,2,3]}') # String also works
# DTL โ JSON
json_str = dtl.to_json(doc, pretty=True)
CSV โ DTL
# CSV โ DTL
doc = dtl.from_csv("data.csv", table_name="USERS")
doc = dtl.from_csv("id,name\n1,Alice\n2,Bob") # String content
# DTL โ CSV
csv_str = dtl.to_csv(doc, table_name="USERS", delimiter=",")
Excel โ DTL
# Excel โ DTL (requires openpyxl)
doc = dtl.from_excel("data.xlsx")
doc = dtl.from_excel("data.xlsx", sheet_name="Sheet1")
# DTL โ Excel
dtl.to_excel(doc, "output.xlsx")
excel_bytes = dtl.to_excel(doc) # Returns bytes
XML โ DTL
# XML โ DTL
doc = dtl.from_xml("<data><user id='1'>Alice</user></data>")
doc = dtl.from_xml("data.xml")
# DTL โ XML
xml_str = dtl.to_xml(doc, root_name="data")
HL7 โ DTL (Healthcare)
# HL7 โ DTL (auto-sets domain to dtHC)
doc = dtl.from_hl7(hl7_message)
print(doc.header.domain) # dtHC
# Access patient data
pid = doc.get_table("PID")[0]
print(pid["patient_name"])
# DTL โ HL7
hl7_str = dtl.to_hl7(doc)
JWT โ DTL (Auth)
# JWT โ DTL (auto-sets domain to dtID)
doc = dtl.from_jwt(jwt_token)
claims = doc.get_table("CLAIMS")
print(claims)
# DTL โ JWT
token = dtl.to_jwt(doc, secret="optional-secret")
YAML โ DTL
# YAML โ DTL (requires PyYAML)
doc = dtl.from_yaml("config.yaml")
# DTL โ YAML
yaml_str = dtl.to_yaml(doc)
Auto-detect Format
# Auto-detects format and converts
doc = dtl.convert_to_dtl("data.json") # Detects JSON
doc = dtl.convert_to_dtl("data.csv") # Detects CSV
doc = dtl.convert_to_dtl("MSH|^~\\&|...") # Detects HL7
doc = dtl.convert_to_dtl("<xml>...</xml>") # Detects XML
# Convert DTL to any format
json_str = dtl.convert_from_dtl(doc, "json")
csv_str = dtl.convert_from_dtl(doc, "csv")
xml_str = dtl.convert_from_dtl(doc, "xml")
Conversion Matrix
| From โ To | JSON | CSV | Excel | XML | HL7 | JWT | YAML | DTL |
|---|---|---|---|---|---|---|---|---|
| JSON | - | โ | โ | โ | - | - | โ | โ |
| CSV | โ | - | โ | โ | - | - | โ | โ |
| Excel | โ | โ | - | โ | - | - | โ | โ |
| XML | โ | โ | โ | - | - | - | โ | โ |
| HL7 | โ | โ | โ | โ | - | - | โ | โ |
| JWT | โ | - | - | โ | - | - | โ | โ |
| YAML | โ | โ | โ | โ | - | - | - | โ |
| DTL | โ | โ | โ | โ | โ | โ | โ | - |
DTL Format
@dtlv1.0^dtHC^pProfile^c1^s1^w0^h0
@sec^fh0000^w0^sg0^ch0
TABLE_NAME|field:type,field:type|rowcount|S|W|C
value|value|value
value|value|value
Example
@dtlv1.0^dtHC^pMedical^c1^s1^w0^h0
@sec^fh0000^w0^sg0^chNONE
PATIENTS|id:s,name:s,dob:D|3|S1|W0|C1
P001|Ahmed Ali|1990-05-15
P002|Sara Khan|1985-03-22
P003|John Smith|1978-11-08
CONFIG|key:s,value:s|2|S0|W0|C1
region|uae
version|1.0
API Reference
Parsing
import dtl
# Parse file
doc = dtl.parse_file("data.dtl")
doc = dtl.parse_file("data.dtl", strict=True) # Raise on validation errors
# Parse string
doc = dtl.parse(content)
doc = dtl.parse(content, strict=True)
Accessing Data
# Get table rows as list of dicts
users = doc.get_table("USERS")
# Get table object with metadata
table = doc.get_table_obj("USERS")
print(table.schema) # {'id': 's', 'name': 's'}
print(table.row_count) # 3
print(table.security_mode) # S1
# Get table as dict keyed by field
users_by_id = doc.get_table_as_dict("USERS", "id")
print(users_by_id["P001"]["name"]) # Ahmed Ali
# Filter rows
active_users = table.filter(status="active")
# Find one row
admin = table.find_one(role="admin")
# Get column values
names = table.get_column("name") # ['Ahmed', 'Sara', 'John']
Configuration
# Get config from CONFIG table
region = doc.get_config("region")
region = doc.get_config("region", default="global")
# Type-safe config
enabled = doc.get_config_bool("feature_enabled")
count = doc.get_config_int("max_items", default=100)
rate = doc.get_config_float("threshold", default=0.5)
Header Information
# Access header
print(doc.header.domain) # dtHC
print(doc.header.version) # 1.0
print(doc.header.profile) # pMedical
print(doc.header.security) # s1
print(doc.header.web3) # w0
Writing DTL
import dtl
# Write to string
content = dtl.write(doc)
# Write to file
dtl.write_file(doc, "output.dtl")
Validation
# Validate document
errors = doc.validate()
if errors:
for error in errors:
print(f"Error: {error}")
# Strict parsing (raises on error)
doc = dtl.parse_file("data.dtl", strict=True)
CLI Tool
# Parse and display
dtl parse data.dtl
dtl parse data.dtl --show-data
# Validate
dtl validate data.dtl
# Convert to JSON
dtl convert data.dtl --to json
dtl convert data.dtl --to json -o output.json
# Show info
dtl info data.dtl
# List tables
dtl tables data.dtl
dtl tables data.dtl --verbose
DTL Types
| Type | Description | Python Type | Example |
|---|---|---|---|
s |
String | str |
hello |
i |
Integer | int |
42 |
f |
Float | float |
3.14 |
b |
Boolean | bool |
1 or 0 |
D |
Date | date |
2024-01-15 |
T |
DateTime | datetime |
2024-01-15T10:30:00Z |
a(s) |
Array of strings | list[str] |
a,b,c |
a(i) |
Array of integers | list[int] |
1,2,3 |
e(M,F) |
Enum | str |
M |
Domain Codes
| Code | Domain | Use Case |
|---|---|---|
dtHC |
Healthcare | EHR, HIPAA, clinical |
dtFN |
Finance | Transactions, audit |
dtLG |
Legal | Contracts, compliance |
dtID |
Identity | Auth tokens, SSO |
dtAI |
AI/ML | Training data, models |
dtIOT |
IoT | Sensors, edge |
Security Modes
| Mode | Description |
|---|---|
S0 |
No security (inherits file defaults) |
S1 |
Row-level hashing (BLAKE3-256) |
S2 |
Row-level encryption |
Web3 Modes
| Mode | Description |
|---|---|
W0 |
No Web3 integration |
W1 |
File-level digital signature |
W2 |
Row-level digital signatures |
Error Handling
from dtl.exceptions import DTLError, DTLParseError, DTLValidationError
try:
doc = dtl.parse_file("data.dtl", strict=True)
except DTLParseError as e:
print(f"Parse error: {e}")
except DTLValidationError as e:
print(f"Validation error: {e}")
except DTLError as e:
print(f"DTL error: {e}")
Optional Dependencies
# For cryptographic features (hashing, signatures)
pip install dtl-parser[crypto]
Resources
- ๐ Specification: dtlaz.org
- ๐ Documentation: dtlaz.org/docs
- ๐ GitHub: github.com/dtlaz/python-sdk
- ๐ฆ PyPI: pypi.org/project/dtl-parser
License
MIT License - see LICENSE for details.
Author
Padam Sundar Kafle โ Commander of Superintelligence
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dtl_parser-1.2.0.tar.gz.
File metadata
- Download URL: dtl_parser-1.2.0.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0be03b427daa3ba17710f886d11fee930377183aaefbbc3521575ffe44db4bf2
|
|
| MD5 |
e9570f55956a42f07a8ab5a81eaaf3c7
|
|
| BLAKE2b-256 |
7cc8aa0a2e7df6ab499e3e574d1a43ef95283724ee1633470676f714070a81b2
|
File details
Details for the file dtl_parser-1.2.0-py3-none-any.whl.
File metadata
- Download URL: dtl_parser-1.2.0-py3-none-any.whl
- Upload date:
- Size: 34.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a928b42d18a3952c4967ecd4e8f9e4abc8388e1f87d08d2d118b5dfcb4868017
|
|
| MD5 |
520f299082ae7662f5bb140a320e456e
|
|
| BLAKE2b-256 |
80ca9dc4a3e6d83de9c23441ccab3e5335c48016d8c05fc98d8ae85d89fef919
|