--------------------
Minor changes:
- Test that all code works with both ``pytz`` and ``zoneinfo``.
- Add message to GitHub release, pointing to the changelog
- Make coverage report submission optional for pull requests
- Parallelize coverage
- Rename ``master`` branch to ``main``, see `Issue
<https://github.com/collective/icalendar/issues/627>`_
- Update ``docs/usage.rst`` to use zoneinfo instead of pytz.
- Added missing public classes and functions to API documentation.
- Improved namespace management in the ``icalendar`` directory.
- Add Python version badge and badge for test coverage
- Remove 4.x badge
- Update list of ``tox`` environments
- Use Coveralls' GitHub Action
- Check distribution in CI
Breaking changes:
- Use ``zoneinfo`` for ``icalendar`` objects created from strings,
see `Issue 609 <https://github.com/collective/icalendar/issues/609>`_.
This is an tested extension of the functionality, not a restriction:
If you create ``icalendar`` objects with ``pytz`` timezones in your code,
``icalendar`` will continue to work in the same way.
Your code is not affected.
``zoneinfo`` will be used for those **objects that** ``icalendar``
**creates itself**.
This happens for example when parsing an ``.ics`` file, strings or bytes with
``from_ical()``.
If you rely on ``icalendar`` providing timezones from ``pytz``, you can add
one line to your code to get the behavior of versions below 6:
.. code:: Python
import icalendar
icalendar.use_pytz()
- Replaced ``pkg_resources.get_distribution`` with ``importlib.metadata`` in
``docs/conf.py`` to allow building docs on Python 3.12.
- Remove ``is_broken`` property. Use ``errors`` instead to check if a
component had suppressed parsing errors.
See `Issue 424 <https://github.com/collective/icalendar/issues/424>`_.
- Remove untested and broken ``LocalTimezone`` and ``FixedOffset`` tzinfo
sub-classes, see `Issue 67 <https://github.com/collective/icalendar/issues/67>`_
- Remove Python 3.7 as compatible. icalendar is compatible with Python
versions 3.8 - 3.12, and PyPy3.
- Remove ``pytz`` as a dependency of ``icalendar``. If you require ``pytz``,
add it to your dependency list or install it additionally with::
pip install icalendar==6.* pytz
New features:
- Check code quality with `Ruff <https://docs.astral.sh/ruff/>`_, optional report
- Test compatibility with Python 3.12
- Add function ``icalendar.use_pytz()``.
- Allows selecting components with ``walk(select=func)`` where ``func`` takes a
component and returns ``True`` or ``False``.
- Add compatibility to :rfc:`7529`, adding ``vMonth`` and ``vSkip``
- Add ``sphinx-autobuild`` for ``livehtml`` Makefile target.
- Add pull request preview on Read the Docs, building only on changes to documentation-related files.
- Add link to pull request preview builds in the pull request description only when there are changes to documentation-related files.
- Add documentation of live HTML preview of documentation and clean up of ``install.rst``.
- Add ``sphinx-copybutton`` to allow copying code blocks with a single click of a button.
Bug fixes:
- Change documentation to represent compatibility with Python 3.8 - 3.12, and PyPy3.
- Rename RFC 2445 to RFC 5545, see `Issue 278
<https://github.com/collective/icalendar/issues/278>`_