Metadata-Version: 2.1
Name: notifelect
Version: 0.0.2
Summary: A distributed leader election python package using postgresql notify.
Author: janbjorge
License: MIT License
Project-URL: Documentation, https://github.com/janbjorge/notifelect/wiki
Project-URL: Homepage, https://github.com/janbjorge/notifelect/
Project-URL: Issues, https://github.com/janbjorge/notifelect/issues
Project-URL: Repository, https://github.com/janbjorge/notifelect/
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: asyncpg
Requires-Dist: pydantic>=2.0.0
Provides-Extra: dev
Requires-Dist: asyncpg; extra == "dev"
Requires-Dist: asyncpg-stubs; extra == "dev"
Requires-Dist: mypy-extensions; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Provides-Extra: docs
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"

# **notifelect: A Distributed Leader Election Python Package Using PostgreSQL NOTIFY**

Notifelect is an python package designed to facilitate leader election in distributed systems. Utilizing PostgreSQL's powerful notify feature, notifelect orchestrates the election process through efficient communication channels, ensuring robust process synchronization. Built on the principles of the Bully algorithm, this package helps systems dynamically elect leaders based on process IDs managed via PostgreSQL sequences. Ideal for systems requiring high reliability and consistency across nodes, notifelect integrates seamlessly into existing python applications leveraging asynchronous programming.

Key Features:
- **Leader Election**: Implements the Bully election algorithm using PostgreSQL for process ID generation and leader election logic.
- **Asynchronous Communication**: Leverages PostgreSQL notify for real-time, event-driven communication between nodes.
- **Easy Integration**: Designed with a straightforward API to plug into existing projects.

Get started with `notifelect` to enhance your distributed systems with efficient and reliable leader election mechanisms.
