Skip to content

Commit 51ce3f0

Browse files
ascender1729Pavan Kumar Dubasi
andauthored
feat: add attestix namespace package for cleaner imports (#1)
Add attestix namespace package that re-exports all modules, enabling both import patterns: # New namespaced imports (recommended) from attestix.services.identity_service import IdentityService from attestix.auth.crypto import generate_ed25519_keypair # Flat imports (backward compatible) from services.identity_service import IdentityService from auth.crypto import generate_ed25519_keypair Changes: - Create attestix/ namespace package with __init__.py - Add stub modules in attestix/services/, attestix/auth/, attestix/blockchain/ - Re-export all classes and functions from flat modules - Update pyproject.toml to include namespace packages - Bump version to 0.2.3 - Update CHANGELOG.md All 279 tests pass. Co-authored-by: Pavan Kumar Dubasi <hello@vibetensor.com>
1 parent 4e7d3bf commit 51ce3f0

21 files changed

Lines changed: 300 additions & 2 deletions

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ All notable changes to Attestix are documented here.
44

55
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

7+
## [0.2.3] - 2026-02-28
8+
9+
### Added
10+
- **Namespace package support**: Added `attestix` namespace package for cleaner imports
11+
- New import pattern: `from attestix.services.identity_service import IdentityService`
12+
- New import pattern: `from attestix.auth.crypto import generate_ed25519_keypair`
13+
- Flat imports still work for backward compatibility: `from services.identity_service import IdentityService`
14+
15+
### Changed
16+
- Package structure now includes both flat modules and `attestix.*` namespace
17+
- Updated pyproject.toml to include attestix namespace packages
18+
719
## [0.2.1] - 2026-02-21
820

921
### Added

attestix/__init__.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""Attestix - Attestation Infrastructure for AI Agents.
2+
3+
This namespace package provides convenient imports for all Attestix modules.
4+
Both import patterns are supported for backward compatibility:
5+
6+
# Namespaced imports (recommended)
7+
from attestix.services.identity_service import IdentityService
8+
from attestix.services.credential_service import CredentialService
9+
10+
# Flat imports (legacy, still supported)
11+
from services.identity_service import IdentityService
12+
from services.credential_service import CredentialService
13+
14+
Modules:
15+
- attestix.services: Identity, credentials, compliance, delegation, reputation, provenance
16+
- attestix.tools: MCP tool definitions (47 tools across 9 modules)
17+
- attestix.auth: Cryptographic utilities (Ed25519, SSRF protection)
18+
- attestix.blockchain: Merkle trees and EAS anchoring
19+
"""
20+
21+
__version__ = "0.2.3"
22+
23+
# Re-export submodules for convenient access
24+
from attestix import services
25+
from attestix import tools
26+
from attestix import auth
27+
from attestix import blockchain
28+
29+
__all__ = [
30+
"__version__",
31+
"services",
32+
"tools",
33+
"auth",
34+
"blockchain",
35+
]

attestix/auth/__init__.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""Attestix auth - re-exports from flat module for namespace compatibility.
2+
3+
Modules:
4+
- crypto: Ed25519 key management, signing, verification
5+
- ssrf: SSRF protection for outbound HTTP requests
6+
- token_parser: Identity token parsing utilities
7+
"""
8+
9+
# Re-export all from the flat auth module
10+
from auth.crypto import (
11+
generate_ed25519_keypair,
12+
load_or_create_signing_key,
13+
private_key_to_bytes,
14+
public_key_to_bytes,
15+
private_key_from_bytes,
16+
public_key_from_bytes,
17+
public_key_to_did_key,
18+
did_key_to_public_key,
19+
did_key_fragment,
20+
sign_json_payload,
21+
verify_json_signature,
22+
sign_message,
23+
verify_signature,
24+
canonicalize_json,
25+
)
26+
27+
from auth.ssrf import validate_url_host
28+
29+
from auth.token_parser import extract_identity_from_token
30+
31+
# Re-export submodules
32+
from auth import crypto
33+
from auth import ssrf
34+
from auth import token_parser
35+
36+
__all__ = [
37+
# Crypto functions
38+
"generate_ed25519_keypair",
39+
"load_or_create_signing_key",
40+
"private_key_to_bytes",
41+
"public_key_to_bytes",
42+
"private_key_from_bytes",
43+
"public_key_from_bytes",
44+
"public_key_to_did_key",
45+
"did_key_to_public_key",
46+
"did_key_fragment",
47+
"sign_json_payload",
48+
"verify_json_signature",
49+
"sign_message",
50+
"verify_signature",
51+
"canonicalize_json",
52+
# SSRF
53+
"validate_url_host",
54+
# Token parser
55+
"extract_identity_from_token",
56+
# Submodules
57+
"crypto",
58+
"ssrf",
59+
"token_parser",
60+
]

attestix/auth/crypto.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"""Re-export from flat module for namespace compatibility."""
2+
from auth.crypto import *

attestix/auth/ssrf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"""Re-export from flat module for namespace compatibility."""
2+
from auth.ssrf import *

attestix/auth/token_parser.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"""Re-export from flat module for namespace compatibility."""
2+
from auth.token_parser import *

attestix/blockchain/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""Attestix blockchain - re-exports from flat module for namespace compatibility.
2+
3+
Modules:
4+
- merkle: Merkle tree construction for batch anchoring
5+
- abi: EAS contract ABI definitions
6+
"""
7+
8+
# Re-export from the flat blockchain module
9+
from blockchain.merkle import (
10+
hash_leaf,
11+
hash_pair,
12+
build_merkle_tree,
13+
compute_merkle_root,
14+
)
15+
16+
from blockchain.abi import EAS_ABI, SCHEMA_REGISTRY_ABI
17+
18+
# Re-export submodules
19+
from blockchain import merkle
20+
from blockchain import abi
21+
22+
__all__ = [
23+
# Merkle functions
24+
"hash_leaf",
25+
"hash_pair",
26+
"build_merkle_tree",
27+
"compute_merkle_root",
28+
# ABI
29+
"EAS_ABI",
30+
"SCHEMA_REGISTRY_ABI",
31+
# Submodules
32+
"merkle",
33+
"abi",
34+
]

attestix/blockchain/abi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"""Re-export from flat module for namespace compatibility."""
2+
from blockchain.abi import *

attestix/blockchain/merkle.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"""Re-export from flat module for namespace compatibility."""
2+
from blockchain.merkle import *

attestix/services/__init__.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"""Attestix services - re-exports from flat module for namespace compatibility.
2+
3+
Services:
4+
- IdentityService: Unified Agent Identity Tokens (UAITs)
5+
- CredentialService: W3C Verifiable Credentials
6+
- ComplianceService: EU AI Act compliance profiles
7+
- DelegationService: UCAN-style capability delegation
8+
- ReputationService: Trust scoring
9+
- ProvenanceService: Training data, lineage, audit trails
10+
- AgentCardService: A2A agent card operations
11+
- BlockchainService: EAS anchoring on Base L2
12+
"""
13+
14+
# Re-export all services from the flat module
15+
from services.identity_service import IdentityService
16+
from services.credential_service import CredentialService
17+
from services.compliance_service import ComplianceService
18+
from services.delegation_service import DelegationService
19+
from services.reputation_service import ReputationService
20+
from services.provenance_service import ProvenanceService
21+
from services.agent_card_service import AgentCardService
22+
from services.blockchain_service import BlockchainService
23+
24+
# Re-export submodules for `from attestix.services.X import Y` pattern
25+
from services import identity_service
26+
from services import credential_service
27+
from services import compliance_service
28+
from services import delegation_service
29+
from services import reputation_service
30+
from services import provenance_service
31+
from services import agent_card_service
32+
from services import blockchain_service
33+
34+
__all__ = [
35+
# Service classes
36+
"IdentityService",
37+
"CredentialService",
38+
"ComplianceService",
39+
"DelegationService",
40+
"ReputationService",
41+
"ProvenanceService",
42+
"AgentCardService",
43+
"BlockchainService",
44+
# Submodules
45+
"identity_service",
46+
"credential_service",
47+
"compliance_service",
48+
"delegation_service",
49+
"reputation_service",
50+
"provenance_service",
51+
"agent_card_service",
52+
"blockchain_service",
53+
]

0 commit comments

Comments
 (0)