Skip to main content

Prefect Blocks for authentication and connection management

Project description

dochain-block

Prefect Blocks for authentication and connection management.

Overview

dochain-block is a Prefect Block distribution package that provides reusable authentication and connection blocks for various services. The project is designed with a modular architecture to easily add new authentication modules.

Features

  • Modular Authentication Blocks: Each service has its own dedicated authentication block
  • Secure Credential Management: Built on Prefect's secure block system
  • Multiple Authentication Methods: Support for username/password, API keys, tokens, and more
  • Async-First Design: Optimized for Prefect's async execution model
  • Easy Integration: Seamless integration with Prefect flows and deployments

Installation

# Create virtual environment
uv venv
source .venv/bin/activate  # Unix/macOS
# or
.\.venv\Scripts\activate   # Windows

# Install the package
uv pip install -e .

Available Authentication Blocks

NacosBlock

Connect to Nacos service discovery and configuration management platform.

Supported Authentication Methods:

  • Username/Password
  • Access Key/Secret Key
  • Bearer Token

Features:

  • Configuration management
  • Service discovery
  • Health checks
  • Namespace support

Usage Example

from prefect import flow
from dochain_block import NacosBlock

@flow
def nacos_config_flow():
    # Load Nacos block
    nacos = NacosBlock.load("my-nacos-connection")

    # Get configuration
    config = asyncio.run(nacos.get_config("app-config", "DEFAULT_GROUP"))
    return config

# Save block configuration
nacos_block = NacosBlock(
    name="my-nacos-connection",
    server_url="http://localhost:8848/nacos",
    username="nacos",
    password="nacos",
    namespace="public"
)

nacos_block.save("my-nacos-connection")

Development

Adding New Authentication Modules

  1. Create a new module in src/dochain_block/auth/
  2. Inherit from AuthBlock base class
  3. Implement required methods:
    • authenticate(): Main authentication logic
    • Optional: validate_credentials(), refresh_credentials()
  4. Register the block in __init__.py

Example: New Authentication Module

from ..core.base_block import AuthBlock
from pydantic import Field, SecretStr

class MyServiceBlock(AuthBlock):
    """Authentication block for MyService"""

    api_key: SecretStr = Field(..., description="API key for MyService")
    base_url: str = Field(..., description="Base URL for MyService")

    _block_type_name = "MyService Authentication"

    async def authenticate(self, **kwargs):
        # Implement authentication logic
        return {
            "authenticated": True,
            "access_token": "your-token"
        }

Development Commands

# Install development dependencies
uv add --dev pytest pytest-asyncio pytest-cov

# Run tests
uv run pytest

# Run tests with coverage
uv run pytest --cov=dochain_block

# Run example
uv run python examples/nacos_example.py

Requirements

  • Python 3.11+
  • Prefect >= 3.4.24
  • Pydantic >= 2.12.3
  • httpx >= 0.28.1

License

[Add your license information here]

Contributing

[Add contribution guidelines here]

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

dochain_block-0.3.0.tar.gz (212.8 kB view details)

Uploaded Source

Built Distribution

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

dochain_block-0.3.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file dochain_block-0.3.0.tar.gz.

File metadata

  • Download URL: dochain_block-0.3.0.tar.gz
  • Upload date:
  • Size: 212.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dochain_block-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7111b71bf93fb200b0ae596964f6c0a2f9dad57c9d99e6510068ed4766de30f2
MD5 eaa82ed5b916302e7a762ec88b16575d
BLAKE2b-256 47e950082d8a56877b5dbd91e44f31ed6c4a59007fd17162582e741ff1333844

See more details on using hashes here.

File details

Details for the file dochain_block-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: dochain_block-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dochain_block-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b2ba88e63b04824e265b47d13fcec974df7ad104637756f7b6cd840d1705827
MD5 a817aa399b9c719d1f9eddb6209a4a06
BLAKE2b-256 33449cdcdc6d742f03880e4fd4d957517e1fd75d4139f2bf6267b9c2f549eefd

See more details on using hashes here.

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