-
Notifications
You must be signed in to change notification settings - Fork 129
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
Roadmap for v0.8 #245
Comments
Has this been abandoned or is there still progress happening to this release? |
It's definitely not abandoned, I'm still hoping to make this release happen. |
@N-Coder Thanks for the effort. I am looking forward to this release too. I must admit I have not put any effort in it. Barely tried. I hope at some point I can help you finish the job. Just @ me in the near or distant future. |
Wow, it looks like there are already some people using this code (and it's probably more than a year since I promised an alpha release "soonish"), so here's a small status update. Most of the big points are by now done, but there are still two points I'd like to complete before doing an alpha release, which are:
After that is done, I guess we'd be good to go for a v0.8.alpha release. 🎉 |
Hi @N-Coder. Thanks for all the hard work!
Have you considered having a generator (asynchronous?) at the lowest level. For parsing for example you could yield each event and let the consumer decide what to do with errors for instance. Maybe this is not the best abstraction. Just leaving it there in case you have not thought about it. PS: Also have not looked at the codebase in a while so no idea of how it works. |
I just started using your library and it works like a charm - thanks so much! I'm generating Cheers! |
@N-Coder We would love to see a release for this on PyPi (an alpha or beta release would do), since one of our packages depends on it. Is there anything we can do to help, any specific issues you'd like someone to work on? |
The blocker is still finding a better architecture for easily handling slightly weird inputs and customizing th (de-)serialization mentioned here, now also with the added complication of supporting different output modes mentioned here. The current approach with using singleton Converters and an immutable lists of conversion functions is pretty unwieldy and hard to extend. Using (possibly multiple) Converter instances (with a global default one) could make providing different variants and storing temporary values in a multi-threaded environment a lot easier, also allowing us to drop the intransparent state dict that is currently thrown around everywhere. Autogenerating one method of the respective converter class/instance for each field instead of using a list of methods would probably make extension via monkey-patching or inheritance easier. So I have a rough idea there, but I'd still need to try out a few things to fix the details (e.g. how we could lazily create / initialize this hierachy/-ies of converters) and find the time to actually do the refactoring. If you want to take a deeper look on the current implementation, feedback on how things could be improved would be highly welcome, anyways! Regarding the handling of broken inputs, I tried an approach similar to the suggestion from here. Parsing is done in a line-wise fashion, so it's relatively easy to add error-handlers when some individual line fails to parse. The problem is with creating compound objects consisting out of multiple parsed lines and especially during their finalization / validation, e.g. what to do if you realize that an object is missing a required property or has contradicting properties (e.g. an event ending before it starts). Handling each of these kinds of problems individually is tedious, but turning off validation entirely is also problematic as that could lead to issues later on (e.g. with repeating such a broken event). |
Oh, and regarding an alpha release, this should be possible with two gotchas:
Maybe @C4ptainCrunch wants to test the release once we fixed those two points? |
I would not have
In that case, perhaps best to hold off on such an alpha release until you can complete more of the work. I'm just worried that the work seems quite daunting, and that it may take a long time to resolve. For now, perhaps consider pairing down the list of issues that absolutely must be resolved before release (or making issues where none exist), then we can start knocking them out one by one. |
I'd like to work on helping accelerating 0.8 release. There are a few items around testing which seem reasonable for a newcomer to take on? I saw there were some attempts at building up an .ics repo before and having testing based on that, and a few specific regressions listed above but they are from 2020. Is adding testing still a relevant priority? |
Testing is definitely a good thing to work on! When starting my big refactoring, I basically deleted the old test suite, so moving over the relevant parts and fixing things where needed would be a good thing. In addition, writing more new tests (maybe targeting specific functionally) would also be very useful to further increase the coverage. Further enlarging the test corpus in #236 would also be very good to test our library with the weird ics files from the wild. Currently, there's probably gonna be a lot of errors with these as I'm still working on making the parser more forgiving, but still building up the corpus will be very helpful later-on. I guess these three points from my list at the top are the best candidates for contributions. ...nonetheless here's some comments on the remaining "testing" ToDos. The make-all-day issues are probably resolved by now, but that still needs some thorough testing (or at least collection of the different tests we already had around). Testing the interoperability with other tools is probably best done shortly before we make the 0.8 release. I already included the regression tests for the linked issues and I guess it's not too much use going through even older issues to add more of these tests (instead of directly testing functionality), so that point is probably more for future issues that should be converted to regression tests whenever possible. |
Note: The converter system changes are on their way and I updated to ToDo list at the top to reflect the current status and what really needs to be done. The only thing we might wanna discuss is how much testing we want / need for an actual v0.8 release (see the second block of ToDos). We could be strict and only make an alpha release without that, or we can "involve" our downstream users a little more and do the full release sooner, maybe incorporating reported fixes and further tests (and better docs) in a v0.8.1 release afterwards. |
A release soon would be much appreciated even if it is just an alpha, beta, or rc prerelease! Just having a new package on PyPI in any form would be wonderful. (I also think it is reasonable to just release 0.8 soon with a 0.8.1 afterwards.) Thanks for all your work on this! FYI: I am trying to make a release of yaml2ics, which currently depends on ics-py/ics-py main: But I am not able to upload to PyPI, since it doesn't allow direct dependencies. |
Ok, let's do that. I'll try to release something like Edit: @jarrodmillman : releasing 0.8.0dev0 on PyPI is currently blocked by #274 (comment) as soon as i can fix it it will be released ! |
@jarrodmillman 0.8.0.dev0 is available on PyPI 🎉 |
I will test it later today! Thanks!! |
It worked great! Thanks!! |
I tested it too, it also works great here! Thanks for all the work! ♥ |
Same here ;) |
I use 0.8.0.dev0 for months and it seems to work just fine :) At least for what I need. I value that this new version doesn't depend on ancient arrow anymore. Thanks! |
Perhaps it's time to call it for 0.8? The dev0 release quite well, and I'm worried about the release process stalling. |
Good point. Doesn't seem like I will find the time to fix the remaining points any time soon. And if things still seem to work without the testsuite or updated documentation, maybe an incomplete release is better than no release. |
And we can still release 0.8.1, .2, .3 if we make incremental improvements to the doc or tests :) Should i start the release process then ? Side quest: what do we do with this ticket and the github milestones ? |
👍🏼 from my side
We can move (i.e. rename/reassign) the milestone on to Version 0.9 or so (as these are mostly bigger points and the 0.9 is currently empty it seems). Once the release is through, I'll close this issue and create a new issue with all the open points for Version 0.9 so that we have a clean overview there. |
One thing that we should be aware of before releasing are the changed behaviours for |
@C4ptainCrunch It would be great if you could release main as 0.8.0! I am happy to test a release candidate. If there is anything you need help with, please let me know. Thanks for all your work on the project! |
@N-Coder : unfortunately, i don't really have time to review the depreciation warnings, but i might find some time to cut a release though. Do you think it's OK to release it "as is" (as opposed to not releasing anything :D) ? Edit: in //, i'll work on #395 because as our release cadence is really low and Python 3.12 is going to be out soon, it would be a shame to not support it in 0.8 |
Thank you @jarrodmillman for the PR ! I still have to improve at least those 2 lines:
But i have trouble remembering what those are exactly 🙈. As well as detailing the bugfixes
If someone has inspiration, feel free to post here or op a PR. After that, i guess we can do a quick check of the documentation and then start the release process ! Edit: the notes are also missing those:
|
@C4ptainCrunch @N-Coder Please let us know what you need in order to get a release out. |
@stefanv The main blocking point i see is the release notes i mentioned above (help welcome !). After that i guess we could scream YOLO and publish the release, it has waited long enough. |
Hello team. This library is sexy and beautiful, but recurrence support on 0.7.2 is blocking me. |
Hi, first of all thanks for the great library! I just recently discovered it and started using it for a simple project. Because of the timezone support I jumped to Is a new release still blocked by the release notes? If so, I will have a look if I can update them in an acceptable manner. |
If I recall correctly the (minor) issue was breaking changes over 0.7 which should see another release before they are actually made. But the actual issue is probably none of the maintainers actually having time to (get an overview over and) take care of this. 🙈 |
This is a meta-issue to collect all the things we want to have in v0.8 (see also the milestone) and how we want to get there. I'll try to keep this list updated when things change over time.
Update 11.07.2022 with things sorted according to what will be included in a v0.8 alpha release, what we hopefully manage to do before an actual release (or maybe just let the users do all the testing?), and what will be deferred for the next version.
Major Changes included in / missing for v0.8 alpha
Missing Tests and Open ToDos for v0.8 release
Timezone information of time fields is ignored #181, Timestamp seconds are ignored #182, Timezone information is dropped when converting internally to UTC #188, ...
esp. with regard to line-folding, attribute preservation and interpretation
Wishlist for v0.9
X-WR-CALNAME
vsNAME
)The text was updated successfully, but these errors were encountered: