Extended Data Types
Safe, typed serialization for YAML, JSON, TOML, and Base64. String transformations, deep merge, flatten, and state utilities like is_nothing() and first_non_empty().
pip install extended-data-typesEvery Python project reinvents the same infrastructure: YAML parsing, environment variable handling, structured logging, API client management. You copy-paste from old projects, fix edge cases again, and hope the types are right.
Extended Data is the answer. Five packages that handle the infrastructure layer of your Python applications — each independently useful, all designed to work together.
Extended Data Types
Safe, typed serialization for YAML, JSON, TOML, and Base64. String transformations, deep merge, flatten, and state utilities like is_nothing() and first_non_empty().
pip install extended-data-typesDirected Inputs
Decorator-based input handling. Load from environment variables, stdin, or config — with automatic type coercion. No inheritance required.
pip install directed-inputs-classLifecycle Logging
Structured logging with verbosity control, message storage, context markers, and Gunicorn integration. Rich console output included.
pip install lifecycleloggingVendor Connectors
Unified connectors for AWS, GCP, GitHub, Slack, Vault, Zoom, Meshy AI, Anthropic, and Cursor. Each with Direct API + LangChain Tools + MCP Server interfaces.
pip install vendor-connectorsfrom extended_data_types import encode_yaml, decode_json, deep_merge
config = {"name": "myapp", "features": ["yaml", "json"]}yaml_str = encode_yaml(config)
# Deep merge with overridesbase = {"db": {"host": "localhost", "port": 5432}}override = {"db": {"port": 5433}, "debug": True}merged = deep_merge(base, override)# {"db": {"host": "localhost", "port": 5433}, "debug": True}from directed_inputs_class import directed_inputs
@directed_inputs(from_env=True, env_prefix="APP_")class Config: def get_settings(self, debug: bool = False, port: int = 8080): return {"debug": debug, "port": port}
# APP_DEBUG=true APP_PORT=3000 python app.pyconfig = Config()config.get_settings() # {"debug": True, "port": 3000}from lifecyclelogging import Logging
logger = Logging(enable_console=True, enable_verbose_output=True)logger.logged_statement("Server starting", log_level="info")logger.logged_statement( "Request", json_data={"method": "POST", "path": "/api"}, storage_marker="REQUESTS", log_level="debug",)from vendor_connectors import VendorConnectors
vc = VendorConnectors()
# Credentials loaded automatically from environmentgithub = vc.get_github_client(github_owner="myorg")s3 = vc.get_aws_client("s3")anthropic = vc.get_anthropic_client()
# Each connector also supports LangChain and MCPfrom vendor_connectors.meshy.tools import get_toolstools = get_tools() # StructuredTools for LangChain/CrewAIAll packages share a common pattern via directed-inputs-class:
vendor-connectors AWS | GCP | GitHub | Slack | Vault | AI ───────────────────────────────────────── directed-inputs-class Transparent credential & config loading ───────────────────────────────────────── extended-data-types | lifecyclelogging Serialization & Utils | Structured LoggingCredentials are loaded automatically from environment variables, stdin, or config files. No boilerplate. No manual plumbing.
Type-Safe
Full type annotations, py.typed markers, and strict mypy compliance. Your IDE autocompletes everything.
Zero Config
Sensible defaults. Install, import, use. Override when you need to.
Composable
Use one package or all five. They share patterns but don’t force coupling.
Production-Proven
CI/CD on every commit. 90%+ test coverage. Used in real production systems.
pip install extended-data-types directed-inputs-class lifecyclelogging vendor-connectorsOr install individually — each package works on its own.
| Package | PyPI | Python |
|---|---|---|
| extended-data-types | 3.10+ | |
| directed-inputs-class | 3.10+ | |
| lifecyclelogging | 3.10+ | |
| vendor-connectors | 3.10+ | |
| secretssync | Go binary | Go 1.25+ |