Metadata-Version: 2.1
Name: apologiesserver
Version: 0.1.8
Summary: Websocket server to interactively play the Apologies game
Home-page: https://github.com/pronovic/apologies-server
License: Apache-2.0
Author: Kenneth J. Pronovici
Author-email: pronovic@ieee.org
Requires-Python: >=3.7,<4.0
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Games/Entertainment :: Board Games
Requires-Dist: apologies (>=0.1.22,<0.2.0)
Requires-Dist: asyncio-periodic (>=2019.2,<2020.0)
Requires-Dist: ordered-set (>=4.0.1,<5.0.0)
Requires-Dist: websockets (>=8.1,<9.0)
Project-URL: Repository, https://github.com/pronovic/apologies-server
Description-Content-Type: text/markdown

# Apologies Server

![](https://img.shields.io/pypi/l/apologiesserver.svg)
![](https://img.shields.io/pypi/wheel/apologiesserver.svg)
![](https://img.shields.io/pypi/pyversions/apologiesserver.svg)
![](https://github.com/pronovic/apologies-server/workflows/Test%20Suite/badge.svg)
![](https://readthedocs.org/projects/apologies-server/badge/?version=latest&style=flat)

[Apologies Server](https://github.com/pronovic/apologies-server) is a [Websocket](https://en.wikipedia.org/wiki/WebSocket) server interface used to interactively play a multi-player game using the [Apologies](https://github.com/pronovic/apologies) library.  The Apologies library implements a game similar to the [Sorry](https://en.wikipedia.org/wiki/Sorry!_(game)) board game.  

It was written as a learning exercise and technology demonstration effort, and serves as a complete example of how to manage a modern (circa 2020) Python project, including style checks, code formatting, integration with IntelliJ, [CI builds at GitHub](https://github.com/pronovic/apologies-server/actions), and integration with [PyPI](https://pypi.org/project/apologiesserver/) and [Read the Docs](https://apologies-server.readthedocs.io/en/latest/).  

See the [documentation](https://apologies-server.readthedocs.io/en/latest/design.html) for notes about the public interface and the event model.

As of this writing, the published PyPI project does not include a script to run
the server. The only way to run it is from the codebase, for local testing. See
the [developer](https://github.com/pronovic/apologies-server/blob/master/DEVELOPER.md#running-the-server) documentation
at GitHub for more information.

As a technology demonstration effort, the Apologies Server is fairly
simplistic.  It runs as a single stateful process that maintains game state in
memory.  It cannot be horizontally scaled, and there is no option for an
external data store.  There is also only limited support for authentication and
authorization - any player can register any handle that is not currently being
used.  We do enforce resource limits (open connections, registered users,
in-progress games) to limit the amount of damage abusive clients can do.

