Source code for penaltyblog.betting.odds
"""
Odds Conversion Utilities
"""
from typing import List, Optional, Union
from ..implied.models import OddsFormat, OddsInput
[docs]
def convert_odds(
odds: List[Union[float, str]],
odds_format: Union[str, OddsFormat],
market_names: Optional[List[str]] = None,
) -> List[float]:
"""
Converts odds from a specified format to decimal odds.
This is a convenience function that wraps the functionality from the
`penaltyblog.implied` submodule.
Parameters
----------
odds : List[Union[float, str]]
The odds to convert.
odds_format : str or OddsFormat
The format of the provided odds.
market_names : List[str], optional
Names for each market outcome.
Returns
-------
List[float]
The odds converted to decimal format.
Examples
--------
>>> from penaltyblog.betting import convert_odds
>>> american_odds = [+170, +130, +340]
>>> convert_odds(american_odds, "american")
[2.7, 2.3, 4.4]
>>> fractional_odds = ['7/4', '13/10', '7/2']
>>> convert_odds(fractional_odds, "fractional")
[2.75, 2.3, 4.5]
"""
if isinstance(odds_format, str):
try:
odds_format = OddsFormat(odds_format)
except ValueError:
raise ValueError(f"Unknown odds format: {odds_format}")
odds_input = OddsInput(values=odds, format=odds_format, market_names=market_names)
return odds_input.to_decimal()