Skip to content

Blueprint .build() and .get_user_function() missing from PyPI 1.4.0 release (present in repo/tag) #590

@Mirabis

Description

@Mirabis

🐛 Describe the bug

The official documentation and repo samples for Durable Functions Python v2 (Blueprint pattern) show a .build().get_user_function().orchestrator_function accessor for orchestrator unit testing. However, after installing azure-functions-durable==1.4.0 from PyPI, neither DFApp nor Blueprint exposes a .build() method. This makes it impossible to use the recommended test pattern for orchestrators.

🤔 Expected behavior

The .build() method (and .get_user_function()) should be available as shown in the official repo and samples for v1.4.0, enabling the following test pattern:

orchestrator = bp.build().get_user_function().orchestrator_function

This is important for maintainable, idiomatic unit tests using the Blueprint pattern.

Steps to reproduce

  • Install the latest SDK:
    pip install azure-functions-durable==1.4.0
  • Try to access .build() on a Blueprint or DFApp instance:
    from azure.durable_functions.decorators.durable_app import Blueprint, DFApp
    bp = Blueprint()
    app = DFApp()
    bp.build()  # AttributeError
    app.build()  # AttributeError
  • Observe error:
    AttributeError: 'Blueprint' object has no attribute 'build'
    
  • Official sample using .build()

Pattern: Durable Functions v2, Blueprint pattern, local development (macOS, Python 3.13).

If deployed to Azure

N/A – this is a local development/testing issue with the SDK package.

  • Timeframe issue observed: Ongoing since v1.4.0 release
  • Function App name: N/A
  • Function name(s): N/A
  • Azure region: N/A
  • Orchestration instance ID(s): N/A
  • Azure storage account name: N/A

Additional context:

  • The repo/tag for 1.4.0 includes .build() and the new test pattern, but the PyPI release does not.
  • This blocks adoption of the official Blueprint unit test pattern and causes confusion for users following the docs.
  • Please ensure the next PyPI release includes the .build() and .get_user_function() APIs as present in the repo/tag, or clarify in the docs if a dev/nightly build is required.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions