Skip to main content

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]

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.3.tar.gz (213.9 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.3-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dochain_block-0.3.3.tar.gz
  • Upload date:
  • Size: 213.9 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.3.tar.gz
Algorithm Hash digest
SHA256 f78b7ecc1182ae41723f478a46c9931cd3d83e517e4714e74de58e589b4ae7c4
MD5 9a5232984ada451f9dd702b134ddb830
BLAKE2b-256 422ed03ecc9f9074c0aa0c1a8f2c8935158370c10061b9bb275307287d7e548b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dochain_block-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 9.0 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a76b846072278685fe18f90b375894249910af8343ca388caddc55d1b6a6064c
MD5 f4597c979388adf21d2f72935aff91c4
BLAKE2b-256 b855b6808ae4fbbd0dbad1cf46274bef726247cf4e738277dfea85c555d79f85

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.1.0

2 files

Supported by

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