Registry / ai-ml / openskill

openskill

JSON →
library6.2.0pypypi✓ verified 85d ago

Multiplayer rating system implementing the Weng-Lin models (Plackett-Luce, Bradley-Terry, Thurstone-Mosteller). Pure Python, no dependencies. Version 6.2.0 requires Python ~=3.10. Active development with regular releases.

pip install openskill
INSTALL
IMPORT
SIG · OPENSKILL
O
openskill
ai-mlpythonv6.2.0
Install
1.7s avg
Import
10ms
Disk
18MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v6.2.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.002s · 20.3MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 1.7s · import 0.000s · 21MB
18MB installed
● package 18MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

openskill
import openskill
from openskill import *
Wildcard imports are discouraged; import the module and use its functions.
rate
openskill.rate(t1, t2)

Simple example: two players, one match, team1 wins.

import openskill # Define two teams with one player each team1 = [openskill.Rating(mu=25, sigma=8.33)] team2 = [openskill.Rating(mu=25, sigma=8.33)] # Team1 wins (lower rank is better, ranks default to 0,1,...) team1, team2 = openskill.rate([team1, team2], ranks=[0, 1]) print(team1[0]) print(team2[0])
Debug
Known issues
breakingIn v6.0.0, the `limit_sigma` parameter is no longer implicitly set; you must pass it explicitly if you want sigma to have a floor.
fix
Add `limit_sigma=True` to your rating or create Rating objects with `limit_sigma` parameter.
affects: >=6.0.0
breakingv6.1.3 fixed a critical bug where players could gain infinite rating under certain conditions. Ensure you are on at least 6.1.3.
fix
Upgrade to openskill>=6.1.3.
affects: <6.1.3
deprecatedPython 3.9 support dropped in v6.0.1. Use Python 3.10+.
fix
Use Python >=3.10.
affects: >=6.0.1
gotchaThe `rate` function expects a list of lists (teams) and returns updated teams. Mutating the input objects may lead to unexpected results.
fix
Treat tuples as immutable; do not modify original Rating objects after passing to rate.
affects: all
gotchaRanks are zero-indexed (lower rank = better). If you pass ranks incorrectly, win/loss direction may invert.
fix
Use ranks=[0,1] where team1 is better (lower rank) than team2.
affects: all
Errors
Common errors & fixes
ImportError: cannot import name 'rate' from 'openskill'
Trying to import rate as a top-level function directly, but it's a module function.
fix
Use `import openskill` then `openskill.rate(...)`.
AttributeError: module 'openskill' has no attribute 'Rating'
typo: 'Rating' not 'rating'.
fix
Use `openskill.Rating()` (capital R).
ValueError: A team should have at least one player
Passing an empty list as a team.
fix
Ensure each team has at least one Rating object.
TypeError: __init__() got an unexpected keyword argument 'limit_sigma'
Using a pre-6.0.0 version where limit_sigma wasn't a parameter.
fix
Upgrade to openskill>=6.0.0 or omit the parameter.
Upgrade
Version history
6.2.0latest on PyPI · released Jan 11, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
5 hits · last 30 days
node
4
Amazon
1
Resources
openskill — pip install openskill · libregistry