Code Reference¶
Provides tools for managing and publishing items in a Fabric workspace.
Classes:
| Name | Description | 
|---|---|
FabricWorkspace |    A class to manage and publish workspace items to the Fabric API.  |  
Functions:
| Name | Description | 
|---|---|
append_feature_flag |    Append a feature flag to the global feature_flag set.  |  
change_log_level |    Sets the log level for all loggers within the fabric_cicd package. Currently only supports DEBUG.  |  
deploy_with_config |    Deploy items using YAML configuration file with environment-specific settings.  |  
publish_all_items |    Publishes all items defined in the   |  
unpublish_all_orphan_items |    Unpublishes all orphaned items not present in the repository except for those matching the exclude regex.  |  
  FabricWorkspace ¶
 FabricWorkspace(
    repository_directory: str,
    item_type_in_scope: Optional[list[str]] = None,
    environment: str = "N/A",
    workspace_id: Optional[str] = None,
    workspace_name: Optional[str] = None,
    token_credential: TokenCredential = None,
    **kwargs,
)
A class to manage and publish workspace items to the Fabric API.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
 workspace_id  |   Optional[str]  |    The ID of the workspace to interact with. Either   |   None  |  
 workspace_name  |   Optional[str]  |    The name of the workspace to interact with. Either   |   None  |  
 repository_directory  |   str  |    Local directory path of the repository where items are to be deployed from.  |  required | 
 item_type_in_scope  |   Optional[list[str]]  |    Item types that should be deployed for a given workspace. If omitted, defaults to all available item types.  |   None  |  
 environment  |   str  |    The environment to be used for parameterization.  |   'N/A'  |  
 token_credential  |   TokenCredential  |    The token credential to use for API requests.  |   None  |  
 kwargs  |    Additional keyword arguments.  |   {}  |  
Examples:
Basic usage
>>> from fabric_cicd import FabricWorkspace
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
Basic usage with workspace_name
>>> from fabric_cicd import FabricWorkspace
>>> workspace = FabricWorkspace(
...     workspace_name="your-workspace-name",
...     repository_directory="/path/to/repo"
... )
With optional parameters
>>> from fabric_cicd import FabricWorkspace
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/your/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"],
...     environment="your-target-environment"
... )
With token credential
>>> from fabric_cicd import FabricWorkspace
>>> from azure.identity import ClientSecretCredential
>>> client_id = "your-client-id"
>>> client_secret = "your-client-secret"
>>> tenant_id = "your-tenant-id"
>>> token_credential = ClientSecretCredential(
...     client_id=client_id, client_secret=client_secret, tenant_id=tenant_id
... )
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/your/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"],
...     token_credential=token_credential
... )
  append_feature_flag ¶
     change_log_level ¶
     deploy_with_config ¶
 deploy_with_config(
    config_file_path: str,
    environment: str = "N/A",
    token_credential: Optional[TokenCredential] = None,
    config_override: Optional[dict] = None,
) -> None
Deploy items using YAML configuration file with environment-specific settings. This function provides a simplified deployment interface that loads configuration from a YAML file and executes deployment operations based on environment-specific settings. It constructs the necessary FabricWorkspace object internally and handles publish/unpublish operations according to the configuration.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
 config_file_path  |   str  |    Path to the YAML configuration file as a string.  |  required | 
 environment  |   str  |    Environment name to use for deployment (e.g., 'dev', 'test', 'prod'), if missing defaults to 'N/A'.  |   'N/A'  |  
 token_credential  |   Optional[TokenCredential]  |    Optional Azure token credential for authentication.  |   None  |  
 config_override  |   Optional[dict]  |    Optional dictionary to override specific configuration values.  |   None  |  
Raises:
| Type | Description | 
|---|---|
 InputError  |    If configuration file is invalid or environment not found.  |  
 FileNotFoundError  |    If configuration file doesn't exist.  |  
Examples:
Basic usage
>>> from fabric_cicd import deploy_with_config
>>> deploy_with_config(
...     config_file_path="workspace/config.yml",
...     environment="prod"
... )
With custom authentication
>>> from fabric_cicd import deploy_with_config
>>> from azure.identity import ClientSecretCredential
>>> credential = ClientSecretCredential(tenant_id, client_id, client_secret)
>>> deploy_with_config(
...     config_file_path="workspace/config.yml",
...     environment="prod",
...     token_credential=credential
... )
With override configuration
>>> from fabric_cicd import deploy_with_config
>>> from azure.identity import ClientSecretCredential
>>> credential = ClientSecretCredential(tenant_id, client_id, client_secret)
>>> deploy_with_config(
...     config_file_path="workspace/config.yml",
...     environment="prod",
...     config_override={
...         "core": {
...             "item_types_in_scope": ["Notebook"]
...         },
...         "publish": {
...             "skip": {
...                 "prod": False
...             }
...         }
...     }
... )
  publish_all_items ¶
 publish_all_items(
    fabric_workspace_obj: FabricWorkspace,
    item_name_exclude_regex: Optional[str] = None,
    folder_path_exclude_regex: Optional[str] = None,
    items_to_include: Optional[list[str]] = None,
) -> Optional[dict]
Publishes all items defined in the item_type_in_scope list of the given FabricWorkspace object.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
 fabric_workspace_obj  |   FabricWorkspace  |    The FabricWorkspace object containing the items to be published.  |  required | 
 item_name_exclude_regex  |   Optional[str]  |    Regex pattern to exclude specific items from being published.  |   None  |  
 folder_path_exclude_regex  |   Optional[str]  |    Regex pattern to exclude items based on their folder path.  |   None  |  
 items_to_include  |   Optional[list[str]]  |    List of items in the format "item_name.item_type" that should be published.  |   None  |  
Returns:
| Type | Description | 
|---|---|
 Optional[dict]  |    Dict containing all API responses if the "enable_response_collection" feature flag is enabled and responses were collected, otherwise None.  |  
folder_path_exclude_regex
This is an experimental feature in fabric-cicd. Use at your own risk as selective deployments are not recommended due to item dependencies. To enable this feature, see How To -> Optional Features for information on which flags to enable.
items_to_include
This is an experimental feature in fabric-cicd. Use at your own risk as selective deployments are not recommended due to item dependencies. To enable this feature, see How To -> Optional Features for information on which flags to enable.
Examples:
Basic usage
>>> from fabric_cicd import FabricWorkspace, publish_all_items
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> publish_all_items(workspace)
With regex name exclusion
>>> from fabric_cicd import FabricWorkspace, publish_all_items
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> exclude_regex = ".*_do_not_publish"
>>> publish_all_items(workspace, item_name_exclude_regex=exclude_regex)
With folder exclusion
>>> from fabric_cicd import FabricWorkspace, publish_all_items, append_feature_flag
>>> append_feature_flag("enable_experimental_features")
>>> append_feature_flag("enable_exclude_folder")
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> folder_exclude_regex = "^legacy/"
>>> publish_all_items(workspace, folder_path_exclude_regex=folder_exclude_regex)
With items to include
>>> from fabric_cicd import FabricWorkspace, publish_all_items, append_feature_flag
>>> append_feature_flag("enable_experimental_features")
>>> append_feature_flag("enable_items_to_include")
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> items_to_include = ["Hello World.Notebook", "Hello.Environment"]
>>> publish_all_items(workspace, items_to_include=items_to_include)
With response collection
>>> from fabric_cicd import FabricWorkspace, publish_all_items, append_feature_flag
>>> append_feature_flag("enable_response_collection")
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> responses = publish_all_items(workspace)
>>> # Access all responses
>>> print(responses)
>>> # Access individual item responses
>>> notebook_response = workspace.responses["Notebook"]["Hello World"]
  unpublish_all_orphan_items ¶
 unpublish_all_orphan_items(
    fabric_workspace_obj: FabricWorkspace,
    item_name_exclude_regex: str = "^$",
    items_to_include: Optional[list[str]] = None,
) -> None
Unpublishes all orphaned items not present in the repository except for those matching the exclude regex.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
 fabric_workspace_obj  |   FabricWorkspace  |    The FabricWorkspace object containing the items to be published.  |  required | 
 item_name_exclude_regex  |   str  |    Regex pattern to exclude specific items from being unpublished. Default is '^$' which will exclude nothing.  |   '^$'  |  
 items_to_include  |   Optional[list[str]]  |    List of items in the format "item_name.item_type" that should be unpublished.  |   None  |  
items_to_include
This is an experimental feature in fabric-cicd. Use at your own risk as selective unpublishing is not recommended due to item dependencies. To enable this feature, see How To -> Optional Features for information on which flags to enable.
Examples:
Basic usage
>>> from fabric_cicd import FabricWorkspace, publish_all_items, unpublish_all_orphan_items
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> publish_all_items(workspace)
>>> unpublish_orphaned_items(workspace)
With regex name exclusion
>>> from fabric_cicd import FabricWorkspace, publish_all_items, unpublish_all_orphan_items
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> publish_all_items(workspace)
>>> exclude_regex = ".*_do_not_delete"
>>> unpublish_orphaned_items(workspace, item_name_exclude_regex=exclude_regex)
With items to include
>>> from fabric_cicd import FabricWorkspace, publish_all_items, unpublish_all_orphan_items, append_feature_flag
>>> append_feature_flag("enable_experimental_features")
>>> append_feature_flag("enable_items_to_include")
>>> workspace = FabricWorkspace(
...     workspace_id="your-workspace-id",
...     repository_directory="/path/to/repo",
...     item_type_in_scope=["Environment", "Notebook", "DataPipeline"]
... )
>>> publish_all_items(workspace)
>>> items_to_include = ["Hello World.Notebook", "Run Hello World.DataPipeline"]
>>> unpublish_orphaned_items(workspace, items_to_include=items_to_include)