Extended Data Types
Supercharge your Python data types! YAML, JSON, TOML, Base64 encoding, string transformations, list/map utilities, and state management.
pip install extended-data-types
Extended Data provides the foundational Python infrastructure used across the entire jbcom ecosystem. These libraries are designed to work seamlessly together while remaining independently useful.
Extended Data Types
Supercharge your Python data types! YAML, JSON, TOML, Base64 encoding, string transformations, list/map utilities, and state management.
pip install extended-data-typesDirected Inputs Class
Transparent input handling with decorator-based API. Load from environment, stdin, or config with automatic type coercion.
pip install directed-inputs-classLifecycle Logging
Rich structured logging with verbosity control, message storage, markers, and Gunicorn integration.
pip install lifecycleloggingVendor Connectors
Universal vendor connectors for AWS, GCP, GitHub, Slack, Vault, Zoom, Meshy AI, Anthropic, and Cursor — with LangChain tools and MCP servers.
pip install vendor-connectorsfrom extended_data_types import ( encode_yaml, decode_yaml, encode_json, decode_json, base64_encode, base64_decode, to_camel_case, to_snake_case, deep_merge, flatten_map, is_nothing, first_non_empty,)
# YAML encoding/decodingconfig = {"name": "app", "features": ["yaml", "json"]}yaml_str = encode_yaml(config)data = decode_yaml(yaml_str)
# Case transformationsto_camel_case("user_account_settings") # → "userAccountSettings"to_snake_case("HTTPResponse") # → "http_response"
# Deep merge dictionariesbase = {"a": 1, "b": {"c": 2}}override = {"b": {"d": 3}, "e": 4}result = deep_merge(base, override)# → {"a": 1, "b": {"c": 2, "d": 3}, "e": 4}
# State utilitiesfirst_non_empty(None, "", "fallback") # → "fallback"is_nothing([]) # → Truefrom directed_inputs_class import directed_inputs, input_config
@directed_inputs(from_env=True, env_prefix="APP_")class UserService: """Methods automatically receive inputs from environment."""
def get_user(self, user_id: str, limit: int = 100) -> dict: # user_id populated from APP_USER_ID if not provided return {"id": user_id, "limit": limit}
@input_config("api_key", source_name="API_KEY", required=True) def secure_call(self, api_key: str) -> str: # Raises ValueError if API_KEY not set return f"Authenticated with {api_key[:4]}..."
# Usageservice = UserService()user = service.get_user() # Loads from environmentfrom lifecyclelogging import Logging
logger = Logging( enable_console=True, enable_verbose_output=True, verbosity_threshold=2,)
# Basic logging with rich formattinglogger.logged_statement("Server starting", log_level="info")
# With attached JSON datalogger.logged_statement( "Request received", json_data={"method": "POST", "path": "/api"}, log_level="debug")
# Verbosity controllogger.logged_statement( "Detailed trace", verbose=True, verbosity=3, # Suppressed if threshold < 3 log_level="debug")
# Message storage for later retrievallogger.logged_statement( "Critical event", storage_marker="EVENTS", log_level="warning")events = logger.stored_messages["EVENTS"]from vendor_connectors import VendorConnectors
# Unified access to all connectorsvc = VendorConnectors()
# Cloud providerss3 = vc.get_aws_client("s3")google = vc.get_google_client()
# Servicesgithub = vc.get_github_client(github_owner="myorg")slack = vc.get_slack_client()
# AI/Agent connectorsanthropic = vc.get_anthropic_client()cursor = vc.get_cursor_client()Each connector supports 3 interfaces:
# 1. Direct Python APIfrom vendor_connectors import meshymodel = meshy.text3d.generate("a medieval sword")
# 2. LangChain Tools (works with CrewAI, LangGraph, etc.)from vendor_connectors.meshy.tools import get_toolstools = get_tools() # Standard StructuredTools
# 3. MCP Server (for Claude Desktop, Cline)from vendor_connectors.meshy.mcp import run_serverrun_server()All Extended Data packages share common patterns from directed-inputs-class:
from vendor_connectors import GithubConnector
# Credentials loaded automatically from:# 1. Direct parameters# 2. Environment variables (GITHUB_TOKEN)# 3. stdin JSON# 4. Config files
github = GithubConnector(github_owner="extended-data-library")# No explicit token needed if GITHUB_TOKEN is set!The VendorConnectors class provides:
py.typed markers| Package | PyPI | Python | Status |
|---|---|---|---|
| extended-data-types | 3.10+ | ||
| directed-inputs-class | 3.10+ | ||
| lifecyclelogging | 3.10+ | ||
| vendor-connectors | 3.10+ |