%global _empty_manifest_terminate_build 0 Name: python-subdivisions Version: 1.47.0 Release: 1 Summary: A55 AWS PubSub Library License: GPL-3.0 URL: https://github.com/access55/subdivisions Source0: https://mirrors.aliyun.com/pypi/web/packages/58/a7/db9f319b703a12de11698fac3c299ca1f2e7d4159e94436a86ebf4344329/subdivisions-1.47.0.tar.gz BuildArch: noarch Requires: python3-arrow Requires: python3-asbool Requires: python3-boto3 Requires: python3-coverage Requires: python3-loguru Requires: python3-mypy Requires: python3-dotenv Requires: python3-stringcase %description # Welcome to Subdivisions [![PyPI](https://img.shields.io/pypi/v/subdivisions)](https://pypi.org/project/subdivisions/) [![Publish](https://github.com/access55/subdivisions/workflows/publish/badge.svg)](https://github.com/access55/subdivisions/actions) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/subdivisions)](https://www.python.org) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [A55 Python library for PubSub Messaging](https://www.youtube.com/watch?v=EYYdQB0mkEU) ### Install in Project ```toml # pyproject.toml # Add in every project which will # receive or send messages [tool.subdivisions] source_name = "ProjectName" # ex.: "Client-Manager" [tool.poetry.dependencies] subdivisions = "*" ``` Run `poetry update` ### Usage #### Send Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED client.send({"foo": "bar"}) ``` #### Receive Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED messages = client.get_messages() # use the ``from_dead_letter=True` to receive Dead Letter messages # Process messages client.delete_received_messages() ``` ### Full Configuration options Configure subdivisions options in `pyproject.toml` file, inside `[tool.subdivisions]` table: ```toml # pyproject.toml [tool.subdivisions] aws_region = "us-east-1" # AWS Region aws_allowed_account = "" # AWS Allowed Account Id for create artifacts / send messages pub_key = "alias/PubSubKey" # KMS PubSubKey (must be created first) sqs_tags = [] # SQS tags for new queues. Example [{"foo": "bar"}] queue_prefix = "" # Prefix for new SQS queues queue_suffix = "" # Suffix for new SQS queues queue_max_receive_count = 1000 # SQS MaxReceiveCount setting sns_prefix = "" # Prefix for new SNS topics sns_suffix = "" # Suffix for new SNS topics sns_tags = [] # SNS tags for new topics. Example [{"foo": "bar"}] event_prefix = "" # Prefix for new Eventbride rules event_suffix = "" # Suffix for new Eventbride rules event_tags = [] # Eventbridge tags for new rules. Example [{"foo": "bar"}] event_bus = "default" # Eventbridge Bus source_name = "" # Eventbridge default source name. No default, must inform auto_create_new_topic = true # Auto create new topic if not exists in Eventbridge auto_remove_from_queue = false # Acknowledge first messages on receive use_aws_env_vars = true # Use AWS default env vars. If false append "SUBDIVISION_" on env vars. Example: "SUBDIVISION_AWS_ACCESS_KEY_ID" default_prefix = "a55" # Default prefix for all sns, sqs and rule created default_suffix = "" # Default suffix for all sns, sqs and rule created ``` 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: ```shell 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: ```python # subdivisions.events 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](https://www.conventionalcommits.org/en/v1.0.0/) Specification, when you can add the `feat:` or `fix:` prefix in your message: ```shell # 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: ```env 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: ```env LOCALSTACK_HOSTNAME_LOCAL="http://localstack:4566" ``` %package -n python3-subdivisions Summary: A55 AWS PubSub Library Provides: python-subdivisions BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-subdivisions # Welcome to Subdivisions [![PyPI](https://img.shields.io/pypi/v/subdivisions)](https://pypi.org/project/subdivisions/) [![Publish](https://github.com/access55/subdivisions/workflows/publish/badge.svg)](https://github.com/access55/subdivisions/actions) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/subdivisions)](https://www.python.org) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [A55 Python library for PubSub Messaging](https://www.youtube.com/watch?v=EYYdQB0mkEU) ### Install in Project ```toml # pyproject.toml # Add in every project which will # receive or send messages [tool.subdivisions] source_name = "ProjectName" # ex.: "Client-Manager" [tool.poetry.dependencies] subdivisions = "*" ``` Run `poetry update` ### Usage #### Send Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED client.send({"foo": "bar"}) ``` #### Receive Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED messages = client.get_messages() # use the ``from_dead_letter=True` to receive Dead Letter messages # Process messages client.delete_received_messages() ``` ### Full Configuration options Configure subdivisions options in `pyproject.toml` file, inside `[tool.subdivisions]` table: ```toml # pyproject.toml [tool.subdivisions] aws_region = "us-east-1" # AWS Region aws_allowed_account = "" # AWS Allowed Account Id for create artifacts / send messages pub_key = "alias/PubSubKey" # KMS PubSubKey (must be created first) sqs_tags = [] # SQS tags for new queues. Example [{"foo": "bar"}] queue_prefix = "" # Prefix for new SQS queues queue_suffix = "" # Suffix for new SQS queues queue_max_receive_count = 1000 # SQS MaxReceiveCount setting sns_prefix = "" # Prefix for new SNS topics sns_suffix = "" # Suffix for new SNS topics sns_tags = [] # SNS tags for new topics. Example [{"foo": "bar"}] event_prefix = "" # Prefix for new Eventbride rules event_suffix = "" # Suffix for new Eventbride rules event_tags = [] # Eventbridge tags for new rules. Example [{"foo": "bar"}] event_bus = "default" # Eventbridge Bus source_name = "" # Eventbridge default source name. No default, must inform auto_create_new_topic = true # Auto create new topic if not exists in Eventbridge auto_remove_from_queue = false # Acknowledge first messages on receive use_aws_env_vars = true # Use AWS default env vars. If false append "SUBDIVISION_" on env vars. Example: "SUBDIVISION_AWS_ACCESS_KEY_ID" default_prefix = "a55" # Default prefix for all sns, sqs and rule created default_suffix = "" # Default suffix for all sns, sqs and rule created ``` 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: ```shell 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: ```python # subdivisions.events 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](https://www.conventionalcommits.org/en/v1.0.0/) Specification, when you can add the `feat:` or `fix:` prefix in your message: ```shell # 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: ```env 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: ```env LOCALSTACK_HOSTNAME_LOCAL="http://localstack:4566" ``` %package help Summary: Development documents and examples for subdivisions Provides: python3-subdivisions-doc %description help # Welcome to Subdivisions [![PyPI](https://img.shields.io/pypi/v/subdivisions)](https://pypi.org/project/subdivisions/) [![Publish](https://github.com/access55/subdivisions/workflows/publish/badge.svg)](https://github.com/access55/subdivisions/actions) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/subdivisions)](https://www.python.org) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [A55 Python library for PubSub Messaging](https://www.youtube.com/watch?v=EYYdQB0mkEU) ### Install in Project ```toml # pyproject.toml # Add in every project which will # receive or send messages [tool.subdivisions] source_name = "ProjectName" # ex.: "Client-Manager" [tool.poetry.dependencies] subdivisions = "*" ``` Run `poetry update` ### Usage #### Send Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED client.send({"foo": "bar"}) ``` #### Receive Messages ```python from subdivisions.client import SubClient from subdivisions.events import UserEvents client = SubClient() client.topic = UserEvents.USER_REGISTERED messages = client.get_messages() # use the ``from_dead_letter=True` to receive Dead Letter messages # Process messages client.delete_received_messages() ``` ### Full Configuration options Configure subdivisions options in `pyproject.toml` file, inside `[tool.subdivisions]` table: ```toml # pyproject.toml [tool.subdivisions] aws_region = "us-east-1" # AWS Region aws_allowed_account = "" # AWS Allowed Account Id for create artifacts / send messages pub_key = "alias/PubSubKey" # KMS PubSubKey (must be created first) sqs_tags = [] # SQS tags for new queues. Example [{"foo": "bar"}] queue_prefix = "" # Prefix for new SQS queues queue_suffix = "" # Suffix for new SQS queues queue_max_receive_count = 1000 # SQS MaxReceiveCount setting sns_prefix = "" # Prefix for new SNS topics sns_suffix = "" # Suffix for new SNS topics sns_tags = [] # SNS tags for new topics. Example [{"foo": "bar"}] event_prefix = "" # Prefix for new Eventbride rules event_suffix = "" # Suffix for new Eventbride rules event_tags = [] # Eventbridge tags for new rules. Example [{"foo": "bar"}] event_bus = "default" # Eventbridge Bus source_name = "" # Eventbridge default source name. No default, must inform auto_create_new_topic = true # Auto create new topic if not exists in Eventbridge auto_remove_from_queue = false # Acknowledge first messages on receive use_aws_env_vars = true # Use AWS default env vars. If false append "SUBDIVISION_" on env vars. Example: "SUBDIVISION_AWS_ACCESS_KEY_ID" default_prefix = "a55" # Default prefix for all sns, sqs and rule created default_suffix = "" # Default suffix for all sns, sqs and rule created ``` 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: ```shell 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: ```python # subdivisions.events 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](https://www.conventionalcommits.org/en/v1.0.0/) Specification, when you can add the `feat:` or `fix:` prefix in your message: ```shell # 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: ```env 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: ```env LOCALSTACK_HOSTNAME_LOCAL="http://localstack:4566" ``` %prep %autosetup -n subdivisions-1.47.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-subdivisions -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Thu Jun 08 2023 Python_Bot - 1.47.0-1 - Package Spec generated