Skip to content

Config

clear_session(free_memory=True)

Resets all state generated by synalinks.

synalinks manages a global state, which it uses to implement the Functional model-building API and to uniquify autogenerated modules names.

If you are creating many models in a loop, this global state will consume an increasing amount of memory over time, and you may want to clear it. Calling clear_session() releases the global state: this helps avoid clutter from old programs and modules, especially when memory is limited.

Parameters:

Name Type Description Default
free_memory bool

Whether to call Python garbage collection. It's usually a good practice to call it to make sure memory used by deleted objects is immediately freed. However, it may take a few seconds to execute, so when using clear_session() in a short loop, you may want to skip it.

True
Source code in synalinks/src/backend/common/global_state.py
@synalinks_export(
    [
        "synalinks.utils.clear_session",
        "synalinks.backend.clear_session",
        "synalinks.clear_session",
    ]
)
def clear_session(free_memory=True):
    """Resets all state generated by synalinks.

    synalinks manages a global state, which it uses to implement the Functional
    model-building API and to uniquify autogenerated modules names.

    If you are creating many models in a loop, this global state will consume
    an increasing amount of memory over time, and you may want to clear it.
    Calling `clear_session()` releases the global state: this helps avoid
    clutter from old programs and modules, especially when memory is limited.

    Args:
        free_memory (bool): Whether to call Python garbage collection.
            It's usually a good practice to call it to make sure
            memory used by deleted objects is immediately freed.
            However, it may take a few seconds to execute, so
            when using `clear_session()` in a short loop,
            you may want to skip it.
    """
    global GLOBAL_STATE_TRACKER
    global GLOBAL_SETTINGS_TRACKER

    GLOBAL_STATE_TRACKER = threading.local()
    GLOBAL_SETTINGS_TRACKER = threading.local()

    if free_memory:
        # Manually trigger garbage collection.
        gc.collect()

api_base()

Returns the Synalinks api base

Returns:

Type Description
str

The observability api base

Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.api_base",
        "synalinks.backend.api_base",
        "synalinks.api_base",
    ]
)
def api_base():
    """Returns the Synalinks api base

    Returns:
        (str): The observability api base
    """
    return _API_BASE

api_key()

Synalinks API key.

Returns:

Type Description
str

Synalinks API key.

>>> synalinks.config.api_key()
'my-secret-api-key'
Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.api_key",
        "synalinks.backend.api_key",
    ]
)
def api_key():
    """Synalinks API key.

    Returns:
        (str): Synalinks API key.

    ```python
    >>> synalinks.config.api_key()
    'my-secret-api-key'
    ```

    """
    return _SYNALINKS_API_KEY

backend()

Publicly accessible method for determining the current backend.

Returns:

Type Description
str

The name of the backend synalinks is currently using. like "pydantic".

Example:

>>> synalinks.config.backend()
'pydantic'
Source code in synalinks/src/backend/config.py
@synalinks_export(["synalinks.config.backend", "synalinks.backend.backend"])
def backend():
    """Publicly accessible method for determining the current backend.

    Returns:
        (str): The name of the backend synalinks is currently using. like
            `"pydantic"`.

    Example:

    ```python
    >>> synalinks.config.backend()
    'pydantic'
    ```
    """
    return _BACKEND

enable_logging(filename=None, debug=False)

Configures and enables logging for the application.

This function sets up the logging configuration for the application, allowing logs to be output either to a specified file or to the console. The logging level can be set to DEBUG for more verbose logging or INFO for standard logging.

Parameters:

Name Type Description Default
filename str

The name of the file where logs should be written. If not provided, logs will be output to the console.

None
debug bool

If True, sets the logging level to DEBUG. If False, the logging level is set to INFO. Defaults to False.

False

The log message format includes the timestamp, log level, and the log message itself.

Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.enable_logging",
        "synalinks.backend.enable_logging",
        "synalinks.enable_logging",
    ]
)
def enable_logging(filename=None, debug=False):
    """
    Configures and enables logging for the application.

    This function sets up the logging configuration for the application, allowing logs to be output
    either to a specified file or to the console. The logging level can be set to DEBUG for more
    verbose logging or INFO for standard logging.

    Args:
        filename (str): The name of the file where logs should be written. If not provided,
            logs will be output to the console.
        debug (bool): If True, sets the logging level to DEBUG. If False, the logging level
            is set to INFO. Defaults to False.

    The log message format includes the timestamp, log level, and the log message itself.
    """
    level = logging.DEBUG if debug else logging.INFO
    if filename:
        logging.basicConfig(
            filename=filename,
            level=level,
            format="%(asctime)s - %(levelname)s - %(message)s",
        )
    else:
        logging.basicConfig(
            level=level,
            format="%(asctime)s - %(levelname)s - %(message)s",
        )

enable_observability(api_base=None)

Configures and enables observability for the application.

This function sets up the observability configuration for the application, allowing traces and logs to be send to Synalinks Lab.

Parameters:

Name Type Description Default
api_base str

Optional. The api base to send the traces and logs to.

None
Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.enable_observability",
        "synalinks.backend.enable_observability",
        "synalinks.enable_observability",
    ]
)
def enable_observability(api_base=None):
    """
    Configures and enables observability for the application.

    This function sets up the observability configuration for the application,
    allowing traces and logs to be send to Synalinks Lab.

    Args:
        api_base (str): Optional. The api base to send the traces and logs to.
    """
    global _SYNALINKS_API_BASE
    global _ENABLE_OBSERVABILITY
    if api_base:
        _SYNALINKS_API_BASE = api_base
    _ENABLE_OBSERVABILITY = True

epsilon()

Return the value of the fuzz factor used in numeric expressions.

Returns:

Type Description
float

The epsilon value.

Example:

>>> synalinks.config.epsilon()
1e-07
Source code in synalinks/src/backend/config.py
@synalinks_export(["synalinks.config.epsilon", "synalinks.backend.epsilon"])
def epsilon():
    """Return the value of the fuzz factor used in numeric expressions.

    Returns:
        (float): The epsilon value.

    Example:

    ```python
    >>> synalinks.config.epsilon()
    1e-07
    ```

    """
    return _EPSILON

floatx()

Return the default float type, as a string.

E.g. 'bfloat16', 'float16', 'float32', 'float64'.

Returns:

Type Description
str

The current default float type.

Example:

>>> synalinks.config.floatx()
'float32'
Source code in synalinks/src/backend/config.py
@synalinks_export(["synalinks.config.floatx", "synalinks.backend.floatx"])
def floatx():
    """Return the default float type, as a string.

    E.g. `'bfloat16'`, `'float16'`, `'float32'`, `'float64'`.

    Returns:
        (str): The current default float type.

    Example:

    ```python
    >>> synalinks.config.floatx()
    'float32'
    ```

    """
    return _FLOATX

is_observability_enabled()

Check if the observability is enabled

Returns:

Type Description
bool

True if the observability is enabled.

Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.is_observability_enabled",
        "synalinks.backend.is_observability_enabled",
        "synalinks.is_observability_enabled",
    ]
)
def is_observability_enabled():
    """Check if the observability is enabled

    Returns:
        (bool): True if the observability is enabled.
    """
    return _ENABLE_OBSERVABILITY

set_api_base(api_base)

Set the observability api base

Parameters:

Name Type Description Default
api_base str

The observability api base

required
Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.set_api_base",
        "synalinks.backend.set_api_base",
        "synalinks.set_api_base",
    ]
)
def set_api_base(api_base):
    """Set the observability api base

    Args:
        api_base (str): The observability api base
    """
    global _SYNALINKS_API_BASE
    _SYNALINKS_API_BASE = api_base

set_api_key(key)

Set Synalinks API key.

Parameters:

Name Type Description Default
key str

The API key value.

required

The API key is retrieved from the env variables at start.

>>> os.environ["SYNALINKS_API_KEY"] = 'my-secret-api-key'

Or you can setup it using the config

>>> synalinks.config.set_api_key('my-secret-api-key')
>>> synalinks.config.api_key()
'my-secret-api-key'

Parameters:

Name Type Description Default
key str

Synalinks API key.

required
Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.set_api_key",
        "synalinks.backend.set_api_key",
    ]
)
def set_api_key(key):
    """Set Synalinks API key.

    Args:
        key (str): The API key value.

    The API key is retrieved from the env variables at start.

    ```python
    >>> os.environ["SYNALINKS_API_KEY"] = 'my-secret-api-key'
    ```

    Or you can setup it using the config

    ```python
    >>> synalinks.config.set_api_key('my-secret-api-key')
    >>> synalinks.config.api_key()
    'my-secret-api-key'
    ```

    Args:
        key (str): Synalinks API key.
    """
    global _SYNALINKS_API_KEY
    _SYNALINKS_API_KEY = key

set_epsilon(value)

Set the value of the fuzz factor used in numeric expressions.

Parameters:

Name Type Description Default
value float

The new value of epsilon.

required

Examples:

>>> synalinks.config.epsilon()
1e-07
>>> synalinks.config.set_epsilon(1e-5)
>>> synalinks.config.epsilon()
1e-05
>>> # Set it back to the default value.
>>> synalinks.config.set_epsilon(1e-7)
Source code in synalinks/src/backend/config.py
@synalinks_export(["synalinks.config.set_epsilon", "synalinks.backend.set_epsilon"])
def set_epsilon(value):
    """Set the value of the fuzz factor used in numeric expressions.

    Args:
        value (float): The new value of epsilon.

    Examples:

    ```python
    >>> synalinks.config.epsilon()
    1e-07
    ```

    ```python
    >>> synalinks.config.set_epsilon(1e-5)
    >>> synalinks.config.epsilon()
    1e-05
    ```

    ```python
    >>> # Set it back to the default value.
    >>> synalinks.config.set_epsilon(1e-7)
    ```

    """
    global _EPSILON
    _EPSILON = value

set_floatx(value)

Set the default float dtype.

Note: It is not recommended to set this to "float16", as this will likely cause numeric stability issues. Instead, use float64 or float32.

Parameters:

Name Type Description Default
value str

The float type between 'bfloat16', 'float16', 'float32', or 'float64'.

required

Examples:

>>> synalinks.config.floatx()
'float32'
>>> synalinks.config.set_floatx('float64')
>>> synalinks.config.floatx()
'float64'
>>> # Set it back to float32
>>> synalinks.config.set_floatx('float32')

Raises:

Type Description
ValueError

In case of invalid value.

Source code in synalinks/src/backend/config.py
@synalinks_export(["synalinks.config.set_floatx", "synalinks.backend.set_floatx"])
def set_floatx(value):
    """Set the default float dtype.

    Note: It is not recommended to set this to `"float16"`,
    as this will likely cause numeric stability issues.
    Instead, use `float64` or `float32`.

    Args:
        value (str): The float type between `'bfloat16'`, `'float16'`, `'float32'`,
            or `'float64'`.

    Examples:

    ```python
    >>> synalinks.config.floatx()
    'float32'
    ```

    ```python
    >>> synalinks.config.set_floatx('float64')
    >>> synalinks.config.floatx()
    'float64'
    ```

    ```python
    >>> # Set it back to float32
    >>> synalinks.config.set_floatx('float32')
    ```

    Raises:
        ValueError: In case of invalid value.
    """
    global _FLOATX
    accepted_dtypes = {"bfloat16", "float16", "float32", "float64"}
    if value not in accepted_dtypes:
        raise ValueError(
            f"Unknown `floatx` value: {value}. Expected one of {accepted_dtypes}"
        )
    _FLOATX = str(value)

set_seed(value)

Set the value of the random seed for reproductability.

Parameters:

Name Type Description Default
value float

The new value of epsilon.

required
Source code in synalinks/src/backend/config.py
@synalinks_export(
    [
        "synalinks.config.set_seed",
        "synalinks.backend.set_seed",
        "synalinks.set_seed",
    ]
)
def set_seed(value):
    """Set the value of the random seed for reproductability.

    Args:
        value (float): The new value of epsilon.
    """
    global _RANDOM_SEED
    _RANDOM_SEED = value
    np.random.seed(_RANDOM_SEED)
    random.seed(_RANDOM_SEED)