CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-quilt3

Quilt manages data like code with packages, repositories, browsing and revision history for machine learning and data-driven domains

Pending
Overview
Eval results
Files

config-session.mddocs/

Configuration and Session Management

Authentication, configuration, and session management for Quilt catalogs and AWS services. Handles login/logout, credentials, and configuration settings.

Capabilities

Configuration Management

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
    """

Authentication

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
    """

Session and Credentials Management

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.
    """

Telemetry Control

Control anonymous usage metrics collection.

def disable_telemetry():
    """
    Permanently disable sending of anonymous usage metrics.
    
    This setting persists across sessions and package reinstalls.
    """

Configuration Types

QuiltConfig

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
    """

Usage Examples

Basic Configuration

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
)

Authentication Workflow

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")

Session Management

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()

Advanced Configuration

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')}")

Telemetry Management

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') == True

Configuration Validation

import 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")

Error Handling

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

docs

admin.md

bucket-operations.md

config-session.md

data-access.md

hooks.md

index.md

package-management.md

registry-operations.md

tile.json