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.15

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.15
File Size Uploaded Provenance Actions
pyfabric-0.1.15.tar.gz 330.7 kB With provenance Details for pyfabric-0.1.15.tar.gz

Built distribution (wheel)

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

Total release size: 537.5 kB

Release files / pyfabric-0.1.15.tar.gz

Download URL pyfabric-0.1.15.tar.gz
Size 330.7 kB
Tags Source
SHA-256 checksum
How to use checksums
69c933712c5e83f5c5ada5b56c2ad70183b6b8f5e9faeceb8f858650d2518c87
BLAKE2b-256 checksum
How to use checksums
0875c7c9d3525a8abfeebd412f0e657f411f58e0b6ad3b63c544ef25475b4e97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 22, 2026.

Transparency log

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

Download URL pyfabric-0.1.15-py3-none-any.whl
Size 206.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fd1e76ded6241ec649c2cf7614d02899a234df22055db8bf43c5b6a83d8d63d
BLAKE2b-256 checksum
How to use checksums
f2fce038f2161e561aa7435ab1c519c7ad43a016822e166d003cde161a068d6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 22, 2026.

Transparency log

Security for pyfabric 0.1.15

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pyfabric-0.1.15.tar.gz

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 Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.15 This release

2 release files Full provenance

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