kopia lustrzana https://github.com/collective/icalendar
Merge 13082ec917
into a5fb0dd236
commit
bd3752ad42
|
@ -0,0 +1,31 @@
|
||||||
|
You want to help and contribute? Perfect!
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
These are some contribution examples
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
- Reporting issues to the bugtracker.
|
||||||
|
|
||||||
|
- Submitting pull requests from a forked icalendar repo.
|
||||||
|
|
||||||
|
- Extending the documentation.
|
||||||
|
|
||||||
|
- Sponsor a `sprint <https://plone.org/news-and-events/events/sprints>`_.
|
||||||
|
|
||||||
|
|
||||||
|
For pull requests, keep this in mind
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
- Add a test which proves your fix and make it pass.
|
||||||
|
|
||||||
|
- Describe your change in ``CHANGES.rst``.
|
||||||
|
|
||||||
|
- Add yourself to the ``docs/contribute/credits.rst``.
|
||||||
|
|
||||||
|
Setup for Development
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
If you would like to setup icalendar to
|
||||||
|
contribute changes, the `Installation Section
|
||||||
|
<https://icalendar.readthedocs.io/en/latest/install.html>`_
|
||||||
|
should help you further.
|
|
@ -1,10 +1,13 @@
|
||||||
# Makefile for Sphinx documentation
|
# Makefile for Sphinx documentation
|
||||||
#
|
.DEFAULT_GOAL = help
|
||||||
|
SHELL = bash
|
||||||
|
|
||||||
# You can set these variables from the command line.
|
# You can set these variables from the command line.
|
||||||
SPHINXOPTS =
|
SPHINXOPTS ?=
|
||||||
SPHINXBUILD = sphinx-build
|
|
||||||
SPHINXAUTOBUILD = sphinx-autobuild
|
# Internal variables.
|
||||||
|
SPHINXBUILD = "$(realpath ../.venv/bin/sphinx-build)"
|
||||||
|
SPHINXAUTOBUILD = "$(realpath ../.venv/bin/sphinx-autobuild)"
|
||||||
PAPER =
|
PAPER =
|
||||||
BUILDDIR = _build
|
BUILDDIR = _build
|
||||||
LOCALESDIR = _locales
|
LOCALESDIR = _locales
|
||||||
|
@ -162,6 +165,7 @@ doctest:
|
||||||
@echo "Testing of doctests in the sources finished, look at the " \
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
"results in $(BUILDDIR)/doctest/output.txt."
|
"results in $(BUILDDIR)/doctest/output.txt."
|
||||||
|
|
||||||
|
.PHONY: livehtml
|
||||||
livehtml:
|
livehtml:
|
||||||
$(SPHINXAUTOBUILD) \
|
$(SPHINXAUTOBUILD) \
|
||||||
--watch ../src \
|
--watch ../src \
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
About
|
|
||||||
=====
|
|
||||||
|
|
||||||
`Max M`_ had often needed to parse and generate iCalendar files. Finally, he got
|
|
||||||
tired of writing ad-hoc tools. This package is his attempt at making an
|
|
||||||
iCalendar package for Python. The inspiration has come from the email package
|
|
||||||
in the standard lib, which he thinks is pretty simple, yet efficient and
|
|
||||||
powerful.
|
|
||||||
|
|
||||||
The ``icalendar`` package is an :rfc:`5545` compatible parser/generator for iCalendar files.
|
|
||||||
|
|
||||||
.. _`Max M`: http://www.mxm.dk
|
|
92
docs/api.rst
92
docs/api.rst
|
@ -1,92 +0,0 @@
|
||||||
API Reference
|
|
||||||
-------------
|
|
||||||
|
|
||||||
icalendar.attr
|
|
||||||
++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.attr
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.alarms
|
|
||||||
++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.alarms
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.cal
|
|
||||||
+++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.cal
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.caselessdict
|
|
||||||
++++++++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.caselessdict
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.cli
|
|
||||||
+++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.cli
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.enums
|
|
||||||
+++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.enums
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.error
|
|
||||||
+++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.error
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.param
|
|
||||||
+++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.param
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.parser
|
|
||||||
++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.parser
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.parser_tools
|
|
||||||
++++++++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.parser_tools
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.prop
|
|
||||||
++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.prop
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.tools
|
|
||||||
+++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.tools
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.timezone
|
|
||||||
++++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.timezone
|
|
||||||
:members:
|
|
||||||
|
|
||||||
.. automodule:: icalendar.timezone.tzid
|
|
||||||
:members:
|
|
||||||
|
|
||||||
.. automodule:: icalendar.timezone.tzp
|
|
||||||
:members:
|
|
||||||
|
|
||||||
icalendar.version
|
|
||||||
+++++++++++++++++
|
|
||||||
|
|
||||||
.. automodule:: icalendar.version
|
|
||||||
:members:
|
|
24
docs/conf.py
24
docs/conf.py
|
@ -13,11 +13,12 @@ extensions = [
|
||||||
"sphinx.ext.coverage",
|
"sphinx.ext.coverage",
|
||||||
"sphinx.ext.viewcode",
|
"sphinx.ext.viewcode",
|
||||||
"sphinx_copybutton",
|
"sphinx_copybutton",
|
||||||
|
"sphinx_reredirects",
|
||||||
"sphinx.ext.intersphinx",
|
"sphinx.ext.intersphinx",
|
||||||
"sphinx.ext.autosectionlabel",
|
"sphinx.ext.autosectionlabel",
|
||||||
"sphinx.ext.napoleon",
|
"sphinx.ext.napoleon",
|
||||||
]
|
]
|
||||||
source_suffix = ".rst"
|
source_suffix = {".rst": "restructuredtext"}
|
||||||
master_doc = "index"
|
master_doc = "index"
|
||||||
|
|
||||||
project = "icalendar"
|
project = "icalendar"
|
||||||
|
@ -41,8 +42,8 @@ html_theme_options = {
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"target": "_blank",
|
"target": "_blank",
|
||||||
"rel": "noopener me",
|
"rel": "noopener me",
|
||||||
"class": "nav-link custom-fancy-css",
|
"class": "nav-link custom-fancy-css"
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "PyPI",
|
"name": "PyPI",
|
||||||
|
@ -52,8 +53,8 @@ html_theme_options = {
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"target": "_blank",
|
"target": "_blank",
|
||||||
"rel": "noopener me",
|
"rel": "noopener me",
|
||||||
"class": "nav-link custom-fancy-css",
|
"class": "nav-link custom-fancy-css"
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"navigation_with_keys": True,
|
"navigation_with_keys": True,
|
||||||
|
@ -62,7 +63,6 @@ html_theme_options = {
|
||||||
"show_toc_level": 2,
|
"show_toc_level": 2,
|
||||||
"use_edit_page_button": True,
|
"use_edit_page_button": True,
|
||||||
}
|
}
|
||||||
pygments_style = "sphinx"
|
|
||||||
html_context = {
|
html_context = {
|
||||||
# "github_url": "https://github.com", # or your GitHub Enterprise site
|
# "github_url": "https://github.com", # or your GitHub Enterprise site
|
||||||
"github_user": "collective",
|
"github_user": "collective",
|
||||||
|
@ -70,7 +70,7 @@ html_context = {
|
||||||
"github_version": "main",
|
"github_version": "main",
|
||||||
"doc_path": "docs",
|
"doc_path": "docs",
|
||||||
}
|
}
|
||||||
htmlhelp_basename = "icalendardoc"
|
pygments_style = "sphinx"
|
||||||
|
|
||||||
|
|
||||||
# -- Intersphinx configuration ----------------------------------
|
# -- Intersphinx configuration ----------------------------------
|
||||||
|
@ -89,4 +89,14 @@ intersphinx_mapping = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# -- sphinx-reredirects configuration ----------------------------------
|
||||||
|
# https://documatt.com/sphinx-reredirects/usage.html
|
||||||
|
redirects = {
|
||||||
|
"contributing": "/contribute/index.html",
|
||||||
|
"about": "/index.html#about-icalendar",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
man_pages = [("index", "icalendar", "icalendar Documentation", ["Plone Foundation"], 1)]
|
man_pages = [("index", "icalendar", "icalendar Documentation", ["Plone Foundation"], 1)]
|
||||||
|
|
||||||
|
htmlhelp_basename = "icalendardoc"
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
------------
|
||||||
|
Contributing
|
||||||
|
------------
|
||||||
|
|
||||||
|
.. include:: ../../CONTRIBUTING.rst
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Contribute
|
||||||
|
|
||||||
|
maintenance
|
||||||
|
credits
|
|
@ -0,0 +1,174 @@
|
||||||
|
Maintenance
|
||||||
|
===========
|
||||||
|
|
||||||
|
This chapter describes the maintenance structure of icalendar.
|
||||||
|
|
||||||
|
icalendar Maintainers
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Currently the maintainers are the following people.
|
||||||
|
|
||||||
|
- `@geier <https://github.com/geier>`_
|
||||||
|
- `@jacadzaca <https://github.com/jacadzaca>`_
|
||||||
|
- `@niccokunzmann <https://github.com/niccokunzmann>`_
|
||||||
|
|
||||||
|
Maintainers need the following permissions.
|
||||||
|
|
||||||
|
- ``Admin`` access to the `repository <https://github.com/collective/icalendar>`_.
|
||||||
|
These can be enabled by a current maintainer or a GitHub organization administrator in the `settings <https://github.com/collective/icalendar/settings/access>`_.
|
||||||
|
- ``Maintainer`` or ``Owner`` access to the `PyPI project <https://pypi.org/project/icalendar/>`_.
|
||||||
|
Each owner and maintainer needs a PyPI account.
|
||||||
|
All PyPI accounts require two-factor authentication (2FA) enabled.
|
||||||
|
Owners can invite either new owners or maintainers in the `collaboration Section <https://pypi.org/manage/project/icalendar/collaboration/>`_ on PyPI.
|
||||||
|
- ``Maintainer`` access to the `Read the Docs project <https://readthedocs.org/projects/icalendar/>`_.
|
||||||
|
Existing maintainers can invite another maintainer through the `Maintainers <https://app.readthedocs.org/dashboard/icalendar/users/create/>`_ page.
|
||||||
|
- ``Environments/Configure PyPI`` access for GitHub Workflows to grant new releases from tags.
|
||||||
|
Organization owners and repository administrators can grant this access in `Settings → Environments → PyPI <https://github.com/collective/icalendar/settings/environments/674266024/edit>`_
|
||||||
|
by adding the GitHub username to the list of :guilabel:`Required Reviewers`.
|
||||||
|
|
||||||
|
|
||||||
|
Collaborators
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Collaborators have write access to the repository.
|
||||||
|
As a collaborator, you can
|
||||||
|
|
||||||
|
- merge pull requests, and
|
||||||
|
- initiate a new release.
|
||||||
|
|
||||||
|
We want to have as many knowledgeable people with write access taking responsibility as possible for these reasons:
|
||||||
|
|
||||||
|
- a constant flow of fixes and new features
|
||||||
|
- better code review
|
||||||
|
- lower bus factor and backup
|
||||||
|
- future maintainers
|
||||||
|
|
||||||
|
Nobody should merge their own pull requests.
|
||||||
|
If you like to review or merge pull requests of other people and you have shown that you know how to contribute, you can ask for becoming a collaborator.
|
||||||
|
A maintainer may ask if you would like to become one.
|
||||||
|
|
||||||
|
|
||||||
|
New releases
|
||||||
|
------------
|
||||||
|
|
||||||
|
This section explains how to create a new release on `PyPI <https://pypi.org/project/icalendar/>`_.
|
||||||
|
|
||||||
|
Since collaborators and maintainers have write access to the repository, they can start the release process.
|
||||||
|
However, only people with ``Environments/Configure PyPI`` access can approve an automated release to PyPI.
|
||||||
|
|
||||||
|
#. Check that the file :file:`CHANGES.rst` is up to date with the `latest merged pull requests <https://github.com/collective/icalendar/pulls?q=is%3Apr+is%3Amerged>`_, and the version you want to release is correctly named.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
export VERSION=6.3.0
|
||||||
|
|
||||||
|
#. Create a commit on the ``release`` branch (or equivalent) to release this version.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git checkout main
|
||||||
|
git pull
|
||||||
|
git checkout -b release main
|
||||||
|
git add CHANGES.rst
|
||||||
|
git commit -m"version $VERSION"
|
||||||
|
|
||||||
|
#. Push the commit and `create a pull request <https://github.com/collective/icalendar/compare?expand=1>`_.
|
||||||
|
Here is an `example pull request #457 <https://github.com/collective/icalendar/pull/457>`_.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git push -u origin release
|
||||||
|
|
||||||
|
#. See if the `CI-tests <https://github.com/collective/icalendar/actions>`_ are running on the pull request.
|
||||||
|
If they are not running, no new release can be issued.
|
||||||
|
If the CI passes, merge the pull request.
|
||||||
|
|
||||||
|
#. Clean up behind you!
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git checkout main
|
||||||
|
git pull
|
||||||
|
git branch -d release
|
||||||
|
git push -d origin release
|
||||||
|
|
||||||
|
#. Create a tag for the release and see if the `CI-tests`_ are running.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git checkout main
|
||||||
|
git pull
|
||||||
|
git tag "v$VERSION"
|
||||||
|
git push upstream "v$VERSION" # could be origin or whatever reference
|
||||||
|
|
||||||
|
#. Once the tag is pushed and its `CI-tests`_ are passing, maintainers will get an e-mail:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
Subject: Deployment review in collective/icalendar
|
||||||
|
|
||||||
|
tests: PyPI is waiting for your review
|
||||||
|
|
||||||
|
#. If the release is approved by a maintainer, it will be pushed to `PyPI`_.
|
||||||
|
If that happens, notify the issues that were fixed about this release.
|
||||||
|
#. Copy this to the start of ``CHANGES.rst``.
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
6.3.1 (unreleased)
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Minor changes:
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
Breaking changes:
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
New features:
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
#. Push the new ``CHANGELOG`` so it is used for future changes.
|
||||||
|
|
||||||
|
.. code-block:: shell
|
||||||
|
|
||||||
|
git checkout main
|
||||||
|
git pull
|
||||||
|
git add CHANGES.rst
|
||||||
|
git commit -m"Add new CHANGELOG section for future release
|
||||||
|
|
||||||
|
See https://icalendar.readthedocs.io/en/latest/maintenance.html#new-releases"
|
||||||
|
git push upstream main # could be origin or whatever reference
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
This section contains useful links for maintainers and collaborators.
|
||||||
|
|
||||||
|
- `Future of icalendar, looking for maintainer #360 <https://github.com/collective/icalendar/discussions/360>`_
|
||||||
|
- `Comment on the Plone tests running with icalendar <https://github.com/collective/icalendar/pull/447#issuecomment-1277643634>`_
|
||||||
|
|
||||||
|
|
||||||
|
Updating Python versions
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
When adding support for a new Python version, or removing support for an old one, the following files need to be updated:
|
||||||
|
|
||||||
|
:file:`.github/workflows/tests.yml`
|
||||||
|
Add or remove the Python version from the test matrix.
|
||||||
|
:file:`tox.ini`
|
||||||
|
Update the ``envlist`` to include or remove the Python version.
|
||||||
|
:file:`pyproject.toml`
|
||||||
|
Update the ``requires-python`` line and the ``classifiers`` list.
|
||||||
|
:file:`README.rst`
|
||||||
|
Update the compatibility information.
|
||||||
|
:file:`docs/maintenance.rst`
|
||||||
|
Update this list if any new files need to be modified.
|
||||||
|
|
||||||
|
Remember to test the changes thoroughly, and update any documentation that mentions supported Python versions.
|
|
@ -1,24 +1,47 @@
|
||||||
.. include:: ../README.rst
|
.. include:: ../README.rst
|
||||||
|
|
||||||
|
|
||||||
|
.. _about-icalendar:
|
||||||
|
|
||||||
|
About
|
||||||
|
=====
|
||||||
|
|
||||||
|
`Max M`_ had often needed to parse and generate iCalendar files. Finally, he got
|
||||||
|
tired of writing ad-hoc tools. This package is his attempt at making an
|
||||||
|
iCalendar package for Python. The inspiration has come from the email package
|
||||||
|
in the standard lib, which he thinks is pretty simple, yet efficient and
|
||||||
|
powerful.
|
||||||
|
|
||||||
|
The ``icalendar`` package is an :rfc:`5545` compatible parser/generator for iCalendar files.
|
||||||
|
|
||||||
|
.. _`Max M`: http://www.mxm.dk
|
||||||
|
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
========
|
========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: API Reference
|
||||||
|
|
||||||
|
reference/icalendar
|
||||||
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
about
|
|
||||||
install
|
install
|
||||||
usage
|
usage
|
||||||
api
|
|
||||||
cli
|
cli
|
||||||
credits
|
|
||||||
maintenance
|
|
||||||
license
|
license
|
||||||
changelog
|
changelog
|
||||||
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:titlesonly:
|
:caption: Contribute
|
||||||
|
|
||||||
contributing
|
contribute/index
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:titlesonly:
|
||||||
security
|
security
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
Maintenance
|
|
||||||
===========
|
|
||||||
|
|
||||||
The goal of this section is to make sure that the ``icalendar`` library receives a
|
|
||||||
clear maintenance structure with it that is transparent.
|
|
||||||
|
|
||||||
icalendar Maintainers
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
Currently the maintainers are the following people.
|
|
||||||
|
|
||||||
- `@geier <https://github.com/geier>`_
|
|
||||||
- `@jacadzaca <https://github.com/jacadzaca>`_
|
|
||||||
- `@niccokunzmann <https://github.com/niccokunzmann>`_
|
|
||||||
|
|
||||||
Maintainers need the following.
|
|
||||||
|
|
||||||
- ``Admin`` access to the `repository <https://github.com/collective/icalendar>`_.
|
|
||||||
These can be enabled by a current maintainer or an GitHub organisation administrator
|
|
||||||
in the `settings <https://github.com/collective/icalendar/settings/access>`_.
|
|
||||||
- ``Maintainer`` or ``Owner`` access to the `PyPI project <https://pypi.org/project/icalendar/>`_.
|
|
||||||
The new maintainer needs a PyPI account for this with Two Factor Authentication (2FA) enabled
|
|
||||||
because ``icalendar`` is a critical project on PyPI.
|
|
||||||
The access can be given in the `collaboration Section <https://pypi.org/manage/project/icalendar/collaboration/>`_ on PyPI.
|
|
||||||
- ``Maintainer`` access to the `Read The Docs project <https://readthedocs.org/projects/icalendar/>`_.
|
|
||||||
This can be given by existing maintainers listed on the project's page.
|
|
||||||
TODO: link to the settings
|
|
||||||
- ``PyPI environment access for GitHub Actions`` grant new releases from tags.
|
|
||||||
This access can be granted in `Settings → Environments → PyPI <https://github.com/collective/icalendar/settings/environments/674266024/edit>`__
|
|
||||||
by adding the GitHub username to the list of "Required Reviewers".
|
|
||||||
|
|
||||||
|
|
||||||
Collaborators
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Collaborators are people with write access to the repository.
|
|
||||||
As a collaborator, you can
|
|
||||||
|
|
||||||
- merge Pull Requests,
|
|
||||||
- initiate a new release, see below.
|
|
||||||
|
|
||||||
We want to have as many knowledgeable people with write access taking responsibility as possible for these reasons:
|
|
||||||
|
|
||||||
- a constant flow of fixes and new features
|
|
||||||
- better code review
|
|
||||||
- lower bus factor and backup
|
|
||||||
- future maintainers
|
|
||||||
|
|
||||||
Nobody should merge their own pull requests.
|
|
||||||
If you like to review or merge pull requests of other people and you have shown that you know how to contribute,
|
|
||||||
you can ask for becoming a collaborator or a maintainer asks you if you would like to become one.
|
|
||||||
|
|
||||||
New Releases
|
|
||||||
------------
|
|
||||||
|
|
||||||
This explains how to create a new release on `PyPI <https://pypi.org/project/icalendar/>`_.
|
|
||||||
|
|
||||||
Since collaborators and maintainers have write access the the repository, they can start the release process.
|
|
||||||
However, only people with ``PyPI environment access for GitHub Actions`` can approve an automated release to PyPI.
|
|
||||||
|
|
||||||
|
|
||||||
1. Check that the ``CHANGES.rst`` is up to date with the `latest merged pull requests <https://github.com/collective/icalendar/pulls?q=is%3Apr+is%3Amerged>`__
|
|
||||||
and the version you want to release is correctly named.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
export VERSION=6.3.0
|
|
||||||
|
|
||||||
2. Create a commit on the ``release`` branch (or equivalent) to release this version.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git checkout main
|
|
||||||
git pull
|
|
||||||
git checkout -b release main
|
|
||||||
git add CHANGES.rst
|
|
||||||
git commit -m"version $VERSION"
|
|
||||||
|
|
||||||
3. Push the commit and `create a pull request <https://github.com/collective/icalendar/compare?expand=1>`__
|
|
||||||
Here is an `example pull request #457 <https://github.com/collective/icalendar/pull/457>`__.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git push -u origin release
|
|
||||||
|
|
||||||
4. See if the `CI-tests <https://github.com/collective/icalendar/actions>`_ are running on the pull request.
|
|
||||||
If they are not running, no new release can be issued.
|
|
||||||
If the tests are running, merge the pull request.
|
|
||||||
5. Clean up behind you!
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git checkout main
|
|
||||||
git pull
|
|
||||||
git branch -d release
|
|
||||||
git push -d origin release
|
|
||||||
|
|
||||||
6. Create a tag for the release and see if the `CI-tests`_ are running.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git checkout main
|
|
||||||
git pull
|
|
||||||
git tag "v$VERSION"
|
|
||||||
git push upstream "v$VERSION" # could be origin or whatever reference
|
|
||||||
|
|
||||||
7. Once the tag is pushed and its `CI-tests`_ are passing, maintainers will get an e-mail::
|
|
||||||
|
|
||||||
Subject: Deployment review in collective/icalendar
|
|
||||||
|
|
||||||
tests: PyPI is waiting for your review
|
|
||||||
|
|
||||||
8. If the release is approved by a maintainer. It will be pushed to `PyPI`_.
|
|
||||||
If that happens, notify the issues that were fixed about this release.
|
|
||||||
9. Copy this to the start of ``CHANGES.rst``::
|
|
||||||
|
|
||||||
6.3.1 (unreleased)
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Minor changes:
|
|
||||||
|
|
||||||
- ...
|
|
||||||
|
|
||||||
Breaking changes:
|
|
||||||
|
|
||||||
- ...
|
|
||||||
|
|
||||||
New features:
|
|
||||||
|
|
||||||
- ...
|
|
||||||
|
|
||||||
Bug fixes:
|
|
||||||
|
|
||||||
- ...
|
|
||||||
|
|
||||||
10. Push the new CHANGELOG so it is used for future changes.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git checkout main
|
|
||||||
git pull
|
|
||||||
git add CHANGES.rst
|
|
||||||
git commit -m"Add new CHANGELOG section for future release
|
|
||||||
|
|
||||||
See https://icalendar.readthedocs.io/en/latest/maintenance.html#new-releases"
|
|
||||||
git push upstream main # could be origin or whatever reference
|
|
||||||
|
|
||||||
Links
|
|
||||||
-----
|
|
||||||
|
|
||||||
This section contains useful links for maintainers and collaborators:
|
|
||||||
|
|
||||||
- `Future of icalendar, looking for maintainer #360 <https://github.com/collective/icalendar/discussions/360>`__
|
|
||||||
- `Comment on the Plone tests running with icalendar <https://github.com/collective/icalendar/pull/447#issuecomment-1277643634>`__
|
|
||||||
|
|
||||||
Updating Python Versions
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
When adding support for a new Python version or removing support for an old one, the following files need to be updated:
|
|
||||||
|
|
||||||
1. ``.github/workflows/tests.yml``: Add or remove the Python version from the test matrix.
|
|
||||||
2. ``tox.ini``: Update the ``envlist`` to include or remove the Python version.
|
|
||||||
3. ``pyproject.toml``: Update the ``requires-python`` line and the ``classifiers`` list.
|
|
||||||
4. ``README.rst``: Update the compatibility information.
|
|
||||||
5. ``docs/maintenance.rst``: Update this list if any new files need to be modified.
|
|
||||||
|
|
||||||
Remember to test the changes thoroughly and update any documentation that mentions supported Python versions.
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.alarms module
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.alarms
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.attr module
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.attr
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.alarm module
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.alarm
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.availability module
|
||||||
|
=================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.availability
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.available module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.available
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.calendar module
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.calendar
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.component module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.component
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.component\_factory module
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.component_factory
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.event module
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.event
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.examples module
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.examples
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.free\_busy module
|
||||||
|
===============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.free_busy
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.journal module
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.journal
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,26 @@
|
||||||
|
icalendar.cal package
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
Submodules
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 4
|
||||||
|
|
||||||
|
icalendar.cal.alarm
|
||||||
|
icalendar.cal.availability
|
||||||
|
icalendar.cal.available
|
||||||
|
icalendar.cal.calendar
|
||||||
|
icalendar.cal.component
|
||||||
|
icalendar.cal.component_factory
|
||||||
|
icalendar.cal.event
|
||||||
|
icalendar.cal.examples
|
||||||
|
icalendar.cal.free_busy
|
||||||
|
icalendar.cal.journal
|
||||||
|
icalendar.cal.timezone
|
||||||
|
icalendar.cal.todo
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.timezone module
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.timezone
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cal.todo module
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cal.todo
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.caselessdict module
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.caselessdict
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.cli module
|
||||||
|
====================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.cli
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.compatibility module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.compatibility
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.enums module
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.enums
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.error module
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.error
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.param module
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.param
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.parser module
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.parser
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.parser\_tools module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.parser_tools
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.prop module
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.prop
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,36 @@
|
||||||
|
icalendar package
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. automodule:: icalendar
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
Subpackages
|
||||||
|
-----------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 4
|
||||||
|
|
||||||
|
icalendar.cal
|
||||||
|
icalendar.timezone
|
||||||
|
|
||||||
|
Submodules
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 4
|
||||||
|
|
||||||
|
icalendar.alarms
|
||||||
|
icalendar.attr
|
||||||
|
icalendar.caselessdict
|
||||||
|
icalendar.cli
|
||||||
|
icalendar.compatibility
|
||||||
|
icalendar.enums
|
||||||
|
icalendar.error
|
||||||
|
icalendar.param
|
||||||
|
icalendar.parser
|
||||||
|
icalendar.parser_tools
|
||||||
|
icalendar.prop
|
||||||
|
icalendar.tools
|
||||||
|
icalendar.version
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.equivalent\_timezone\_ids module
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.equivalent_timezone_ids
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.equivalent\_timezone\_ids\_result module
|
||||||
|
===========================================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.equivalent_timezone_ids_result
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.provider module
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.provider
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.pytz module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.pytz
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,22 @@
|
||||||
|
icalendar.timezone package
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
Submodules
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 4
|
||||||
|
|
||||||
|
icalendar.timezone.equivalent_timezone_ids
|
||||||
|
icalendar.timezone.equivalent_timezone_ids_result
|
||||||
|
icalendar.timezone.provider
|
||||||
|
icalendar.timezone.pytz
|
||||||
|
icalendar.timezone.tzid
|
||||||
|
icalendar.timezone.tzp
|
||||||
|
icalendar.timezone.windows_to_olson
|
||||||
|
icalendar.timezone.zoneinfo
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.tzid module
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.tzid
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.tzp module
|
||||||
|
=============================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.tzp
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.windows\_to\_olson module
|
||||||
|
============================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.windows_to_olson
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.timezone.zoneinfo module
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.timezone.zoneinfo
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.tools module
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.tools
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
icalendar.version module
|
||||||
|
========================
|
||||||
|
|
||||||
|
.. automodule:: icalendar.version
|
||||||
|
:members:
|
||||||
|
:show-inheritance:
|
||||||
|
:undoc-members:
|
|
@ -0,0 +1,7 @@
|
||||||
|
src
|
||||||
|
===
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 4
|
||||||
|
|
||||||
|
icalendar
|
|
@ -218,5 +218,6 @@ dev = [
|
||||||
"pydata-sphinx-theme>=0.14.4",
|
"pydata-sphinx-theme>=0.14.4",
|
||||||
"sphinx-autobuild>=2021.3.14",
|
"sphinx-autobuild>=2021.3.14",
|
||||||
"sphinx-copybutton>=0.5.2",
|
"sphinx-copybutton>=0.5.2",
|
||||||
|
"sphinx-reredirects>=0.1.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,5 @@ Sphinx>=7
|
||||||
pydata-sphinx-theme
|
pydata-sphinx-theme
|
||||||
sphinx-autobuild
|
sphinx-autobuild
|
||||||
sphinx-copybutton
|
sphinx-copybutton
|
||||||
|
sphinx-reredirects
|
||||||
.
|
.
|
||||||
|
|
Ładowanie…
Reference in New Issue