Pythonic DCP(Bifrost2) Wrapper
Project description
PDCP - Pythonic DCP Wrapper
PDCP is a Python package that provides a more Pythonic interface to the DCP Python SDK (Bifrost2). It simplifies the interaction with DCP services by providing a clean, type-hinted interface for job management and computation.
Features
- Type-Safe Configuration: Full type hints using TypedDict for job configuration
- Event Handling: Flexible event subscription system for job monitoring
- Job Chaining: Basic workflow management through job dependencies
- Compute Groups: Support for DCP compute group management
- Streaming Slices: Optional streaming support for job slices
Quick Start
from pdcp import Job, JobConfig
# Define your work function
def work(x, a):
dcp.progress()
return x * a
# Configure your job
config: JobConfig = {
"name": "test",
"work_function": work,
"slices": [1, 2, 3],
"constant_params": [3],
"compute_groups": [{"joinKey": "sheridan", "joinSecret": "dcp"}]
}
# Create and configure the job
job = Job(config)
# Subscribe to job events
job.subscribe_to({
"readystatechange": print,
"accepted": lambda _: print(f'accepted: {job.id}'),
"result": lambda e: print(f'result: {e.result}'),
"status": lambda e: print(f'status: {e.runStatus}')
})
# Execute the job
job.dispatch()
results = job.get_results()
print(results)
Job Configuration
The JobConfig TypedDict provides a type-safe way to configure jobs:
class JobConfig(TypedDict):
name: str # Name of the job
work_function: callable # Function to be executed
slices: NotRequired[list] # Input data slices
stream_slices: NotRequired[bool] # Enable/disable slice streaming
constant_params: NotRequired[list[any]] # Constant parameters for work function
compute_groups: NotRequired[list[ComputeGroup]] # DCP compute groups
Event Handling
Jobs support various events that can be subscribed to:
job.subscribe_to({
"readystatechange": handler, # Job state changes
"accepted": handler, # Job accepted by DCP
"result": handler, # New result available
"complete": handler, # Job completed
"console": handler, # Console output
"status": handler # Status updates
})
Job Chaining
Basic job chaining is supported through the chain method:
# Create and chain jobs
job1 = Job(config1)
job2 = Job(config2)
job1.chain(job2) # job2 will be executed after job1
Compute Groups
Support for DCP compute groups:
config: JobConfig = {
"name": "my_job",
"work_function": work,
"compute_groups": [
{
"joinKey": "group_name",
"joinSecret": "secret"
}
]
}
Streaming Slices
Enable streaming slices for continuous data processing:
config: JobConfig = {
"name": "streaming_job",
"work_function": work,
"stream_slices": True, # Enable streaming
"slices": initial_slices
}
job = Job(config)
# Add more slices later
job.add_slices(new_slices)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
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 pdcp-1.0.0.tar.gz.
File metadata
- Download URL: pdcp-1.0.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1014-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a9540c12c3fa701a22c6d4a0471315551617aebb71b431318e4e8ea0e57b406
|
|
| MD5 |
8b462535d160472a710fa7645d7d21ff
|
|
| BLAKE2b-256 |
d7426a008bab13f1c5dd1ce46766283c47196f63024714abaa2cc56f540abf3c
|
File details
Details for the file pdcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pdcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1014-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6200dfb79706fa9bf7a442b8601560f99335ee733c6f9d9b340151546b5bdd1
|
|
| MD5 |
2b3d1ce07bfcaa24445ee11423de51a5
|
|
| BLAKE2b-256 |
8b4108b3c6a751c6cba063ec2f2ae792c0e5a3ffdd190de4566547e3dc6a3986
|