-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
GH6848 silently changed series.sort from stable to unstable sort #7750
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
Comments
http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#v0-14-0-may-31-2014 about 1/2 down in API changes. not sure where you are looking. backwards compat is cared about WAY too much IMHO actually. |
@armaganthis3 you are free of course to comment on any and all issues. This change was to conform a completely broken API that was different for inplace (sort) and a copy (order). IMHO that has been a huge source of confusion for quite a while. Their are always a number of API changes in major versions; you are encouraged to read them. Not every change can warrant a big warning (and IMHO the warnings are ignored just as much as the whatsnew). |
Pandas has more breaking changes per version, those releases are much more frequent Considering that, I think you should care more about backwards-compatibility not less. Just one example: |
pandas breaks on big version number. and those are all very carefully though out. and very well documented. If you didn't read about this change, then whom are you blaming? I am not sure what 'does not maintain a stable branch means'. you can install any version you want. it is your choice to upgrade or not. you do not have to upgrade at all if you don't want. I am not sure where you get the statement about backwards compatibility. I personally care about back compat quite a lot. Have you seen the tremendous lengths pandas has gone to maintain backwards compat with numpy 1.6 and pickle compat < 0.12!!!!! This takes quite a bit of time, and pandas does not have the resources as other pydata projects, yet still seems to produce very high quality s/w with many many contributors. I think you are completely misreading my comments. pls read them again. |
Pandas breaks only on major version numbers, ok, but it also releases a new major version "does not maintain a stable branch" means what it says: there's no long term stable branch. Your view of backwards compat is based on your words:
It's funny you should mention those two example for maintaing back-compat. First because
Which is perhaps the worst double-speak I've come across outside fox news. As for having no resources (but at the same time, having "many many contributors") Very simply, as a user who maintains a prod system that relies on pandas I care |
@armaganthis3 talk about double-speak! I read your original comment. The change that you brought up WAS in the whatsnew. I guess you STILL did not read it. Yes its a one line change, for a VERY MINOR change. WHICH was documented. and provided consistency between a very confusing function. I guess you are annoyed that you simply didn't read the whatsnew are now trying to 'blame' someone else. go figure. you want back ported fixes/perf regressions. great! I would like to see some contributions then. pandas development has always been done this way (I think prob because of limited resources; maintaing a 'stable' branch is VERY time consuming). and to be frank, pandas has introduced many new features over time. things break. things get fixed. pandas is an active project. |
@armaganthis3 you point out #7711. do you have any idea what back-compatilbility even means? what a PITA maintaining 1.6 IS????? great. LTS still has an old numpy. fantastic, but so WHAT? the system installs are pretty much useless for scientific python, if you would actually read my comments in that issue. And it has been brought up since 0.11 IIRC. This has been delayed quite a long time. Talk about back compat! That is what I am talking about in terms of time spent. If we didn't have to maintiain this 1.6 compat then I suspect a fair number of new features could be introduced. Yes pickle compat breaks occasionally. We went to VERY great lengths to preserve this. but again if would actually read #7748, that actually its a very recent bug fix in 0.14.1 to provide COMPAT across frequencies. Did happen to have a test for this, so it broke. it will get fixed. So instead of 6000 odd tests, we will have 6001. How many projects have this level of care about back-compat???? |
@armaganthis3 my last point. Would you rather have a project release every 3-4 months or debate everything endlessly and have it release once a year. More frequent releases allow for more community uptake, so are you saying that is a BAD thing? |
@armaganthis3 You raise good points, and it always interesting to get the experience from another viewpoint. Pandas has maybe the 'bad luck' of already being very popular but still rather young and rapidly changing, and a good balance between both is not always easy. Backwards compatibility is an important issue. As the heating of this discussion also shows! It shows that it is something both of you care about. But a heated discussion is most of the time not very constructive. So maybe we should let this cool down for a moment. Please do that, both of you. |
Here we are 2 days later, and hopefully calm. Excessive punctuation neatly tucked away I hope. @jreback made a lot of comments, I'll try to cover most of his points, skipping over the Personally, I don't need numpy 1.6 support. Others might or might not. The essential issues Keeping pandas code working across pandas versions is what back-compatible means, jreback says that bugs and regressions are inevitable and in that a least he is absolutely right. You may claim this breakages are "well-thought out", from what I've seen "So yur saying frequet release is badd ?????" jreback asks. Not at all. "WELL, are YOU going to do the VERY time consuming work involved in keeping a Well, how about simply not break APIs so liberally? Use stricter criteria for allowing Would it help if users said please-oh-please don't break APIs? Finally, about the point that pandas is young, I'll note that pandas is 3 years old, has (10s of) thousands of users in commercial and science application, Is used in production. Is on it's |
I'll add another example of how back-compat is often dismissed lightly, this is from today, Another issue with legacy pickles, which @jreback so forcefully claimed he cares about. @Kermit666 said:
@jreback's response:
pandas 0.13.1 can pickle and unpickle a data file, and 0.14.1 can't. according By the way, introduced in 0.14.1, not a major release. care indeed. |
@armaganthis3 The pickle breakage seems like a regression to me. While I lean towards the position of moving fast and upgrading only if you've you read the release notes thoroughly, breaking IO across a single (major) version number is moving too fast. Pickles suck, but people use them and we support them so we should try really hard not to break IO related code IMHO. In the case of sort vs. order I disagree. The release notes are there, and you don't have to upgrade if you don't want to. IMO it is more consistent if you have them either both stable or both unstable, but not different. @armaganthis3 Would like you to make a list of the API changes you find especially egregious? That would help us evaluate whether there are unintended regressions or intentional API breakage. I agree that this in an important issue, but I don't think it's as simple as "preserve back-compatibility at all costs". |
@armaganthis3 you are excellent at taking things out of context / not reading the entire issue.
This feature addition for 0.15.0, #7217 (comment), does NOT BREAK ANY API's at all. So why are you bringing up an point that is completely irrelevant? and you point at #7329, which was warned right here: http://pandas.pydata.org/pandas-docs/version/0.14.0/whatsnew.html, and turns out is a regression, that should have gotten caught in 0.14.0, but unfortunately our 6000 tests didn't help. Well a fix going forward, as well as a work-around was put in place. I'd like to catch these things on the first go around, but pandas is a big project and not everything can be caught. |
Thanks @cpcloud, I also believe @jreback shound't have dismissed a user reporting a serious regression, but acknowledged it and fixed it. I genuinely do not know if it would have been fixed had I not made an example of it
after I made all this noise, @immerr stepped in to fix it the "unfixable". @jreback is trying
it wasn't @jreback who fixed it, but @immerr, after my loud complaints. maybe @immerr What bothers me is not that fact that @jreback, like me and like any human being, makes mistakes. It's his deliberate disregard and recklessness that angers me, the fobbing-off of the users who complain with nonsense excuses, and the dishonest way in which avoids taking responsibility More example are plentiful, seemingly in every comment he makes. jreback just wrote:
Here are all the items in the release notes that mentioned the term "pickle":
Which of these is a warning that some 0.13.0 pickles can't be read in 0.14.0 anymore? Can you see it? I can't. Let's drive the point home ever further by reading that again:
@jreback is saying that this is both a documented change warned against and This issue was meant to be about my concerns about the trend in pandas treatment of back-compat, but @jreback's shameful attempts to muddy the waters is even more reprehensible. |
@cpcloud, briefly, you agree that breaking pickle support within a major version is unacceptable, Keeping cross-versions pickle supported has seen lots of work, by wesm initially and That itself suggests that your care for back-compat is slipping, I wish it weren't so. |
Sorry, @jreback didn't mean to ignoe your question:
because I believe @jseabold there was just as worried as me about your recklessness, Note his tone there, It's not accidental IMO. admitedly, he's much more soft-spoken about your |
This is just not true. @jreback is the first to own up to any bugs and is constantly fixing them (use pandas to create a bar plot of commit counts by author, you'll see he outpaces the next active contributor by a factor of about 3.5). Also, look up "duplicate indexing", "datetime support", and "series refactor", and then tell me @jreback doesn't take responsibility for his actions. I don't think these kinds of libelous remarks are helpful in any way. I think criticism is great, but doing so in a way that leads to improvements is generally a more effective way to approach it.
In light of the amount of work @jreback does for pandas for free and his helpfulness to people who actively criticize his work (#6011, the negative remarks are gone now but his apology is still there), it doesn't matter who addressed the issue. Pointing fingers is best left to Let me be clear: backwards compatibility is an important issue. But so is being able to fix things that are broken, even if that means breaking back-compat occasionally. How often occasionally is is determined (in no particular order), by the core devs, the feature being broken, the severity of the bug or inconsistency. That said, breaking pickles is unacceptable. However, if something isn't tested, there's no guarantee that it will work (I hope you'll agree with this). If you want to submit a test for things like this in the future so that we have a contract that it works in the future, please do so and we'll gladly review and probably accept your patch. We like tests. @jreback is being a bit shy about the number of tests: we're above 7000 right now. And lest you accuse me of "playing the numbers game", I'll add a disclaimer to take the number of tests comment with a grain of salt.
On the contrary, No one likes name-calling, and accusing @jreback of doing cowardly things is likely to elicit no response or active avoidance of your bug reports in the future. That's probably how I would handle it. But, knowing @jreback, he'll probably fix them anyway because that's the kind of guy that he is. Alright, I'm not commenting any further on this issue. @armaganthis3 If you actually have something to contribute other than commentary, like offering to help maintain a "stable" branch, that would be most helpful. |
The way to ensure you don't get bit by an API change:
The numpy issue (see the fervour on the mailing list to the proposal to drop 1.6 support) along with the other "evidence" you post is indeed damning... it backs up @jreback entirely:
If you're not impressed with @jreback's patience/care/heroism/et al... you're misreading the situation. Anyway. It's worth mentioning you're not the first to bring up the idea of a "stable" branch, and it does sounds appealing in principle. However no-one (thus far) has come forward as willing to maintain. Here's some thoughts (perhaps these belong as a sep issue):
Saying that, perhaps this situation can be reassessed when/if pandas reaches "1.0". Of course, as @cpcloud points out: it's MIT so you're free to create a stable branch 🍰 |
I appreciate you guys stepping up to defend jreback, and I agree it's time to wrap this up, @cpcloud free development has nothing to do with it: either my criticism is correct or it's not. @cpcloud, I agree with your description of how decisions are made (though I don't see You seem very proud of the number of tests pandas has. None of them help when
I meant the "pandas dev team", though I'm glad pandas has been education for you. as for you jolly-good-jreback spiel, you're probably right, in any case whether you fix any
It's actually 3-clause BSD, but you meant to say it's free software which means you're Sadly, that's a default answer to any criticism anyone could ever raise to to you, justified |
ok, great! |
#6848 is no where mentioned in the release notes. There's a single item on
.order
changing to quicksort, but it doesn't explicitly warn that the sort was previously stable
and now isn't. There's also no warning about
series.sort
changing as well.That API has been around forever and afaict nothing was gained by breaking it.
This was a fairly reckless change in my opinion, I do wish the current maintainers
cared more about backwards-compatibility then they seem to in the latest releases.
The text was updated successfully, but these errors were encountered: