Skip to content

Conversation

mkoeppe
Copy link
Contributor

@mkoeppe mkoeppe commented Apr 16, 2024

Gambit, the package for computation in game theory, is being actively developed again and has made several releases in 2024. Congratulations to @tturocy for obtaining support from the Alan Turing Institute for the development of this package.

In this PR, we update our use of Gambit to make it compatible with Gambit 16.x via its Python package pygambit.

Steps:

Cc: @drvinceknight @kcrisman @fchapoton

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

Copy link

github-actions bot commented Apr 16, 2024

Documentation preview for this PR (built with commit 906a88a; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@kcrisman
Copy link
Member

Just as a point of order, how does one see which parts of the diff are just from this particular PR and not from (say) #37810?

This is a welcome development, though, I second the congrats to the developer. I don't know if we want to make it a standard package, is this draft currently adding it as optional?

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Apr 17, 2024

how does one see which parts of the diff are just from this particular PR and not from (say) #37810?

Actually #37810 is not merged here yet. I prepared it after preparing the PR here because it became clear that more work is needed to finish it but I want the removal #37810 done as quickly as possible.

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Apr 17, 2024

I don't know if we want to make it a standard package, is this draft currently adding it as optional?

Yes, it's adding it as "optional" (see file build/pkgs/pygambit/type). I'd think adding it as a standard package would have to go through sage-devel again.

@tturocy
Copy link

tturocy commented Apr 17, 2024

Many thanks @mkoeppe for initiating this. We've been trying to do work in Gambit on standardising packaging to make it easier for downstream integration (with SageMath high on that list). Please let us know if we can help because, as noted, we're actually resourced now!

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Apr 17, 2024

The new packaging looks all good, and installing in Sage is already working with the present branch.

On our side just the uses of the old gambit Python API need to be updated to the new pygambit API; but I don't have first-hand experience with either of the two.

@tturocy
Copy link

tturocy commented Apr 22, 2024

The new packaging looks all good, and installing in Sage is already working with the present branch.

On our side just the uses of the old gambit Python API need to be updated to the new pygambit API; but I don't have first-hand experience with either of the two.

With respect to this, we should disclose that we are currently very much in a "move fast and fix things" mode. There will be breaking API improvements across minor versions. For at least this calendar year, we probably won't always be able to provide deprecation warnings (but we will try to do so where we can). To compensate for this our plan is to maintain at least the two previous minor releases (starting from 16.1) with bug fixes, so users won't be forced to adapt their code to API changes simply to get around some bug.

By about this time next year, we will be hoping to have settled into a more mature lifecycle where there'll be fewer API changes and a deprecation path for the ones that do happen.

1 similar comment
@tturocy
Copy link

tturocy commented Apr 22, 2024

The new packaging looks all good, and installing in Sage is already working with the present branch.

On our side just the uses of the old gambit Python API need to be updated to the new pygambit API; but I don't have first-hand experience with either of the two.

With respect to this, we should disclose that we are currently very much in a "move fast and fix things" mode. There will be breaking API improvements across minor versions. For at least this calendar year, we probably won't always be able to provide deprecation warnings (but we will try to do so where we can). To compensate for this our plan is to maintain at least the two previous minor releases (starting from 16.1) with bug fixes, so users won't be forced to adapt their code to API changes simply to get around some bug.

By about this time next year, we will be hoping to have settled into a more mature lifecycle where there'll be fewer API changes and a deprecation path for the ones that do happen.

vbraun pushed a commit to vbraun/sage that referenced this pull request Apr 28, 2024
sagemathgh-37810: build/pkgs/gambit: Remove
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Removing this broken experimental package, as proposed in 2020.
- Closes sagemath#30156

Also removing the module providing outdated "standalone instructions" to
use Gambit.

Keeping the various references to Gambit tagged with `# optional -
gambit`. This will be updated in the follow-up PR"
- sagemath#37809


The motivation for opening this PR to remove `gambit` now (2024) is that
it removes a remaining use of the function `sdh_setup_bdist_wheel` (the
old gambit Python package could not be installed using pip). This a step
for the modernization of the build frontend for Python packages in the
Sage distribution:
- sagemath#35618

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#37810
Reported by: Matthias Köppe
Reviewer(s): John H. Palmieri
vbraun pushed a commit to vbraun/sage that referenced this pull request May 2, 2024
sagemathgh-37810: build/pkgs/gambit: Remove
    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Removing this broken experimental package, as proposed in 2020.
- Closes sagemath#30156

Also removing the module providing outdated "standalone instructions" to
use Gambit.

Keeping the various references to Gambit tagged with `# optional -
gambit`. This will be updated in the follow-up PR"
- sagemath#37809


The motivation for opening this PR to remove `gambit` now (2024) is that
it removes a remaining use of the function `sdh_setup_bdist_wheel` (the
old gambit Python package could not be installed using pip). This a step
for the modernization of the build frontend for Python packages in the
Sage distribution:
- sagemath#35618

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#37810
Reported by: Matthias Köppe
Reviewer(s): John H. Palmieri
@aliresool621
Copy link

I got to say, will this work like gap or there will be a missing pieces?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants