HackIllinois 2019
Thank you for participating in this dateutil
sprint event. In addition to the issues on the issue tracker (which have been organized by labels), other general improvements - particularly to the documentation, build and test - would be very useful.
Two talks that might be useful, particularly for those who want to improve the documentation:
- PyGotham 2016 - Overview of dateutil library (~30m): Video, Slides
- PyBay 2017 - Deeper dive into time zones and how they work (~40m): Video, Slides
- PyLondinium 2018 - Shorter version of the PyBay talk (~20m): Video, Slides
- Project board: https://github.com/dateutil/dateutil/projects/7
- Creating a commit with multiple authors
- help wanted - Issues that have been vetted and where a PR (or other solution) would be welcome.
- good first issue - These are issues that would probably be good for a first-time open source contributor.
- low difficulty - These are issues where the implementation should be fairly straightforward.
- medium difficulty - These are issues where the implementation is somewhat complex (though almost all of them can likely be accomplished in less than a day for intermediate to advanced Python users)
- tests - Pertaining to the testing
- build - Related to CI build and release
- documentation - Documentation improvements
- time zones - tzinfo classes (tz documentation)
- recurrence rules - rrule documentation - based on RFC 5545 (obsoletes RFC 2445)
- parser - Parses datetime strings (parser documentation)
- relativedelta - Calendar and other "relative" offsets (relativedelta documentation)
These are some important issues that I would very much like in the next release. They are all medium or medium-high difficulty.
- Adding no-zoneinfo build options. This is basically already done and needs some additional testing. This is a medium-high difficulty item.
-
Implementation of the
skip
option in rrule. This is very important and very nearly done.
- Start testing against pypy on Windows - again, medium high difficulty.
We also welcome other general improvements for which there is no specific issue. The biggest "unstructured" improvements to be made are around test coverage and documentation.
The easiest thing to do to improve the testing is getting coverage to 100% (#521). This can be done by navigating through the codecov coverage report and finding lines untouched by the current test suite.
We could also use:
- More hypothesis tests, see for example the existing property tests. One thing that would be amenable to hypothesis testing would be testing that
rrulestr(str(rrule))
works for any givenrrule
, see, for example, this helper in the rrule test suite; note that that helper only works well for finite rrules. - Converting
unittest
-style tests over to usingpytest
. See for example this PR, or this more ambitious one that also parametrizes some tests.
In general, the documentation's organization needs to seriously improved. Some possible workflows for general documentation improvements:
-
Navigate to the documentation and try to get a sense for what the module does, what it is capable of and how it works. If you are confused or find it hard to navigate, take note of this and see if it can be improved.
-
View either my PyGotham (slides) or PyBay (slides) talks and try to read the relevant sections of the documentation. If the documentation does not give you the same understanding as the talks, note how it might be improved.
-
Work through one or more of the documentation exercises, using only the dateutil documentation to guide you, and see where it falls short.
-
Go through the
__all__
attribute in each of the modules and check it against the documentation. There are some completely undocumented classes and functions.