Skip to main content

Fluent builder API for Adaptive Cards

Project description

FluentCards — Python

CI PyPI Python License: MIT

A Python library for building Adaptive Cards using a fluent builder pattern with strong typing and built-in schema validation.

Also available for .NET (NuGet), Node.js (npm), and Go.

Installation

pip install fluent-cards

Quick Start

from fluent_cards import AdaptiveCardBuilder, TextSize, TextWeight, to_json

card = (AdaptiveCardBuilder.create()
    .with_version('1.5')
    .add_text_block(lambda tb: tb
        .with_text('Hello, FluentCards!')
        .with_size(TextSize.Large)
        .with_weight(TextWeight.Bolder)
        .with_wrap(True))
    .build())

print(to_json(card))

Output:

{
  "type": "AdaptiveCard",
  "version": "1.5",
  "body": [
    {
      "type": "TextBlock",
      "text": "Hello, FluentCards!",
      "size": "Large",
      "weight": "Bolder",
      "wrap": true
    }
  ]
}

Features

  • Fluent builder API — chainable, readable card construction
  • Strong typing — enums for all Adaptive Cards schema values (TextSize, TextWeight, Colors, ContainerStyle, etc.)
  • Built-in validation — catches schema errors before the card is sent
  • Zero dependencies — pure Python, no third-party packages required
  • Full schema support — TextBlock, Image, ColumnSet, Container, FactSet, ActionSet, and more

More Examples

Card with image and actions

from fluent_cards import AdaptiveCardBuilder, TextSize, TextWeight, ActionStyle

card = (AdaptiveCardBuilder.create()
    .with_version('1.5')
    .add_text_block(lambda tb: tb
        .with_text('Order Confirmed')
        .with_size(TextSize.Large)
        .with_weight(TextWeight.Bolder))
    .add_text_block(lambda tb: tb
        .with_text('Your order #12345 has been placed.')
        .with_wrap(True))
    .add_action(lambda a: a
        .open_url('https://example.com/track/12345')
        .with_title('Track Order'))
    .build())

Card with columns

from fluent_cards import AdaptiveCardBuilder

card = (AdaptiveCardBuilder.create()
    .with_version('1.5')
    .add_column_set(lambda cs: cs
        .add_column(lambda col: col
            .with_width('auto')
            .add_text_block(lambda tb: tb.with_text('Name:')))
        .add_column(lambda col: col
            .with_width('stretch')
            .add_text_block(lambda tb: tb.with_text('Jane Doe'))))
    .build())

Using choices (Input.ChoiceSet)

from fluent_cards import AdaptiveCardBuilder

card = (AdaptiveCardBuilder.create()
    .with_version('1.5')
    .add_input_choice_set(lambda cs: cs
        .with_id('priority')
        .with_label('Priority')
        .add_choice('High', 'high')
        .add_choice('Medium', 'medium')
        .add_choice('Low', 'low'))
    .build())

Validation

from fluent_cards import AdaptiveCardBuilder, validate

card = AdaptiveCardBuilder.create().build()  # no version set
errors = validate(card)

for error in errors:
    print(error)

API Reference

See the full API docs for all builder methods and enums.

Development

git clone https://github.com/rido-min/FluentCards.git
cd FluentCards/python
pip install -e ".[dev]"
pytest

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluent_cards-0.1.0b14.tar.gz (41.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fluent_cards-0.1.0b14-py3-none-any.whl (39.2 kB view details)

Uploaded Python 3

File details

Details for the file fluent_cards-0.1.0b14.tar.gz.

File metadata

  • Download URL: fluent_cards-0.1.0b14.tar.gz
  • Upload date:
  • Size: 41.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fluent_cards-0.1.0b14.tar.gz
Algorithm Hash digest
SHA256 3b854a828088a8362ab58fb669eb16232ad985dcacc73753fb418f22182754a5
MD5 7f0535bfa229bd305ae895fe1e6e8ab5
BLAKE2b-256 32e1222fac97ffeb33b516cee735fb3dee0bf1b9dba35d4963cf0d925f9fec84

See more details on using hashes here.

Provenance

The following attestation bundles were made for fluent_cards-0.1.0b14.tar.gz:

Publisher: cd.yml on rido-min/FluentCards

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fluent_cards-0.1.0b14-py3-none-any.whl.

File metadata

  • Download URL: fluent_cards-0.1.0b14-py3-none-any.whl
  • Upload date:
  • Size: 39.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fluent_cards-0.1.0b14-py3-none-any.whl
Algorithm Hash digest
SHA256 3057c6785be5e116aa010bd33050bfcd82c5d38de9d89f0dbd42662c6711be52
MD5 b2bee03b2880a3f8cce5d63be4131257
BLAKE2b-256 050eb82bf8d2ff4609f420782333c2a2fef9b2b90100cdb63b050b45b2461c14

See more details on using hashes here.

Provenance

The following attestation bundles were made for fluent_cards-0.1.0b14-py3-none-any.whl:

Publisher: cd.yml on rido-min/FluentCards

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page