dateutil is a small project with very limited maintainer time. Read CONTRIBUTING.md before making changes; this file covers the things agents most often get wrong.
Search for existing work first, and include closed and merged items:
gh issue list --repo dateutil/dateutil --state all --search "<key words>" gh pr list --repo dateutil/dateutil --state all --search "<key words>" gh pr list --repo dateutil/dateutil --state all --search "<issue number>"
Try several phrasings: the same bug is often reported in terms of different functions (e.g. parse vs. parser.parser) or different time zones.
master before going further.Before reporting a bug, confirm it reproduces on the current master branch.
Follow the bug report guidance in CONTRIBUTING.md: a minimal, self-contained reproducer, the dateutil and Python versions, and what happens versus what you expected. For new features, open an issue for discussion before writing a pull request.
gh pr create --body, --fill, the REST API and MCP tools do not apply .github/pull_request_template.md for you. Read the template and fill it in; do not delete its sections or rewrite the checklist.changelog.d/ named <number>.<type>.rst, where <type> is one of feature, bugfix, doc, deprecations, data or misc (see [tool.towncrier] in pyproject.toml). See the changelog section of CONTRIBUTING.md for the required wording, including the “Reported by” / “Fixed by” credits. Never invent an issue or PR number; if you do not have one yet, add the fragment after the PR is opened.- Name <email> (gh: @handle) **D**. Ask them how they want their name and e-mail to appear (the e-mail is optional); do not guess or use details from git config without asking.Co-authored-by: trailers for an AI tool, in commits or in the PR description. If the user prefers to credit the tool, they may use an Assisted-by: trailer instead, e.g. Assisted-by: <agent name>:<model and version>.The maintainers strongly prefer clear and concise communication. Avoid large blocks of text and front-load communications with concise information about what needs improvement, what the current behavior is and what you expect. For large amounts of background information or appendices, please use a details tag.
Closes #N for the issue it fixes. The diff already shows what changed, so do not summarize it file by file.Additionally, please do not directly comment on the repo, file issues or make non-draft PRs without human review.
dateutil.rruleThe goal with rrule is to be compliant with the iCalendar RFCs (2445, 5545 and the others in that lineage that have updated the RRULE and related data types). Please keep this in mind when evaluating bugs and potential changes to the API.
dateutil.tzMost of what dateutil.tz does has now been supplanted by the zoneinfo module and datetime.timezone. If looking for something to do, better to focus on other modules, but changes and bugfixes are accepted here.
dateutil.parserFor the most part, dateutil.parser.parse is frozen. We may accept improvements which provably give identical behavior or improve the clearly specified contract of the function. Most of the function's behavior is very poorly specified, and so most parse changes will not be accepted.
dateutil.parser.isoparse has a much better-specified contract, so changes to it do not have the same restrictions.
There are no special instructions for other modules.
Run tests with tox and in isolated environments if possible.