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
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 sirji-messages-0.0.7.tar.gz.
File metadata
- Download URL: sirji-messages-0.0.7.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c13b16c1d7bd5db5a19bd57716acba5819e2d9a1f352ce1612d69c5b3111205b
|
|
| MD5 |
187c9f7a7ad9bf939b3071700a44556e
|
|
| BLAKE2b-256 |
250fce33b958b10d49658da98af96fe8029289822968952893e499d7373ea186
|
File details
Details for the file sirji_messages-0.0.7-py3-none-any.whl.
File metadata
- Download URL: sirji_messages-0.0.7-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
040c2a377eaddfa54c991fab0b7d26fa73d6e2d1d990b362ab469702395c2c7e
|
|
| MD5 |
5156decd928f1e8d1c6c9c591d4fadb3
|
|
| BLAKE2b-256 |
0a8afc5d787c3ab4e74ce8614912c4f4179edcdd001fd047294a77190adfe48a
|