Skip to content

Api reference

components.feature_flags_context.public.api

DataAccessors

Bases: TypedDict

Type definition for data accessor functions.

All keys are optional to allow partial provision of accessors.

company_ids instance-attribute

company_ids

Function that takes a user ID and returns a list of company IDs where user is employed

member_account_ids instance-attribute

member_account_ids

Function that takes company IDs and returns a list of unique account IDs

get_feature_flags_context_for_user

get_feature_flags_context_for_user(
    user, data_accessors=None
)

Get LaunchDarkly context data for a user.

This function extracts relevant information for feature flagging purposes using country-specific data accessors to retrieve employment information.

Parameters:

Name Type Description Default
user BaseUser

The user object (can be from any country)

required
data_accessors Optional[DataAccessors]

Optional typed dictionary of accessor functions. See DataAccessors type for supported keys and signatures. Currently supported: - "company_ids": Function(user_id: str) -> list[str] - "member_account_ids": Function(company_ids: Iterable[str]) -> list[str]

None

Returns:

Type Description
dict[str, Any]

A dictionary containing LaunchDarkly context data with:

dict[str, Any]
  • email: User's email from global profile
dict[str, Any]
  • country: Country extracted from current app context
dict[str, Any]
  • companyIds: List of company IDs (requires data_accessors["company_ids"])
dict[str, Any]
  • memberAccountIds: List of account IDs (requires data_accessors["member_account_ids"])
Source code in components/feature_flags_context/public/api.py
def get_feature_flags_context_for_user(
    user: BaseUser, data_accessors: Optional[DataAccessors] = None
) -> dict[str, Any]:
    """
    Get LaunchDarkly context data for a user.

    This function extracts relevant information for feature flagging purposes
    using country-specific data accessors to retrieve employment information.

    Args:
        user: The user object (can be from any country)
        data_accessors: Optional typed dictionary of accessor functions.
                       See DataAccessors type for supported keys and signatures.
                       Currently supported:
                       - "company_ids": Function(user_id: str) -> list[str]
                       - "member_account_ids": Function(company_ids: Iterable[str]) -> list[str]

    Returns:
        A dictionary containing LaunchDarkly context data with:
        - email: User's email from global profile
        - country: Country extracted from current app context
        - companyIds: List of company IDs (requires data_accessors["company_ids"])
        - memberAccountIds: List of account IDs (requires data_accessors["member_account_ids"])
    """
    from components.feature_flags_context.internal.business_logic.context_extractor import (
        extract_user_context,
    )

    return extract_user_context(user, data_accessors)

components.feature_flags_context.public.dependencies

Dependency inversion for feature_flags_context component.

COMPONENT_NAME module-attribute

COMPONENT_NAME = 'feature_flags_context'

get_app_dependency

get_app_dependency()

Get the feature_flags_context dependency from the app.

Returns:

Type Description
DataAccessors | None

DataAccessors if registered, None otherwise

Source code in components/feature_flags_context/public/dependencies.py
def get_app_dependency() -> DataAccessors | None:
    """
    Get the feature_flags_context dependency from the app.

    Returns:
        DataAccessors if registered, None otherwise
    """
    from flask import current_app

    try:
        return cast(
            "DataAccessors",
            cast("CustomFlask", current_app).get_component_dependency(COMPONENT_NAME),
        )
    except KeyError:
        # Dependency not registered (e.g., in tests or CLI without proper setup)
        return None

set_app_dependency

set_app_dependency(dependency)

Set the feature_flags_context dependency to the app for runtime access.

Parameters:

Name Type Description Default
dependency DataAccessors

DataAccessors with country-specific implementations

required
Source code in components/feature_flags_context/public/dependencies.py
def set_app_dependency(dependency: DataAccessors) -> None:
    """
    Set the feature_flags_context dependency to the app for runtime access.

    Args:
        dependency: DataAccessors with country-specific implementations
    """
    from flask import current_app

    cast("CustomFlask", current_app).add_component_dependency(
        COMPONENT_NAME, dependency
    )