Sirji messaging protocol implementation to create, validate and parse messages.
Project description
sirji-messages
sirji-messages
is a PyPI package that implements the Sirji message protocol with following highlights:
- Message Factory
- Permissions Matrix (for defining message actions allowed between two agents)
- System prompt generation
Installation
pip install sirji-messages
Features and Usage
Message Parsing
Parse structured message strings into Python dictionaries for easy access to the message components.
from sirji_messages import message_parse
# Example message string to parse
message_str = """```
FROM: CODER
TO: USER
ACTION: INFORM
DETAILS: Welcome to sirji-messages. Here's how you can start.
```"""
# Parsing the message
message = message_parse(message_str)
print(message)
Permission Validation
Determine if a specified action is allowed between two agents based on predefined permission rules.
from sirji_messages import permissions_dict, validate_permission, AgentEnum
# Example check if a CODER can QUESTION a USER
is_allowed = validate_permission("CODER", "USER", "QUESTION")
print(f"Is allowed: {is_allowed}")
# Get a direct look at permissions dictionary for CODER sending to USER
print(permissions_dict[(AgentEnum.CODER, AgentEnum.USER)])
Handling Custom Exceptions
Efficiently manage parsing and validation errors with custom exceptions for improved error handling and debugging.
from sirji_messages import MessageParsingError, MessageValidationError, message_parse
try:
# Attempt parsing an incorrectly formatted message
message_parse("INCORRECT_FORMAT")
except MessageParsingError as e:
print(f"Parsing Error: {e}")
except MessageValidationError as e:
print(f"Validation Error: {e}")
Enums for Intuitive References
Use enums (ActionEnum
, AgentEnum
) to reference actions and agent types programmatically, enhancing code clarity and reducing errors.
from sirji_messages import ActionEnum, AgentEnum
# Example usage of enums for action and agent reference
action = ActionEnum.ACKNOWLEDGE
agent = AgentEnum.CODER
# Accessing enum properties
print(f"Action: {action.name}, Agent: {agent.full_name}")
# Access to enums using [] is also possible
action = ActionEnum['ACKNOWLEDGE']
agent = AgentEnum['CODER']
Factories for Dynamic Message and Prompt Creation
Utilize factories (MessageFactory
, AgentSystemPromptFactory
) to instantiate message and prompt classes dynamically based on enums. It simplifies creating custom messages or retrieving specific system prompts without hardcoding class names.
from sirji_messages import MessageFactory, ActionEnum, AgentSystemPromptFactory, AgentEnum
# Message class instantiation from an action enum
message_class = MessageFactory[ActionEnum.INFORM.name]
print(f"Sample INFORM message:\n{message_class().sample()}")
# Generate message using passed template variables
generated_messages = message_class().generate({"details": "Some sample information."})
print(f"Generated INFORM message:\n{generated_messages}")
# System prompt class instantiation from an agent enum
prompt_class = AgentSystemPromptFactory[AgentEnum.CODER.name]
print(f"CODER system prompt: {prompt_class().system_prompt()}")
Running Tests and Coverage Analysis
Tests can be run, and coverage can be analyzed in a few simple steps:
# Install testing dependencies
pip install pytest coverage
# Execute tests
pytest
# Measure coverage, excluding test files
coverage run --omit="tests/*" -m pytest
coverage report
License
Distributed under the MIT License. See LICENSE
for more information.
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
Hashes for sirji_messages-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6173b5570aefc55424cdc94b79b2a18747c8710e72574eaaff75fb3353e708e9 |
|
MD5 | 33cff63713662bd2c35bdf88fa40b23c |
|
BLAKE2b-256 | 5ed00877a989450f138fb07f31870421a056feb11e0b80b0bbf06d4384d0b459 |