setup.py
to pyproject.toml
.gtnash.game.normalformgame
:generate_joint_actions
has a simplified definition using generators. This skips generating individual joint actions by hand.expected_utilities
simply calls expected_utilities_of_n
n_players
number of times, once for each player. The old code was doing this with code duplication.expected_utilities_of_n
now uses NumPy code instead of working with pure Python - time spent in the callback accounts for 20% of total time, as opposed to 87% black
on the entire codebase, due to my editor setup (désolé!)