Skip to content

Package Overview

The Extended Data ecosystem provides four production-ready Python packages that work together seamlessly or independently.


Terminal window
# Install all packages
pip install extended-data-types directed-inputs-class lifecyclelogging vendor-connectors
# Or install individually
pip install extended-data-types # Core utilities
pip install directed-inputs-class # Input handling
pip install lifecyclelogging # Logging
pip install vendor-connectors[all] # All vendor connectors

All Extended Data packages share common patterns:

┌─────────────────────────────────────────────────────────────┐
│ vendor-connectors │
│ AWS, GCP, GitHub, Slack, Vault, Zoom, Meshy, Anthropic │
├─────────────────────────────────────────────────────────────┤
│ directed-inputs-class │
│ Transparent credential loading from env/stdin/config │
├─────────────────────────────────────────────────────────────┤
│ extended-data-types │ lifecyclelogging │
│ Serialization, Utils │ Structured Logging │
└─────────────────────────────────────────────────────────────┘
from lifecyclelogging import Logging
from directed_inputs_class import directed_inputs
from extended_data_types import encode_yaml, deep_merge
from vendor_connectors import VendorConnectors
# Logging setup
logger = Logging(enable_console=True, enable_file=True)
# Service with automatic input handling
@directed_inputs(from_env=True, env_prefix="APP_")
class ConfigService:
def __init__(self):
self.vc = VendorConnectors()
self.logger = logger
def load_config(self, config_path: str = "config.yaml") -> dict:
"""Load and merge configuration from multiple sources."""
self.logger.logged_statement(
f"Loading config from {config_path}",
context_marker="CONFIG",
log_level="info"
)
# Use vendor connectors to fetch remote config
github = self.vc.get_github_client(github_owner="myorg")
remote_config = github.get_file_contents(config_path)
# Merge with local overrides using extended-data-types
local_config = {"debug": True, "log_level": "DEBUG"}
merged = deep_merge(remote_config, local_config)
self.logger.logged_statement(
"Config loaded successfully",
json_data=merged,
log_level="debug"
)
return merged
# Usage
service = ConfigService()
config = service.load_config()
print(encode_yaml(config))

PackagePyPIPythonLicense
extended-data-typesPyPI3.10+MIT
directed-inputs-classPyPI3.10+MIT
lifecycleloggingPyPI3.10+MIT
vendor-connectorsPyPI3.10+MIT

PackageRepository
Extended Data Typesextended-data-library/core
Directed Inputs Classextended-data-library/inputs
Lifecycle Loggingextended-data-library/logging
Vendor Connectorsextended-data-library/vendor-connectors