Compare commits

..

1 Commits

Author SHA1 Message Date
420f351a06 PD v2 Post-Processing block
All checks were successful
Build and Push Docker Image / test (push) Successful in 8s
Build and Push Docker Image / build_and_push (push) Successful in 21s
2025-02-05 19:24:24 +00:00
6 changed files with 78 additions and 23 deletions

View File

@ -1 +1,11 @@
**Hello world!!!**
## Overview
This block (`block.py`) is responsible for assigning grades for the passed in probability.
## Key Inputs & Outputs
- **Request**: Refer to `request_schema.json` for detailed input fields and validation rules.
- **Response**: Refer to `response_schema.json` for the returned structure and data types.
## Implementation Details
- All core logic resides in `block.py` within the `__main__` function.
- Example usage and validation are demonstrated in `test_block.py`.

View File

@ -1,21 +1,32 @@
@flowx_block
def example_function(request: dict) -> dict:
import logging
# Processing logic here...
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s - %(message)s",
)
logger = logging.getLogger(__name__)
return {
"meta_info": [
{
"name": "created_date",
"type": "string",
"value": "2024-11-05"
}
],
"fields": [
{
"name": "",
"type": "",
"value": ""
}
]
}
def __main__(probability:float):
logger.info("Received input: probability=%.8f", float(probability))
if not isinstance(probability, (int, float)):
logger.error("Invalid input type: probability=%s", type(probability).__name__)
raise ValueError("Input probability must be a number (int or float)")
if probability <= 0.26:
grade = "A1"
elif 0.26 < probability <= 0.38:
grade = "A2"
elif 0.38 < probability <= 0.52:
grade = "B1"
elif 0.52 < probability <= 0.652:
grade = "B2"
elif 0.652 < probability <= 0.7:
grade = "C1"
else:
grade = "C2"
logger.info(f"PD V2 Grade: {grade}")
return {"grade":grade}

View File

@ -1 +1,11 @@
{}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"probability": {
"type": "number",
"description": "Model predicted score."
}
},
"required": []
}

View File

@ -1 +1 @@
{}
jsonschema==4.23.0

View File

@ -1 +1,10 @@
{}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"grade": {
"type": "string",
"description": "PD v2 grade."
}
}
}

15
test_block.py Normal file
View File

@ -0,0 +1,15 @@
import unittest
from block import __main__
class TestBlock(unittest.TestCase):
def test_main_success(self):
result = __main__(probability=0.40)
self.assertEqual(result, {"grade": "B1"})
def test_main_invalid_input(self):
with self.assertRaises(ValueError):
__main__(probability="0.40")
if __name__ == "__main__":
unittest.main()