Metadata-Version: 2.4
Name: algobowl
Version: 2025.8.31.0
Summary: Competition-based group project for Algorithms courses
Home-page: https://github.com/jackrosenthal/algobowl
Author: Jack Rosenthal
Author-email: jack@rosenth.al
Requires-Python: >=3.9,<4
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.0
Requires-Dist: pytest>=4.6
Requires-Dist: pytest-cov>=4.1.0
Requires-Dist: requests>=2.0
Requires-Dist: tabulate>=0.8
Requires-Dist: toml>=0.10
Requires-Dist: typing-extensions
Provides-Extra: web
Requires-Dist: TurboGears2==2.4.3; extra == "web"
Requires-Dist: tgext.admin-jmr; extra == "web"
Requires-Dist: decorator; extra == "web"
Requires-Dist: google-api-python-client; extra == "web"
Requires-Dist: google-auth-oauthlib; extra == "web"
Requires-Dist: tw2.forms; extra == "web"
Requires-Dist: Beaker>=1.8.0; extra == "web"
Requires-Dist: Kajiki>=0.6.3; extra == "web"
Requires-Dist: filedepot>=0.6.0; extra == "web"
Requires-Dist: zope.sqlalchemy>=1.2; extra == "web"
Requires-Dist: sqlalchemy<1.4,>=1.3; extra == "web"
Requires-Dist: alembic>=0.8.8; extra == "web"
Requires-Dist: repoze.who==3.0.0; extra == "web"
Requires-Dist: WebHelpers2; extra == "web"
Requires-Dist: requests; extra == "web"
Provides-Extra: dev
Requires-Dist: TurboGears2==2.4.3; extra == "dev"
Requires-Dist: tgext.admin-jmr; extra == "dev"
Requires-Dist: decorator; extra == "dev"
Requires-Dist: google-api-python-client; extra == "dev"
Requires-Dist: google-auth-oauthlib; extra == "dev"
Requires-Dist: tw2.forms; extra == "dev"
Requires-Dist: Beaker>=1.8.0; extra == "dev"
Requires-Dist: Kajiki>=0.6.3; extra == "dev"
Requires-Dist: filedepot>=0.6.0; extra == "dev"
Requires-Dist: zope.sqlalchemy>=1.2; extra == "dev"
Requires-Dist: sqlalchemy<1.4,>=1.3; extra == "dev"
Requires-Dist: alembic>=0.8.8; extra == "dev"
Requires-Dist: repoze.who==3.0.0; extra == "dev"
Requires-Dist: WebHelpers2; extra == "dev"
Requires-Dist: requests; extra == "dev"
Requires-Dist: setuptools<80,>=79; extra == "dev"
Requires-Dist: tg.devtools==2.4.3; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# AlgoBOWL

AlgoBOWL is a group project for algorithms courses.  Students compete to create
heuristics to an NP-hard problem.  For more information, see the paper in
[ITiCSE 2019](https://doi.org/10.1145/3304221.3319761).

This is the AlgoBOWL web application, as well as associated tools (e.g., command
line interface).

## Getting Started

The rest of this `README` assumes you're interested in hacking on the AlgoBOWL
code, and want to install the web app locally.  For other topics of interest,
check out the `docs/` directory.

You'll need a system running Linux and Python 3.9+.

Create and activate a virtual environment to install in:

```shellsession
$ python3 -m venv venv
$ . venv/bin/activate
```

Next, install the app in editable mode::

```shellsession
$ pip install -e ".[dev]"
```

Next, copy the sample development config and setup the application::

```shellsession
$ cp development.ini.sample development.ini
$ gearbox setup-app
```

Finally, you can serve the app::

```shellsession
$ gearbox serve --reload --debug
```

Have fun!
