Quilt manages data like code with packages, repositories, browsing and revision history for machine learning and data-driven domains
—
Authentication, configuration, and session management for Quilt catalogs and AWS services. Handles login/logout, credentials, and configuration settings.
Configure Quilt3 to work with catalogs and set configuration options.
def config(*catalog_url, **config_values):
"""
Set or read the QUILT configuration.
Parameters:
- catalog_url: A single URL indicating a location to configure from
- **config_values: Key=value pairs to set in the config
Returns:
QuiltConfig: An ordered mapping of configuration values
Usage:
- config() - retrieve current config
- config('https://your-catalog-url.com') - autoconfigure from URL
- config(navigator_url='http://example.com') - set specific values
Raises:
QuiltException: If both catalog_url and config_values are provided
"""Authenticate with Quilt catalogs and manage login state.
def login():
"""
Authenticate to your Quilt stack and assume the role assigned to you by
your stack administrator. Not required if you have existing AWS credentials.
Launches a web browser and asks the user for a token.
Raises:
QuiltException: If no registry URL is configured
"""
def logout():
"""
Do not use Quilt credentials. Useful if you have existing AWS credentials.
Clears saved authentication tokens and resets session.
"""
def logged_in() -> str:
"""
Return catalog URL if Quilt client is authenticated. Otherwise return None.
Returns:
String: Navigator URL if authenticated, None otherwise
"""Manage boto3 sessions and AWS credentials integration.
def get_boto3_session(*, fallback: bool = True):
"""
Return a Boto3 session with Quilt stack credentials and AWS region.
Parameters:
- fallback: Return normal Boto3 session if no Quilt credentials found
Returns:
boto3.Session: Session with Quilt credentials and region configuration
Raises:
QuiltException: If no Quilt credentials found and fallback=False
Note:
You need to call quilt3.config("https://your-catalog-homepage/") to have
region set on the session, if you previously called it in quilt3 < 6.1.0.
"""Control anonymous usage metrics collection.
def disable_telemetry():
"""
Permanently disable sending of anonymous usage metrics.
This setting persists across sessions and package reinstalls.
"""class QuiltConfig:
"""
Configuration object providing access to Quilt settings.
Behaves like an ordered dictionary with configuration keys and values.
Common configuration keys include:
- navigator_url: URL of the Quilt catalog interface
- registryUrl: URL of the Quilt registry backend
- region: AWS region for S3 operations
- telemetry_disabled: Whether telemetry is disabled
"""import quilt3
# View current configuration
current_config = quilt3.config()
print("Current configuration:")
for key, value in current_config.items():
print(f" {key}: {value}")
# Configure from catalog URL (autoconfiguration)
quilt3.config('https://your-catalog.quiltdata.com')
# Set specific configuration values
quilt3.config(
navigator_url='https://your-catalog.quiltdata.com',
region='us-east-1'
)
# Mixed configuration example
quilt3.config(
navigator_url='https://catalog.company.com',
telemetry_disabled=True
)import quilt3
# Check if already logged in
if quilt3.logged_in():
print(f"Already logged in to: {quilt3.logged_in()}")
else:
print("Not currently logged in")
# Login to Quilt catalog
quilt3.login() # Opens browser for authentication
# Verify login successful
if quilt3.logged_in():
print(f"Successfully logged in to: {quilt3.logged_in()}")
# Logout when done
quilt3.logout()
print("Logged out successfully")import quilt3
# Get Boto3 session with Quilt credentials
session = quilt3.get_boto3_session()
# Use session for AWS operations
s3_client = session.client('s3')
response = s3_client.list_buckets()
print(f"Found {len(response['Buckets'])} buckets")
# Get session with fallback disabled
try:
session = quilt3.get_boto3_session(fallback=False)
print("Using Quilt credentials")
except quilt3.QuiltException:
print("No Quilt credentials available")
# Use session for other AWS services
ec2_client = session.client('ec2')
instances = ec2_client.describe_instances()import quilt3
# Configure for multiple environments
def configure_for_environment(env):
if env == 'development':
quilt3.config(
navigator_url='https://dev-catalog.company.com',
registryUrl='https://dev-registry.company.com',
region='us-west-2'
)
elif env == 'production':
quilt3.config(
navigator_url='https://catalog.company.com',
registryUrl='https://registry.company.com',
region='us-east-1'
)
# Use environment-specific configuration
configure_for_environment('production')
# Verify configuration
config = quilt3.config()
print(f"Environment: {config.get('navigator_url')}")
print(f"Region: {config.get('region')}")import quilt3
# Check current telemetry status
config = quilt3.config()
if config.get('telemetry_disabled'):
print("Telemetry is disabled")
else:
print("Telemetry is enabled")
# Disable telemetry
quilt3.disable_telemetry()
print("Telemetry disabled")
# Verify telemetry is disabled
config = quilt3.config()
assert config.get('telemetry_disabled') == Trueimport quilt3
def validate_configuration():
"""Validate that Quilt is properly configured"""
config = quilt3.config()
required_keys = ['navigator_url', 'registryUrl']
missing_keys = [key for key in required_keys if not config.get(key)]
if missing_keys:
print(f"Missing configuration: {missing_keys}")
return False
# Test authentication
if not quilt3.logged_in():
print("Warning: Not authenticated")
return False
# Test session
try:
session = quilt3.get_boto3_session(fallback=False)
print("Configuration valid - Quilt credentials available")
return True
except quilt3.QuiltException:
print("Warning: No Quilt credentials available")
return False
# Run validation
if validate_configuration():
print("Ready to use Quilt3")
else:
print("Configuration needs attention")import quilt3
try:
# Attempt to configure with invalid URL
quilt3.config('not-a-valid-url')
except quilt3.QuiltException as e:
print(f"Configuration error: {e}")
try:
# Attempt to get session without fallback
session = quilt3.get_boto3_session(fallback=False)
except quilt3.QuiltException as e:
print(f"No Quilt credentials: {e}")
# Fall back to default AWS credentials
import boto3
session = boto3.Session()
try:
# Attempt login when not configured
quilt3.logout() # Clear any existing config
quilt3.login()
except quilt3.QuiltException as e:
print(f"Login failed: {e}")
print("Please configure catalog URL first with quilt3.config('https://your-catalog.com')")Install with Tessl CLI
npx tessl i tessl/pypi-quilt3