From 42e6e9c4579fea6dda401f853820558cbd4f9449 Mon Sep 17 00:00:00 2001 From: rahulsavani Date: Tue, 4 Nov 2025 12:55:24 +0000 Subject: [PATCH 1/7] bug fix in _resolve_infoset --- src/pygambit/game.pxi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pygambit/game.pxi b/src/pygambit/game.pxi index 5806cf6bf..90a044ffe 100644 --- a/src/pygambit/game.pxi +++ b/src/pygambit/game.pxi @@ -1533,7 +1533,7 @@ class Game: except KeyError: raise KeyError(f"{funcname}(): no information set with label '{infoset}'") raise TypeError( - f"{funcname}(): {argname} must be Infoset or str, not {node.__class__.__name__}" + f"{funcname}(): {argname} must be Infoset or str, not {infoset.__class__.__name__}" ) def _resolve_action(self, From 455d603b6a95cb6dbbd39dabc0b4eea06a10b5b0 Mon Sep 17 00:00:00 2001 From: Rahul Savani Date: Wed, 5 Nov 2025 09:47:45 +0000 Subject: [PATCH 2/7] typo in tools.lcp.rst (#581) --- doc/tools.lcp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tools.lcp.rst b/doc/tools.lcp.rst index 14795d9bf..c17e636d8 100644 --- a/doc/tools.lcp.rst +++ b/doc/tools.lcp.rst @@ -9,7 +9,7 @@ computes Nash equilibria by finding solutions to a linear complementarity problem. For extensive games, the program uses the sequence form representation of the extensive game, as defined by Koller, Megiddo, and von Stengel [KolMegSte94]_, and applies the -algorithm developed by Lemke. For strategic games, the program using +algorithm developed by Lemke. For strategic games, the program uses the method of Lemke and Howson [LemHow64]_. There exist strategic games for which some equilibria cannot be located by this method; see Shapley [Sha74]_. From 32367e411766ee8ab233b97993fac325a1c08004 Mon Sep 17 00:00:00 2001 From: Ted Turocy Date: Mon, 24 Nov 2025 10:26:56 +0000 Subject: [PATCH 3/7] Bump actions/checkout to v6 (#640) --- .github/workflows/lint.yml | 10 +++++----- .github/workflows/osxbinary.yml | 2 +- .github/workflows/python.yml | 8 ++++---- .github/workflows/tools.yml | 8 ++++---- .github/workflows/wheels.yml | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b4a86f896..5b42ef36d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,7 +9,7 @@ jobs: name: clang-format runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Run clang-format style check for C/C++ uses: jidicula/clang-format-action@v4.14.0 with: @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Install dependencies run: | sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc @@ -37,14 +37,14 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: chartboost/ruff-action@v1 flake8: runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: python-version: "3.12" @@ -54,7 +54,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Python uses: actions/setup-python@v6 with: diff --git a/.github/workflows/osxbinary.yml b/.github/workflows/osxbinary.yml index 80ac080df..dd7cd3392 100644 --- a/.github/workflows/osxbinary.yml +++ b/.github/workflows/osxbinary.yml @@ -12,7 +12,7 @@ jobs: runs-on: macos-13 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Install dependencies run: | brew install automake autoconf diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index cdd472130..2dcea90b6 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -13,7 +13,7 @@ jobs: python-version: ['3.9', '3.12'] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: @@ -40,7 +40,7 @@ jobs: python-version: ['3.12'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: @@ -63,7 +63,7 @@ jobs: python-version: ['3.12'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: @@ -86,7 +86,7 @@ jobs: python-version: ['3.12'] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 96601f36d..dbb4bce18 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Install dependencies run: | sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc @@ -36,7 +36,7 @@ jobs: runs-on: macos-13 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install dependencies run: brew install automake autoconf wxwidgets - run: aclocal @@ -55,7 +55,7 @@ jobs: runs-on: macos-14 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Install dependencies run: brew install automake autoconf wxwidgets - run: aclocal @@ -77,7 +77,7 @@ jobs: run: shell: msys2 {0} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: msys2/setup-msys2@v2 with: install: mingw-w64-x86_64-toolchain make automake autoconf diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index aaf8cdcf0..0485a15b9 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -12,7 +12,7 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: From 4bc65d57fcc8dba61180b1758a4c18556792ec5c Mon Sep 17 00:00:00 2001 From: Ted Turocy Date: Thu, 4 Dec 2025 09:47:35 +0000 Subject: [PATCH 4/7] Disable View->Strategic game if game is in strategic form (#662) On a strategic game the View->Strategic game menu option was (a) available and (b) unchecked. Selecting it would result in program termination. This corrects the situation: It is now (a) disabled but (b) checked. --- src/gui/gameframe.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/gameframe.cc b/src/gui/gameframe.cc index c528405ec..b247052bb 100644 --- a/src/gui/gameframe.cc +++ b/src/gui/gameframe.cc @@ -489,6 +489,10 @@ void gbtGameFrame::MakeMenus() viewMenu->Append(GBT_MENU_VIEW_STRATEGIC, _("&Strategic game"), wxT("Display the reduced strategic representation ") wxT("of the game"), true); + if (!m_doc->GetGame()->IsTree()) { + viewMenu->Check(GBT_MENU_VIEW_STRATEGIC, true); + viewMenu->Enable(GBT_MENU_VIEW_STRATEGIC, false); + } auto *formatMenu = new wxMenu; AppendBitmapItem(formatMenu, GBT_MENU_FORMAT_LAYOUT, _("&Layout"), From 0ac821a51781067c3d2cec06bdda49a860728312 Mon Sep 17 00:00:00 2001 From: Ted Turocy Date: Thu, 4 Dec 2025 12:05:11 +0000 Subject: [PATCH 5/7] Bump version number to 16.3.2. (#667) --- ChangeLog | 2 +- contrib/mac/Info.plist | 8 ++++---- doc/conf.py | 2 +- doc/index.rst | 2 +- doc/tools.convert.rst | 4 ++-- doc/tools.enummixed.rst | 4 ++-- doc/tools.enumpoly.rst | 2 +- doc/tools.enumpure.rst | 6 +++--- doc/tools.gnm.rst | 2 +- doc/tools.ipa.rst | 2 +- doc/tools.lcp.rst | 2 +- doc/tools.liap.rst | 2 +- doc/tools.logit.rst | 2 +- doc/tools.lp.rst | 2 +- doc/tools.simpdiv.rst | 2 +- setup.py | 2 +- src/pygambit/__init__.py | 2 +- 17 files changed, 24 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1c860d664..ebd78d68d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ # Changelog -## [16.3.2] - unreleased +## [16.3.2] - 2025-12-04 ### Fixed - Parsing of output of `gambit-logit` in the graphical interface did not handle the diff --git a/contrib/mac/Info.plist b/contrib/mac/Info.plist index e6720c969..35754f84e 100644 --- a/contrib/mac/Info.plist +++ b/contrib/mac/Info.plist @@ -19,13 +19,13 @@ CFBundleSignature ???? CFBundleVersion - 16.3.1 + 16.3.2 CFBundleShortVersionString - 16.3.1 + 16.3.2 CFBundleGetInfoString - Gambit version 16.3.1, (c) 1994-2025 The Gambit Project + Gambit version 16.3.2, (c) 1994-2025 The Gambit Project CFBundleLongVersionString - 16.3.1, (c) 1994-2025 The Gambit Project + 16.3.2, (c) 1994-2025 The Gambit Project NSHumanReadableCopyright Copyright 1994-2025 The Gambit Project LSRequiresCarbon diff --git a/doc/conf.py b/doc/conf.py index 532628e7b..9ba105cfe 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -51,7 +51,7 @@ # The short X.Y version. version = "16.3" # The full version, including alpha/beta/rc tags. -release = "16.3.1" +release = "16.3.2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/index.rst b/doc/index.rst index 5788ba252..b5cf3f2cd 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -33,7 +33,7 @@ made. If you are citing Gambit in a paper, we suggest a citation of the form: Savani, Rahul and Turocy, Theodore L. (2025) - Gambit: The package for computation in game theory, Version 16.3.1. + Gambit: The package for computation in game theory, Version 16.3.2. https://www.gambit-project.org. Replace the version number and year as appropriate if you use a diff --git a/doc/tools.convert.rst b/doc/tools.convert.rst index 143ff6625..ea7ad58ee 100644 --- a/doc/tools.convert.rst +++ b/doc/tools.convert.rst @@ -40,7 +40,7 @@ Example invocation for HTML output:: $ gambit-convert -O html 2x2.nfg Convert games among various file formats - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL

Two person 2 x 2 game with unique mixed equilibrium

@@ -55,7 +55,7 @@ Example invocation for LaTeX output:: $ gambit-convert -O sgame 2x2.nfg Convert games among various file formats - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL \begin{game}{2}{2}[Player 1][Player 2] diff --git a/doc/tools.enummixed.rst b/doc/tools.enummixed.rst index 4ebc304b0..71b6b27d1 100644 --- a/doc/tools.enummixed.rst +++ b/doc/tools.enummixed.rst @@ -70,7 +70,7 @@ in Figure 2 of Selten (International Journal of Game Theory, $ gambit-enummixed e02.nfg Compute Nash equilibria by enumerating extreme points - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -82,7 +82,7 @@ information using the `-c` switch:: $ gambit-enummixed -c e02.nfg Compute Nash equilibria by enumerating extreme points - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/doc/tools.enumpoly.rst b/doc/tools.enumpoly.rst index 60a3bebde..29c5e40b6 100644 --- a/doc/tools.enumpoly.rst +++ b/doc/tools.enumpoly.rst @@ -98,7 +98,7 @@ Computing equilibria of the strategic game :download:`e01.nfg $ gambit-enumpoly e01.nfg Compute Nash equilibria by solving polynomial systems - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000 diff --git a/doc/tools.enumpure.rst b/doc/tools.enumpure.rst index 3800e799c..55a66677c 100644 --- a/doc/tools.enumpure.rst +++ b/doc/tools.enumpure.rst @@ -66,7 +66,7 @@ Computing the pure-strategy equilibria of extensive game :download:`e02.efg $ gambit-enumpure e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,0,1,0 @@ -77,7 +77,7 @@ strategies:: $ gambit-enumpure -S e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -88,7 +88,7 @@ only one information set; therefore the set of solutions is larger:: $ gambit-enumpure -A e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,1,0,1,0 diff --git a/doc/tools.gnm.rst b/doc/tools.gnm.rst index f9d568e18..9578e5685 100644 --- a/doc/tools.gnm.rst +++ b/doc/tools.gnm.rst @@ -88,7 +88,7 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-gnm e02.nfg Compute Nash equilibria using a global Newton method Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,2.99905e-12,0.5,0.5 diff --git a/doc/tools.ipa.rst b/doc/tools.ipa.rst index 02ae7e42e..dac2367c6 100644 --- a/doc/tools.ipa.rst +++ b/doc/tools.ipa.rst @@ -55,7 +55,7 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-ipa e02.nfg Compute Nash equilibria using iterated polymatrix approximation Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1.000000,0.000000,0.000000,1.000000,0.000000 diff --git a/doc/tools.lcp.rst b/doc/tools.lcp.rst index c17e636d8..4ccb6dad9 100644 --- a/doc/tools.lcp.rst +++ b/doc/tools.lcp.rst @@ -79,7 +79,7 @@ Computing an equilibrium of extensive game :download:`e02.efg $ gambit-lcp e02.efg Compute Nash equilibria by solving a linear complementarity program - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,1/2,1/2,1/2,1/2 diff --git a/doc/tools.liap.rst b/doc/tools.liap.rst index ee486239e..09e85e01e 100644 --- a/doc/tools.liap.rst +++ b/doc/tools.liap.rst @@ -85,7 +85,7 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg $ gambit-liap e02.nfg Compute Nash equilibria by minimizing the Lyapunov function - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,0.998701,0.000229,0.001070,0.618833,0.381167 diff --git a/doc/tools.logit.rst b/doc/tools.logit.rst index 32cbf444d..be421e8f9 100644 --- a/doc/tools.logit.rst +++ b/doc/tools.logit.rst @@ -108,7 +108,7 @@ in Figure 2 of Selten (International Journal of Game Theory, $ gambit-logit e02.nfg Compute a branch of the logit equilibrium correspondence - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL 0.000000,0.333333,0.333333,0.333333,0.5,0.5 diff --git a/doc/tools.lp.rst b/doc/tools.lp.rst index 89d490da6..2d28abd40 100644 --- a/doc/tools.lp.rst +++ b/doc/tools.lp.rst @@ -65,7 +65,7 @@ strategies each, with a unique equilibrium in mixed strategies:: $ gambit-lp 2x2const.nfg Compute Nash equilibria by solving a linear program - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1/3,2/3,1/3,2/3 diff --git a/doc/tools.simpdiv.rst b/doc/tools.simpdiv.rst index a9f10b4cf..6c65e8017 100644 --- a/doc/tools.simpdiv.rst +++ b/doc/tools.simpdiv.rst @@ -92,7 +92,7 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg $ gambit-simpdiv e02.nfg Compute Nash equilibria using simplicial subdivision - Gambit version 16.3.1, Copyright (C) 1994-2025, The Gambit Project + Gambit version 16.3.2, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/setup.py b/setup.py index 727cf7efd..f8bfb26b2 100644 --- a/setup.py +++ b/setup.py @@ -107,7 +107,7 @@ def readme(): setuptools.setup( name="pygambit", - version="16.3.1", + version="16.3.2", description="The package for computation in game theory", long_description=readme(), classifiers=[ diff --git a/src/pygambit/__init__.py b/src/pygambit/__init__.py index 76bb2201c..5b814e1a5 100644 --- a/src/pygambit/__init__.py +++ b/src/pygambit/__init__.py @@ -28,4 +28,4 @@ supports, # noqa: F401 ) -__version__ = "16.3.1" +__version__ = "16.3.2" From 71fe205f491770a7e01707fbdff3fbd84616c368 Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Fri, 12 Dec 2025 12:21:53 +0000 Subject: [PATCH 6/7] Backport new runner for building OSX binary (required for release) --- .github/workflows/osxbinary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/osxbinary.yml b/.github/workflows/osxbinary.yml index dd7cd3392..80a36bd0e 100644 --- a/.github/workflows/osxbinary.yml +++ b/.github/workflows/osxbinary.yml @@ -9,7 +9,7 @@ on: jobs: macos-13: - runs-on: macos-13 + runs-on: macos-14 if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@v6 @@ -33,5 +33,5 @@ jobs: - run: make osx-dmg - uses: actions/upload-artifact@v5 with: - name: artifact-osx-13 + name: artifact-osx-14 path: "*.dmg" From 2f83beec0f6eb00abcc1a5d22424dd8ba88cf4ca Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Fri, 12 Dec 2025 12:50:43 +0000 Subject: [PATCH 7/7] Fix missed version bump --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index a034be75a..6e7d4ac86 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl -AC_INIT([gambit],[16.3.1]) +AC_INIT([gambit],[16.3.2]) AC_CONFIG_SRCDIR([src/gambit.h]) AM_INIT_AUTOMAKE([subdir-objects foreign]) dnl AC_CONFIG_MACRO_DIR([m4])