Skip to main content

pyfabric

CI PyPI version Python License: MIT

Python library for creating, validating, and locally testing Microsoft Fabric items that are compatible with Fabric git sync.

Installation

pip install pyfabric

Optional dependencies

pip install pyfabric[azure]         # Azure authentication and REST client
pip install pyfabric[data]          # OneLake and SQL data access
pip install pyfabric[lakehouse-io]  # Delta table writes (deltalake + pyarrow)
pip install pyfabric[testing]       # DuckDB Spark mock and pytest fixtures
pip install pyfabric[dataagent]     # Data agent MCP query client
pip install pyfabric[deploy]        # parameter.yml substitution (PyYAML)
pip install pyfabric[all]           # All optional dependencies

AI assistant context (optional)

pyfabric ships with reference memories so any AI coding assistant can learn the library without you re-explaining it every session. Two ways to install, depending on your assistant:

Claude Code — one command, installs into your active Claude profile:

pyfabric install-claude-memory            # $CLAUDE_CONFIG_DIR/memory or ~/.claude/memory
pyfabric install-claude-memory --dry-run  # show what would change
pyfabric install-claude-memory --force    # overwrite locally-edited copies

Safe to re-run after upgrades — MEMORY.md is merged (never overwritten), and individual .md files are skipped unless --force is passed.

Any other assistant — emit the memories as portable markdown and redirect to whatever file your tool reads:

pyfabric emit-context > .github/copilot-instructions.md   # GitHub Copilot
pyfabric emit-context > .cursorrules                      # Cursor
pyfabric emit-context > .continuerules                    # Continue
pyfabric emit-context > CONVENTIONS.md                    # Aider

emit-context strips Claude-specific frontmatter and skips the index file, so the output is plain markdown any LLM can consume. Commit the generated file so teammates' assistants pick it up too, and re-run after upgrading pyfabric.

Quick start

First-run smoke test

After pip install --pre "pyfabric[azure]", verify install + auth + the core read APIs in one command:

pyfabric demo "<your_workspace_display_name>"
pyfabric demo "<your_workspace_display_name>" --show-definitions

It lists accessible workspaces, resolves the one you named (with case-insensitive and "did you mean" fallbacks), and summarises its items. Read-only — no writes, no pushes. Equivalent script form: examples/workspace_demo.py.

Validate a Fabric workspace

from pathlib import Path
from pyfabric.items.validate import validate_workspace

results = validate_workspace(Path("my_workspace/"))
for r in results:
    status = "OK" if r.valid else "FAIL"
    print(f"{status}: {r.item_path.name}")
    for e in r.errors:
        print(f"  ERROR: {e.message}")

List workspaces with the REST client

from pyfabric.client.auth import FabricCredential
from pyfabric.client.http import FabricClient
from pyfabric.workspace.workspaces import list_workspaces

cred = FabricCredential(tenant="contoso")
client = FabricClient(cred)

for ws in list_workspaces(client):
    print(f"{ws['displayName']}  {ws['id']}")

Test notebook logic locally

# In your test file (pytest)
def test_my_notebook(fabric_spark, mock_notebookutils):
    # fabric_spark is a DuckDB-backed SparkSession replacement
    df = fabric_spark.sql("SELECT 1 AS value, 'hello' AS msg")
    rows = df.collect()
    assert rows[0]["value"] == 1

    # mock_notebookutils replaces Fabric notebookutils
    mock_notebookutils.fs.mkdirs("/output")
    mock_notebookutils.fs.put("/output/result.txt", "done")

Documentation

Document Description
Vision Project mission and design principles
Roadmap Implementation phases and current status
API Reference All sub-packages and their public functions
Testing Guide Local testing with DuckDB Spark mock and pytest fixtures
AI Prompts Sample prompts for Claude and Copilot to create Fabric items
CONTRIBUTING.md Development setup and release process
CLAUDE.md Instructions for AI coding assistants

Sub-packages

Package Purpose Install
pyfabric.client Fabric REST API authentication and HTTP client pyfabric[azure]
pyfabric.items Create, validate, and manage Fabric item definitions (included)
pyfabric.data OneLake, SQL endpoint, and lakehouse table operations pyfabric[data]
pyfabric.workspace Workspace management (list, create, roles) pyfabric[azure]
pyfabric.testing DuckDB Spark mock, notebookutils mock, pytest fixtures pyfabric[testing]

Supply Chain Security

Every release of pyfabric includes supply chain security attestations:

  • SLSA Build Provenance — each release is built in GitHub Actions and attested with SLSA provenance, verifiable with gh attestation verify
  • SBOM (SPDX) — a Software Bill of Materials in SPDX JSON format is generated for every release and attached as a release asset
  • PyPI Trusted Publisher — packages are published to PyPI via OpenID Connect with no long-lived credentials
  • Dependency Review — every PR is scanned for known vulnerabilities via pip-audit and GitHub's dependency review action

Verifying a release

# Verify SLSA provenance of a downloaded package
gh attestation verify pyfabric-*.whl --repo Creative-Planning/pyfabric

# Download the SBOM for a specific release
gh release download v0.1.0a2 --repo Creative-Planning/pyfabric --pattern "*.spdx.json"

The SBOM for each release is available at: https://github.com/Creative-Planning/pyfabric/releases/download/<tag>/pyfabric-build.spdx.json

Requirements

  • Python 3.12 or later

Developer setup

After cloning, install dev dependencies and git hooks so that lint, format, type check, and tests run automatically before commit/push:

pip install -e ".[dev]"
pre-commit install
pre-commit install --hook-type pre-push

See CONTRIBUTING.md for full details.

Contributing

This project is maintained by Creative Planning. We do not accept external contributions at this time. You are welcome to fork and modify under the MIT license. See CONTRIBUTING.md.

License

MIT

Metadata

Release files for pyfabric 0.1.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyfabric 0.1.14
File Size Uploaded
pyfabric-0.1.14.tar.gz 329.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyfabric 0.1.14
File Interpreter ABI Platform
pyfabric-0.1.14-py3-none-any.whl Python 3 none any Details

Total release size: 536.1 kB

Release files / pyfabric-0.1.14.tar.gz

Download URL pyfabric-0.1.14.tar.gz
Size 329.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c3ba86e6638115cc0503d61e9d3b45e2c74c37546d6c6865bc5866e7966992aa
BLAKE2b-256 checksum
How to use checksums
7794e8bebf293938cda0f86a3929cd404f475d5273b3a40bc99cb724fd7fc0a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / pyfabric-0.1.14-py3-none-any.whl

Download URL pyfabric-0.1.14-py3-none-any.whl
Size 206.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e42786b5e4320668f6f69ddcee7dff3648432695e22eced36bf8d5d408cdf359
BLAKE2b-256 checksum
How to use checksums
70c4ecdcac5137a3c1636bd43422bc000c75c66cd1e710f54c9e505a29fd52b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page