Welcome to Subdivisions
A55 Python library for PubSub Messaging
Install in Project
[tool.subdivisions]
source_name = "ProjectName"
[tool.poetry.dependencies]
subdivisions = "*"
Run poetry update
Usage
Send Messages
from subdivisions.client import SubClient
from subdivisions.events import UserEvents
client = SubClient()
client.topic = UserEvents.USER_REGISTERED
client.send({"foo": "bar"})
Receive Messages
from subdivisions.client import SubClient
from subdivisions.events import UserEvents
client = SubClient()
client.topic = UserEvents.USER_REGISTERED
messages = client.get_messages()
client.delete_received_messages()
Full Configuration options
Configure subdivisions options in pyproject.toml
file, inside [tool.subdivisions]
table:
[tool.subdivisions]
aws_region = "us-east-1"
aws_allowed_account = ""
pub_key = "alias/PubSubKey"
sqs_tags = []
queue_prefix = ""
queue_suffix = ""
queue_max_receive_count = 1000
sns_prefix = ""
sns_suffix = ""
sns_tags = []
event_prefix = ""
event_suffix = ""
event_tags = []
event_bus = "default"
source_name = ""
auto_create_new_topic = true
auto_remove_from_queue = false
use_aws_env_vars = true
default_prefix = "a55"
default_suffix = ""
All options above can be configured in environment variables. Just append SUBDIVISIONS_
on name. Example: SUBDIVISIONS_SOURCE_NAME="my_project"
Local Development
For local development, please first clone and install this project:
git clone git@github.com:access55/subdivisions.git /path/to/project
cd /path/to/project
# Install on WSL/Linux
make install
# Install on Powershell
poetry install
Example: Adding a new Topic
To avoid different names in different projects for the same topic, (i.e: "client_registered" and
"customer_registered") please add new events using Python Enum on subdivisions.event
module:
from enum import unique, Enum
@unique
class MyNewEvents(Enum):
MY_NEW_EVENT = "my_new_event"
Commit using a conventional commit message
To generate a new PyPI version, at least one commit must following the
Conventional Commit Specification, when you can
add the feat:
or fix:
prefix in your message:
# Create a new patch event. Ex. 1.0.0 to 1.0.1
git commit -m "fix: Event Bug"
# Create a new minor event. Ex. 1.0.0 to 1.1.0
git commit -m "feat: Add New Event"
# Create a new major event. Ex. 1.0.0 to 2.0.0
git commit -m "feat!: Add New Event \n\nBREAKING CHANGE: API changed"
Without a feat:
or fix:
prefixed commited message, code will not generate a new PyPI version.
Using AWS Credentials locally
Subdivisions will use AWS default environment variables. If you need to define another credentials, use the following variables:
SUBDIVISIONS_USE_AWS_ENV_VARS="false"
SUBDIVISIONS_AWS_ACCESS_KEY_ID="your id"
SUBDIVISIONS_AWS_SECRET_ACCESS_KEY="your key"
SUBDIVISIONS_AWS_SESSION_TOKEN="your token" # optional
Using Subdivisions in LOCALSTACK
To use with localstack, you need to activate the sqs, sns, events, and kms services and add them to your .env file:
LOCALSTACK_HOSTNAME_LOCAL="http://localstack:4566"