An open API service indexing awesome lists of open source software.

https://github.com/peterjclaw/libproton

A python library which simpliefies the creation of a Proton compliant scorer.
https://github.com/peterjclaw/libproton

srcomp

Last synced: 8 days ago
JSON representation

A python library which simpliefies the creation of a Proton compliant scorer.

Awesome Lists containing this project

README

          

# LibProton

[![CircleCI](https://circleci.com/gh/PeterJCLaw/libproton.svg?style=svg)](https://circleci.com/gh/PeterJCLaw/libproton)

This is a library which simplifies the task of creating
[Proton](https://github.com/PeterJCLaw/proton) compliant scoring scripts.

It supports Python 3.7+.

## Install

Install [from PyPI](https://pypi.org/project/libproton/):

``` shell
pip install libproton
```

## API

The following is a complete and minimal Proton compliant scorer, and shows
the expected usage of the library.

~~~~ python
#!/usr/bin/env python

import libproton

class Scorer:
def __init__(self, teams_data, arena_data):
self._teams_data = teams_data
self._arena_data = arena_data

def calculate_scores(self):
"""Main scoring entry point.

Expected to return a mapping of TLA -> score for each team in
the input data. Errors either in the input or otherwise should
be handled by raising exceptions.
"""
scores = {}
for tla in self._teams_data.keys():
scores[tla] = 4
return scores

def validate(self, extra_data):
"""An optional additional method to validate the scoresheet.

If this method is implemented it will be called with the value
of the ``other`` key from the input. If the key is not present
then this method will still be called (with ``None``).

If there are validation errors the this method should raise
an exception about them.
"""
pass

if __name__ == '__main__:
libproton.main(Scorer)
~~~~

## Tests

Run `./script/test`.