-
-
Notifications
You must be signed in to change notification settings - Fork 3
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
Dask versioning to switch to CalVer #100
Comments
I suggest that we use the versioning scheme >>> dask.__version__
"20.10.06" |
What about doing |
What about a patch release in the same day? |
Whatever we choose we'll want to make sure it's pep440 compatible. Rules here: https://www.python.org/dev/peps/pep-0440/#public-version-identifiers |
Yeah, following up on @djhoese point, it doesn't happen often, but we might publish a release, discover a critical bug and want to publish a fixed release the same day. What about |
That sounds good to me, but makes it a bit harder to automate the versioning (we'd have to check some central registry to see what the last release was or something). Using a date is much simpler, since the version is based on the date alone. Speaking of this, we'd need to transition from versioneer to some other solution, preferably one that prevents duplicating version info between |
potential small issue (that we can figure a way around), I don't think you can have a zero-pad between Could do |
Seems to work fine for me: In [3]: from distutils.version import StrictVersion
In [4]: StrictVersion("20.01.01")
Out[4]: StrictVersion ('20.1.1') We also don't need to zero pad at all, since the |
Sorry, I wasn't clear. I meant the zero-pad won't survive pep440, which is probably not a huge deal. |
If it doesn't cause a problem, I would prefer zero-padding, so that string sort and number sort do the same thing. |
Some examples of |
We can always bend time and travel to the future by a day if we need to. |
That's what using |
I don't insist, and that's good enough reason not to... but you do occasionally end up dealing with git tag strings or pip installable blob files |
puts on "I know waaaay too much about the Python packaging standards" hat
>>> from packaging.version import Version
>>> v = Version("2020.01.01") The fact that it does not error out here means that it's a valid PEP 440 version. The only thing that you may want to worry about here is that the "canonical" form of that version isn't the same as the version itself: >>> from packaging.utils import canonicalize_version
>>> str(v)
'2020.1.1'
>>> canonicalize_version("2020.01.01")
'2020.1.1' However, note that things will still work even if there's zero-padding: >>> Version("2020.01.01") == Version("2020.1.1")
True Overall, the choice between Oh, and... https://pypi.org/project/calver/ is a thing you might want to use, in case you're using setuptools. :) PS: Please don't use distutils for... well... anything. pip, PyPI and most of the other Python packaging uses |
Making our version a strict function of the date would be great, but I'm personally okay just having the releaser check PyPI and bump the version number accordingly. We already do this today as we need to know what the minor version is to bump. As long as we update our release procedure to clearly state what needs to be done, I don't see it being a large increase in the maintenance burden. That's just my opinion though, I'm happy to hear from others |
That's fine with me, I brain-lapsed and missed that all of this is still compatible with versioneer, we're just changing our tagging scheme. Need more coffee. I'm mildly against the zero-padded version since it's not canonical, but could go either way here. Up to whoever does the work I guess. |
I think part of the value of having |
It might be nice to have the calendar nature of our version more clear to users. For example, that would help better set user expectation about us not following semvar (xref #93). |
Okay, so it seems like What should |
That makes sense to me. I'd also suggest we do |
Do we want to talk about what we'll call the "blessed" version? I imagine that'd be called |
Yes, that was the idea, but all releases in that month will appear newer, regardless of when in the month we "bless". |
Per the logic in
IMO we want our versions to always be sortable in a way that corresponds to their dev history (if release B is after release A in git history, the release version B should also sort to after release version A). I'm not sure if adding a "blessed" indicator on a version is possible per pep440. This seems like something we could solve with a docs page, perhaps a table of "blessed" release version numbers with dates. Keep it simple. |
Or we could reserve the last day of the month for the blessed version. Though maybe we are drifting away from days now. |
That still fails the sortable property if there are releases in the same month that happen afterwards. |
In conda-forge where we do have a couple of cases of releasing something more than once a day, we just include additional details about the time ( |
Can we just 1-index the regular releases then? |
This still doesn't match the sorting requirement, as the blessed version would sort less than all other versions released that month. I'm really against any versioning scheme where sorting the versions doesn't also match the git history. Otherwise it makes it hard to check for the presence of certain features/bug fixes based on versions. If |
|
I voted for |
I now voted for |
@consideRatio isn't |
Ah, then I prefer the non-zero-padded option, and I assume you are right that it is represented by About Helm chart's constraintsI know of three Helm charts part of the dask organizations, all of these are required to have a non-zero-padded version in their Chart.yaml files.
|
Thanks for sharing, I wasn't aware of this limiation in Helm. I guess given that zero-padded is the most popular option we will just have to make the charts outliers which use the non-zero-padded version. |
@jacobtomlinson does it remain the most popular given this information? I for example would also vote for zero padded unless it were for this. Does it merit a recount? |
IMO the Helm charts service a small part of the community, so probably shouldn't dictate large decisions like this. But happy to hear from others if they feel differently. |
Anyone who wishes to change their vote could comment here, but I wouldn't suggest calling for a new vote. I Still think passing is better, because it ensures numeric ordering and text ordering agree and is a closer match to scientific/iso formats. |
Hi, I've noticed that |
I don't think there's a hard rule about sub-projects switching to CalVer (though some projects like |
Dask is planning to switch to Calendar versioning (calver)
This has been discussed in several issues (like #93 ) and was met with fairly unanimous consent in the last community meeting. If there are major objections we're still happy to hear them, but at this point I think that the default choice is to move to CalVer rather than wait-and-see.
This issue is here to serve as a general announcement, and for logistics about the move. I would expect this change to happen within the next month.
The text was updated successfully, but these errors were encountered: