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
Pydicom v3.0 release #1232
Comments
Hi Darcy, are you looking for comments on just those issues, or looking for other ideas as well? |
I'd be happy to entertain other ideas. If necessary (lots of discussion) they could be forked off into other issues to try to keep this issue a little more focused. |
Actually - changed my mind about process -- let's put them in as separate issues first, with the "RFC" label, then bring to the list here if confirmed. |
What's the plan for 2.x and 3.0? I.e, at what release are we expecting to end the 2.x series? |
I was thinking maybe only one or two more releases, then 3.0. What do you think? I hadn't given it a lot of thought, but it is nice to keep moving forward with important changes. |
I'm not fussed, just wanted to know if I should create a new release issue or not |
Revisiting this in thinking ahead to upcoming v2.2 release (~May), I'm happy with two releases. The second one, v2.3 could be ~Sept, (although the current release schedule says Nov.), then v3.0 in ~Jan-Feb 2022 However, if we need to work through some big changes, we could have an additional release v2.4 in ~Jan/2022, with v3.0 in ~Apr 2022. We should be thinking now (for v2.2 release #1259) about any major deprecations that aren't already warned about -- it would be nice to start warning with at least two versions before breaking changes. The items in the checklist in the first post above are a start, but are there others? We could consider big items like:
Those are a few ideas that come to mind. If anyone has any ideas about structural issues pydicom could address, we could try to come up with a few to tackle, if there is a reasonable deprecation path leading to v3.0. |
Good point to handle this before the next release! I haven't really looked at this, here are just my ad-hoc thoughts:
Maybe I will have a closer look and think about other changes at the weekend... |
I didn't see any other breaking changes needed. I'm not sure about the possible reworking in pixel data handling and modularization, but as far as I understood the comments in the related issues, this can all be done without breaking changes. Other suspects where I'm not completely sure are SR handling (I simply lack the expertise here), and maybe JSON handling, though I expect this to be expanded rather than changed in an incompatible way. I also had another look at encoding / decoding, but I don't see the need for breaking changes (or any major changes) there at the moment. |
@mrbean-bremen, thanks for all the work on issue cleanup and looking into the breaking changes possibilities. I'll try to have a good look myself this week. |
Thought I'd drop another thought here based on my comment in #1366... Perhaps some grouping of 'strict' flags could be done - a dict or data class where could turn or off combinations of warning/errors/automatically converting and which to use on reading/writing. E.g. could warn on reading invalid values, auto-convert on writing. Or error on reading, warn on writing - any combination. |
I'd like to change the config option setting to use a single entry point, probably backed by a dict or class as you suggested: from pydicom import config
config.set_option("opt name", value, **kwargs) I still like the idea of have a bunch of 'fixer' functions that could be dropped in or out as desired. We could flag up non-conformance issues during read/parsing and (by default) process them with the fixer functions. If a user doesn't want that fixed (or if they turn off the conformance setting) then we just remove function(s) from the corresponding list. Users could define their own processor list to mix and match fixers. I think it'd tie in nicely with the processing hooks, too. |
Yeah, that looks good, and it is a nice evolutionary path that can be used without breaking backward compatibility.
Well, I'm sure you know that I have been a big advocate of the 'fixer' concept in many issue answers. I really like this too but it is a bit slower option because it is a callback - the usual situation now is to have a |
I've also never really been happy with the current way we handle pixel data decoding (too much boilerplate, hard to customise). I'd like to replace it wholesale with a system similar to the proposed encoding method, where there's a single generic management class and decoding runs via plugins to the class instances. I can probably add it as an option beforehand and then make it default in v3.0 (and remove the old system). |
That would be really nice! I liked the way you handle the encoding in the PR. A plugin concept is more flexible, and also more convenient for contributions outside of the pydicom package. |
I've been reading the "What's new" for the Python versions, and I'd like to propose Python 3.10+ only for pydicom 3.X. Some of the reasons:
So, we still have 2.4 to release, but after that, go to Python 3.10+? |
In principle, I agree - I've also seen these improvements and like them, too. |
Yes, that would be ideal... but we won't know 6 months ahead of time while we are trying some major changes, so I'm kind of trying to be selfish with my time...
On a very quick google, it seems Py 3.10 is already out there.
|
Ok, that looks good then - thanks for looking that up. Well, I have no more objections in that case 😀 |
Keeping track of issues for pydicom 3.X release series.
Some ideas carried over from #1137:
Others:
dcmread(path, fixes={0x00280010: fixer})
The text was updated successfully, but these errors were encountered: