Creating a Client for Interactive and Scripted Usage#

This guide covers how to create a Bfabric client for interactive sessions and scripts, where you control the configuration directly through config files or environment variables.

Overview#

For interactive and scripted usage, use Bfabric.connect() to create a client instance. This method is designed for situations where:

  • You’re running scripts locally or in controlled environments

  • You have access to a configuration file with credentials

  • You need simple, synchronous API access

  • You want to quickly switch between environments (e.g., PRODUCTION vs TEST)

Prerequisites#

Before creating a client, set up your configuration file. See the Configuration Guide for detailed instructions on:

  • Creating ~/.bfabricpy.yml with your credentials

  • Setting up multiple environments (PRODUCTION, TEST)

  • Using environment variables

  • Configuration priority and overrides

Creating a Client#

Basic Usage#

from bfabric import Bfabric

client = Bfabric.connect()

This uses your ~/.bfabricpy.yml config file with the default environment. See Configuration Guide for how the environment is selected.

Specifying an Environment#

You can explicitly specify which environment to use:

# Use the PRODUCTION environment
client = Bfabric.connect(config_file_env="PRODUCTION")

# Use the TEST environment
client = Bfabric.connect(config_file_env="TEST")

The config_file_env parameter takes precedence over the BFABRICPY_CONFIG_ENV environment variable.

Using a Custom Config File#

If your config file is in a non-standard location:

from pathlib import Path

custom_config_path = Path("/path/to/custom/config.yml")
client = Bfabric.connect(
    config_file_path=custom_config_path, config_file_env="PRODUCTION"
)

Temporarily Changing Authentication#

The with_auth() context manager allows you to temporarily set authentication for a Bfabric client. This is useful when authenticating multiple users to avoid accidental use of the wrong credentials:

from bfabric import Bfabric
from bfabric.config import BfabricAuth

client = Bfabric.connect()

# Temporarily use different credentials
with client.with_auth(BfabricAuth(login="other_user", password="other_pass")):
    # All operations in this block use different authentication
    samples = client.read(endpoint="sample", obj={"name": "Test"})

# Authentication is restored after the block
samples = client.read(endpoint="sample", obj={"name": "Test"})

print(f"Current user: {client.auth.login}")  # Shows original user

Without Authentication#

For certain use cases (e.g., tests, read-only operations on public endpoints), you may want to create a client without authentication:

# Disable authentication - useful for tests
client = Bfabric.connect(config_file_env=None, include_auth=False)

Warning

Without authentication, you won’t be able to perform operations that require credentials, such as creating or updating entities.

Verification#

Always verify you’re using the correct environment:

from bfabric import Bfabric

client = Bfabric.connect()
print(f"Connected to: {client.config.base_url}")
print(f"User: {client.auth.login}")