-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature Request: Split Pantograph and PyPantograph #75
Comments
How would this work when users want new features and they have to be developed in lockstep on upstream Pantograph and downstream PyPantograph? |
For new features: Addressing the lockstep concern: |
What's the advantage of this system compared to pinning the Git commit on the user's end? I feel like this will involve a lot of testing overhead (i.e. each commit of PyP would need to be tested against multiple versions of P) |
Git submodules might not be the most convenient approach when publishing to PyPI, since the submodule code would be installed to
In the current setup with submodules, each PyPantograph version is only tested against its corresponding Pantograph version. For version 4.x.x, users only need the latest Pantograph of that version, rather than maintaining exact commit matches. This means we only need to ensure:
Compared to submodules (which enforce one-to-one version mapping), this separate caching approach offers more flexibility. Users can still opt for tag-to-tag correspondence if desired. As for the latest PyPantograph code should work with a broad range of Pantograph versions - this is perhaps better viewed as a development best practice rather than a strict requirement. For instance, LeanDojo is version-agnostic and compatible with a wide range of Lean versions. While Pantograph may undergo significant changes, we can still aim for compatibility at the tagged version level as a minimum standard. |
so we would have a In the current setup the compiled upstream executable is bundled together with the rest of the Python code in this library, so I don't know how you can get
None of these options seem particularly appealing |
This is more like a requirement for version-free features. The main thought is that users can use
I think it is workable since I've written sth similar using Click for installation scripts. |
Does this mean the version can be switched at runtime? If the only requirement is that the user can build wheels with different Lean versions, the simplest solution is to use an environment variable containing the preferred manifest version. If you want multiple versions to coexist in the same installation its harder and I don't see the benefit of doing so |
The opinions of people on Lean zulipchat seem to contradict this feature request: https://leanprover.zulipchat.com/#narrow/channel/219941-Machine-Learning-for-Theorem-Proving/topic/Incentives.20.26.20sorry-filling.20leaderboard/near/501438850 REPL, Mathlib, Aesop, etc. use tag based versioning, where each tag supports just one version. |
Proposal
Split the project into two components by a caching mechanism instead of using git submodule:
Implementation details
Cache dir for different systems:
Use the cached
proc
inself.proc_path
:Planned cli tools:
pantograph list
: Show available versionspantograph install
: Install specific versionpantograph update
: Update to the latest tagpantograph default
: Set default version if theproc_path
is not specified...
Looking for feedback and suggestions on implementation. I would be happy to contribute to this effort :)
The text was updated successfully, but these errors were encountered: