Skip to content

Switch to towncrier to automatically manage the change log#1389

Merged
stevepiercy merged 8 commits into
mainfrom
towncrier-for-change-log
May 16, 2026
Merged

Switch to towncrier to automatically manage the change log#1389
stevepiercy merged 8 commits into
mainfrom
towncrier-for-change-log

Conversation

@stevepiercy
Copy link
Copy Markdown
Member

@stevepiercy stevepiercy commented May 15, 2026

Closes issue

Closes #1256.

Description

  • Added towncrier as a development dependency
  • Configured towncrier in pyproject.toml, adding supported types.
  • Updated Makefile with two commands, make changes-draft to see the draft of what would be output, and make changes to update CHANGES.rst and remove the change log entries from /news
  • Created a /news directory with .gitkeep file to keep the directory around.
  • Converted existing change log entries in CHANGES.rst to compliant change log entries in /news
  • Updated Contribute documentation section with new instructions for "Create a change log entry" and explain what makes a good entry.
  • Updated Maintenance documentation, replacing and removing obsolete manual steps with a single command of make changes.
  • Fixed link in tests.yml GitHub workflow to the change log.
  • Updated pull_request_template.md with link to the updated contributor documentation.

Checklist

  • I've added a change log entry to CHANGES.rst /news.
  • I've added or updated tests if applicable.
  • I've run and ensured all tests pass locally by following Run tests.
  • I've added or edited documentation, both as docstrings to be rendered in the API documentation and narrative documentation, as necessary.

Additional information

Check out this branch and run:

make changes-draft

Output

Makefile:173: warning: overriding commands for target `changes'
Makefile:93: warning: ignoring old commands for target `changes'
"/Users/stevepiercy/projects/icalendar/.venv/bin/towncrier" build --draft --version 7.1.1 --yes
Loading template...
Finding news fragments...
Rendering news fragments...
Draft only -- nothing has been written.
What is seen below is what would be written.

7.1.1 (2026-05-14)
------------------

New features
~~~~~~~~~~~~

- Created an :attr:`~icalendar.prop.dt.period.vPeriod.ical_value` property for the :class:`~icalendar.prop.dt.period.vPeriod` component. @ZairKSM (`Issue #876 <https://github.com/collective/icalendar/issues/876>`_)
- Created a :meth:`~icalendar.prop.recur.weekday.vWeekday.ical_value` property for the :class:`~icalendar.prop.recur.weekday.vWeekday` component, mirroring the existing pattern on :class:`~icalendar.prop.boolean.vBoolean`. @mvanhorn (`Issue #1360 <https://github.com/collective/icalendar/issues/1360>`_)


Bug fixes
~~~~~~~~~

- Strictly validate BINARY property values in :attr:`vBinary.from_ical() <icalendar.prop.binary.vBinary.from_ical>` and reject malformed Base64 input instead of silently accepting invalid characters. @uwezkhan (`Issue #1349 <https://github.com/collective/icalendar/issues/1349>`_)


Documentation
~~~~~~~~~~~~~

- Replace the RFC quotations in the docstrings for :attr:`Alarm.REPEAT <icalendar.cal.alarm.Alarm.REPEAT>` and :attr:`Alarm.DURATION <icalendar.cal.alarm.Alarm.DURATION>` with Pythonic descriptions, including parameter notes, conformance references, and worked examples. @tmchow (`Issue #1244 <https://github.com/collective/icalendar/issues/1244>`_)
- Edited contributor documentation for how to add a change log entry, and maintenance documentation for how to process news fragments. @stevepiercy (`Issue #1256 <https://github.com/collective/icalendar/issues/1256>`_)


Dependency changes
~~~~~~~~~~~~~~~~~~

- Added `towncrier <https://pypi.org/project/towncrier/>`_ to development dependencies. @stevepiercy (`Issue #1256 <https://github.com/collective/icalendar/issues/1256>`_)


Internal changes
~~~~~~~~~~~~~~~~

- Switched from manual change log management to `towncrier <https://pypi.org/project/towncrier/>`_ to automate the process. @stevepiercy (`Issue #1256 <https://github.com/collective/icalendar/issues/1256>`_)
- Bump PyPy from 3.10 to 3.11 for testing. @stevepiercy (`Issue #1383 <https://github.com/collective/icalendar/issues/1383>`_)


📚 Documentation preview 📚: https://icalendar--1389.org.readthedocs.build/

- Added towncrier as a development dependency
- Configured towncrier in `pyproject.toml`, adding supported types.
- Updated `Makefile` with two commands, `make changes-draft` to see the draft of what would be output, and `make changes` to update `CHANGES.rst` and remove the change log entries from `/news`
- Created a `/news` directory with `.gitkeep` file to keep the directory around.
- Converted existing change log entries in `CHANGES.rst` to compliant change log entries in `/news`
- Updated Contribute documentation section with new instructions for "Create a change log entry" and explain what makes a good entry.
- Updated Maintenance documentation, replacing and removing obsolete manual steps with a single command of `make changes`.
- Fixed link in `tests.yml` GitHub workflow to the change log.
- Updated `pull_request_template.md` with link to the updated contributor documentation.

Closes #1256.
@read-the-docs-community
Copy link
Copy Markdown

read-the-docs-community Bot commented May 15, 2026

Documentation build overview

📚 icalendar | 🛠️ Build #32713149 | 📁 Comparing 3235e06 against latest (66fb3e1)

  🔍 Preview build  

4 files changed
± 404.html
± contribute/index.html
± contribute/maintenance.html
± reference/changelog.html

@coveralls
Copy link
Copy Markdown

coveralls commented May 15, 2026

Coverage Report for CI Build 25952817338

Coverage remained the same at 97.775%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 12624
Covered Lines: 12348
Line Coverage: 97.81%
Relevant Branches: 770
Covered Branches: 748
Branch Coverage: 97.14%
Branches in Coverage %: Yes
Coverage Strength: 6.84 hits per line

💛 - Coveralls

Copy link
Copy Markdown
Member

@SashankBhamidi SashankBhamidi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Few things:

Comment thread Makefile Outdated
Comment thread docs/contribute/maintenance.rst Outdated
Comment thread news/876.feature
Comment thread pyproject.toml
Comment thread Makefile
Copy link
Copy Markdown
Member

@SashankBhamidi SashankBhamidi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says "Created a /news directory with .gitkeep file to keep the directory around", but ls news/ shows no .gitkeep. After release, the directory will be empty and untracked by git.

@stevepiercy
Copy link
Copy Markdown
Member Author

The PR description says "Created a /news directory with .gitkeep file to keep the directory around", but ls news/ shows no .gitkeep. After release, the directory will be empty and untracked by git.

Thanks. I thought it would get detected, but I needed to git add. Done in e493842.

That should address all your points. One more review please, @SashankBhamidi?

@SashankBhamidi
Copy link
Copy Markdown
Member

Thanks!

Just one still open: the maintenance.rst git add line, I tested it end-to-end and the deleted news fragments don't get committed.

The Issue/#PR label thing I raised on pyproject.toml is cosmetic, feel free to skip if you're happy with towncrier's default.

Co-authored-by: Sashank <hello@sashank.wiki>
@stevepiercy
Copy link
Copy Markdown
Member Author

@SashankBhamidi one more review, please.

Ignore any issues in maintenance.rst. We need to fix it in #1350. After this PR is merged, let's work on that #1350 together to get it right, and even do a new minor release.

Copy link
Copy Markdown
Member

@SashankBhamidi SashankBhamidi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Note: maintenance.rst now has duplicate git checkout / git commit lines from 3235e06, flag for #1350 :)

@stevepiercy stevepiercy merged commit c343662 into main May 16, 2026
33 checks passed
@stevepiercy stevepiercy deleted the towncrier-for-change-log branch May 16, 2026 05:21
gistrec added a commit to gistrec/icalendar that referenced this pull request May 19, 2026
Upstream switched to towncrier-managed CHANGES.rst in collective#1389 and cut
release 7.1.1. Resolved the CHANGES.rst conflict by accepting
upstream's regenerated file and migrating this PR's change log entry
to a towncrier fragment at news/1370.bugfix per the new contributor
workflow (docs/contribute/index.rst).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use a better change log management system

3 participants