Comments (4)
Quite a bit of our code relies on the Parsl API, but Parsl does not provide a way to recognize backward-compatible versions. If we do not pin the version, any new release could potentially break things. However, in most cases, you should not have an issue installing the latest version because the aspects of the Parsl API that we utilize are generally stable.
from funcx.
@rjmello Isn't that what the CI and things like dependabot are for? The CI would rely on a pinned version, as is standard practice. Why also force the restriction on the end user?
To me, it seems wise to adopt the general best practice of having a requirements.txt file with specific versions used in CI and dependabot to continuously evaluate the stability of new Parsl releases. The setup.py should only have limits on versions when the CI indicates a break in compatability. We shouldn't rely on semantic versioning anyway; there is no strict guarantee that breaking changes don't happen in a given release.
from funcx.
Andrew, the purpose of pinning is to ensure that when an end user does pip install globus-compute-endpoint
they, by default, end up with a functioning installation. CI and dependabot do not ensure compatibility of future versions, instead, at best, they can warn when a new version of parsl breaks something. Parsl has adopted date versioning and makes no explicit guarantees about backwards compatibility. In fact, the official recommendation is for all projects that use parsl to pin the version they expect. That is a well reasoned stance from the Parsl team given the resources they have to put toward maintenance and backward compatibility support, but does mean that to ensure Globus Compute users have a smooth experience, pinning the Parsl version is the best option.
That said, you can override the version installed by either providing your own constraints file to pip, or installing parsl separately after installing globus compute. Also, as standard practice with new releases of the Globus Compute endpoint, we do bump the pinned Parsl version if we can do that safely.
from funcx.
Thanks for the reply, @joshbryan-globus.
I understand now, although I disagree that this recommendation from Parsl team is the way to go. It seems like using a <= to bound the current Parsl version at the time of release would be more generous than a strict pin, also (optionally) using a >= for the lower bound as appropriate. However, I can understand that perhaps there are hesitations about updating Globus Compute and not realizing that a change is incompatible with an older Parsl version.
Regarding overriding, this is true for users but not for developers. If I develop and ship a package that relies on Parsl and Globus Compute as dependencies, there is no mechanism for me to have my pyproject.toml use any Parsl version other than the one dictated by Globus Compute. There would be a conflict otherwise.
In general, the Parsl recommendation of pinning versions seems quite limiting for developers. Perhaps that is something for me to discuss with the team as a whole.
from funcx.
Related Issues (20)
- Support for enforcing thread affinity HOT 1
- two parts of scaling in happen at different times, leading to delays in task execution
- core hours reporting is incorrect in endpoint reports
- Failed jobs go unreported if manager is lost HOT 5
- Endpoint disconnecting due to "Node was put into maintenance mode" HOT 3
- Deserialization error for type annotated functions in v1.0.2 HOT 1
- Renewing auth token fails in multi-threaded applications HOT 6
- Funcx-endpoint list wraps endpoint ids
- Bad log references undefined variable
- Endpoint status not being reported accurately HOT 1
- FluxExecutor exposed as endpoint executor?
- funcX sdk.client HOT 5
- Is there support for dynamic job-type functions?
- dill 0.3.5.1 vs python 3.11 vs globus-compute-sdk 2.2.1 HOT 3
- Converting from FuncX endpoint to Globus Compute Endpoint does not work HOT 5
- How to Use the Perlmutter Template HOT 4
- Show examples of using Globus Compute to run Parsl workflows HOT 2
- Move Parsl specific tests from test_gcengine_resource_spec
- Websockets pinned to very old version HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from funcx.