Metadata-Version: 2.4
Name: kipjak
Version: 1.0.26
Summary: Concurrency via multithreading, multiprocessing and multihosting
Author-email: "S. Woods" <scott.suzuki@gmail.com>
License-Expression: MIT
Project-URL: Discussion, https://www.reddit.com/r/kipjak/
Project-URL: Documentation, https://kipjak-manual.s3.ap-southeast-2.amazonaws.com/1.0.0/index.html
Keywords: concurrency,multithreading,multiprocessing,asynchronous,networking
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cffi
Requires-Dist: PyNaCl
Requires-Dist: ply
Dynamic: license-file

*s*•**kipja**•*c*•**k**

A small, pelagic fish from the tuna family. Found in large schools in the
tropical and sub-tropical oceans of the world.

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/kipjak)
![PyPI - Version](https://img.shields.io/pypi/v/kipjak)
![PyPI - Coverage](https://img.shields.io/badge/coverage-75%25-brightgreen)
![PyPI - Integration](https://img.shields.io/badge/integration-passing-cyan)

---

The **kipjak** library is applicable to;

* **Large, multiprocess website backends**
* **Applications with complex multithreading requirements**
* **Components requiring one or more subprocesses**
* **Complex, distributed process control systems**

---

The technical goal of the **kipjak** library is to deliver software communications, wherever the
relevant software entities may be located. At the lowest level this involves a message-driven
framework providing for seamless communication between threads, processes and hosts. At higher
levels it delivers responsiveness, concurrency and clarity.

* Sophistication with clarity ••• *separation from the details of threads and networks*
* Quick on-boarding ••• *cookbook of multithreading, multiprocessing and multihosting solutions*
* Optimal throughput ••• *load distribution across threads, processes and hosts*
* Quality client feedback ••• *negative responses to requests during periods of heavy load*
* Simple leveraging of sub-processes ••• *load child processes as callable libraries*
* Process orchestration ••• *definition and execution of persisted process groups*
* System daemons ••• *foreground or background execution*
* True application messaging ••• *send and receive application values; Person, list[Person], dict[UUID,Person], bool, etc*
* Broker-less communicatins ••• *no middleware, no additional hop, no additional latency*
* Publish-subscribe networking ••• *networking without network addresses*
* Industrial-grade encryption ••• *NaCl (Salt)*
* Automated transport monitoring ••• *discreet keep-alive protocol*
* HTTP integration ••• *RPC or RESTful APIs*
* Technical support ••• *baked-in logging, log storage and log recovery*

A few comparisons of related technologies with **kipjak**;

* HTTP is a blocking, request-response model ••• *fundamentally asynchronous with HTTP integration*
* [ZeroMQ](https://zeromq.org) delegates message serialization, e.g. to [protobuf](https://protobuf.dev) ••• *sends and receives final application values*
* [NATS](https://nats.io) is broker-based middleware ••• *uses direct peer-to-peer connections*
