Skip to main content

Sirji messaging protocol implementation to create, validate and parse messages.

Project description

sirji-messages

sirji-messages is a comprehensive Python package for creating, parsing, validating, and managing message interactions based on permissions in multi-agent systems or applications.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sirji-messages-0.0.3.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sirji_messages-0.0.3-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file sirji-messages-0.0.3.tar.gz.

File metadata

  • Download URL: sirji-messages-0.0.3.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.5

File hashes

Hashes for sirji-messages-0.0.3.tar.gz
Algorithm Hash digest
SHA256 04e96ec1cf7298c66645d0a72a5d473cbe4306f621c86655f313895366ff0f8a
MD5 b49c58824cd7eab3f2241d2f6b274cfb
BLAKE2b-256 1a04e7e4cfa4de397a8babe2302fc1a3b9a8943190bb90837ff51e8345a6d672

See more details on using hashes here.

File details

Details for the file sirji_messages-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: sirji_messages-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.5

File hashes

Hashes for sirji_messages-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 00035132f7a13df1ec95c1d4382292fc14fa4ed31a5c9398e4d5080940f86f8d
MD5 f79906f6ecde96968bf309a4bf2e41ad
BLAKE2b-256 933f3336ac553b54f49f35418f62d98fcf1ea5081e95f0ab34414537fe9a204b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page