xplain.config
Configuration and credential management module for secure authentication.
create_session
- xplain.config.create_session(profile=None, url=None, user=None, password=None, config_path=None, jwt_dispatch_url=None, jwt_cookie_name=None, jwt_token=None, **kwargs)
Create Xsession with credentials from multiple sources.
Supports named profiles for managing multiple environments:
Credential sources (in priority order): 1. Direct parameters (url, user, password, jwt_*) 2. Profile-specific environment variables (XPLAIN_<PROFILE>_URL, etc.) 3. Profile from config file (~/.xplainpyrc) 4. Default environment variables (XPLAIN_URL, XPLAIN_USER, XPLAIN_PASSWORD) 5. Default profile from config file
- Parameters
profile (Optional[str]) – Profile name (e.g., ‘staging’, ‘production’)
url (Optional[str]) – Server URL (overrides profile)
user (Optional[str]) – Username (overrides profile)
password (Optional[str]) – Password (overrides profile)
config_path (Optional[pathlib.Path]) – Path to config file (default: ~/.xplainpyrc)
jwt_dispatch_url (Optional[str]) – JWT dispatch URL (overrides profile)
jwt_cookie_name (Optional[str]) – JWT cookie name (overrides profile)
jwt_token (Optional[str]) – JWT token (overrides profile)
**kwargs – Additional parameters passed to Xsession()
- Returns
Configured Xsession instance
- Raises
ValueError – If password is not provided from any source
- Return type
Examples
>>> # Use default profile or env vars >>> session = create_session()
>>> # Use specific profile >>> session = create_session(profile='staging')
>>> # Override profile settings >>> session = create_session(profile='prod', user='admin')
>>> # Override JWT token for refresh >>> session = create_session(profile='prod-jwt', jwt_token=get_fresh_token())
>>> # List available profiles >>> from xplain.config import list_profiles >>> print(list_profiles())
Example:
from xplain import create_session
# Use default profile or environment variables
session = create_session()
# Use specific profile
session = create_session(profile='staging')
# Override settings
session = create_session(profile='prod', jwt_token=get_fresh_token())
get_credentials
- xplain.config.get_credentials(url=None, user=None, password=None, profile=None, config_path=None, jwt_dispatch_url=None, jwt_cookie_name=None, jwt_token=None)
Get Xplain credentials from multiple sources with priority order: 1. Direct parameters (highest priority) 2. Profile-specific environment variables (XPLAIN_<PROFILE>_*, XPLAIN_<PROFILE>_JWT_*) 3. Profile from config file 4. Default environment variables (XPLAIN_*, XPLAIN_JWT_*) 5. Default profile from config file 6. Defaults (url only)
Supports both password-based and JWT-based authentication.
- Parameters
url (Optional[str]) – Server URL
user (Optional[str]) – Username
password (Optional[str]) – Password (for password-based auth)
profile (Optional[str]) – Profile name (e.g., ‘staging’, ‘production’)
config_path (Optional[pathlib.Path]) – Path to config file (default: ~/.xplainpyrc)
jwt_dispatch_url (Optional[str]) – JWT dispatch URL (for JWT auth)
jwt_cookie_name (Optional[str]) – JWT cookie name (for JWT auth)
jwt_token (Optional[str]) – JWT token value (for JWT auth)
- Returns
Dictionary with authentication parameters (password or JWT fields)
- Return type
Dict[str, Any]
Example
>>> # Password-based >>> creds = get_credentials(profile='staging') >>> session = Xsession(**creds)
>>> # JWT-based >>> creds = get_credentials(profile='jwt-prod') >>> session = Xsession(**creds)
Example:
from xplain import get_credentials, Xsession
creds = get_credentials(profile='staging')
session = Xsession(**creds)
load_profile
- xplain.config.load_profile(profile_name=None, config_path=None)
Load a specific profile from config file.
Supports both multi-profile and single-credential config formats. Profiles can use either password-based or JWT-based authentication.
Multi-profile format:
{ "profiles": { "local": { "url": "...", "user": "...", "password": "..." }, "staging": { "url": "...", "user": "...", "jwt_dispatch_url": "...", "jwt_cookie_name": "...", "jwt_token": "..." } }, "default": "local" }
Single-credential format (legacy):
{"url": "...", "user": "...", "password": "..."}
- Parameters
profile_name (Optional[str]) – Name of profile to load (default: use ‘default’ from config)
config_path (Optional[pathlib.Path]) – Path to config file (default: ~/.xplainpyrc)
- Returns
Dictionary with authentication parameters (password-based or JWT-based)
- Raises
ValueError – If profile not found
- Return type
Dict[str, Any]
Example
>>> # Password-based profile >>> creds = load_profile('staging') >>> session = Xsession(**creds)
>>> # JWT-based profile >>> creds = load_profile('jwt-prod') >>> session = Xsession(**creds)
Example:
from xplain import load_profile
creds = load_profile('production')
print(f"Using {creds['url']}")
list_profiles
- xplain.config.list_profiles(config_path=None)
List available profiles from config file.
- Parameters
config_path (Optional[pathlib.Path]) – Path to config file (default: ~/.xplainpyrc)
- Returns
List of profile names
- Return type
list
Example
>>> profiles = list_profiles() >>> print(f"Available: {', '.join(profiles)}")
Example:
from xplain import list_profiles
profiles = list_profiles()
print(f"Available: {', '.join(profiles)}")
load_config_file
- xplain.config.load_config_file(config_path=None)
Load Xplain configuration from a JSON file.
- Parameters
config_path (Optional[pathlib.Path]) – Path to config file. Defaults to ~/.xplainpyrc
- Returns
Dictionary with configuration (empty if file doesn’t exist)
- Return type
Dict[str, Any]
Example
~/.xplainpyrc:{ "url": "http://localhost:8080", "user": "myuser", "password": "mypassword" }
Example:
from xplain import load_config_file
config = load_config_file()
print(config.get('profiles', {}).keys())