Metadata-Version: 2.1
Name: algobowl
Version: 2024.2.13.1
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.8,<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
Provides-Extra: dev
Requires-Dist: TurboGears2 >=2.3.12 ; 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 ; extra == 'dev'
Requires-Dist: WebHelpers2 ; extra == 'dev'
Requires-Dist: recordclass ; extra == 'dev'
Requires-Dist: cryptography ; extra == 'dev'
Requires-Dist: requests ; extra == 'dev'
Requires-Dist: tg.devtools ; extra == 'dev'
Provides-Extra: web
Requires-Dist: TurboGears2 >=2.3.12 ; 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 ; extra == 'web'
Requires-Dist: WebHelpers2 ; extra == 'web'
Requires-Dist: recordclass ; extra == 'web'
Requires-Dist: cryptography ; extra == 'web'
Requires-Dist: requests ; extra == 'web'

# 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.8+.

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!
