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
- Create a new module in
src/dochain_block/auth/ - Inherit from
AuthBlockbase class - Implement required methods:
authenticate(): Main authentication logic- Optional:
validate_credentials(),refresh_credentials()
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f78b7ecc1182ae41723f478a46c9931cd3d83e517e4714e74de58e589b4ae7c4
|
|
| MD5 |
9a5232984ada451f9dd702b134ddb830
|
|
| BLAKE2b-256 |
422ed03ecc9f9074c0aa0c1a8f2c8935158370c10061b9bb275307287d7e548b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a76b846072278685fe18f90b375894249910af8343ca388caddc55d1b6a6064c
|
|
| MD5 |
f4597c979388adf21d2f72935aff91c4
|
|
| BLAKE2b-256 |
b855b6808ae4fbbd0dbad1cf46274bef726247cf4e738277dfea85c555d79f85
|