Provided by: python3-sphinx-chango_0.6.0-1_all bug

NAME

       chango - chango 0.6.0 [image: PyPi Package Version] [image]
        <https://pypi.org/project/chango/>[image: Supported Python versions] [image]
        <https://pypi.org/project/chango/>[image: Documentation Status] [image]
        <https://chango.readthedocs.io/>[image: MIT License] [image]
        <https://mit-license.org/>[image: Github Actions workflow] [image]
        <https://github.com/Bibo-Joshi/chango/>[image: Code coverage] [image]
        <https://codecov.io/gh/Bibo-Joshi/chango>[image: pre-commit.ci status] [image]
        <https://results.pre-commit.ci/latest/github/Bibo-Joshi/chango/main>[image: Ruff] [image]
        <https://github.com/astral-sh/ruff>.SH INTRODUCTION

       chango is a changelog generation tool.  Changes are described alongside the code changes in the codebase.
       chango  extracts  these  changes  and  generates  a  changelog.   chango  consists of both a command line
       interface and a Python API.  All aspects of the data formats, storage, and rendering are customizable via
       an interface class approach.

INSTALLING

       You can install or upgrade chango via

          pipx install chango --upgrade

       Note that installation via pipx <https://pipx.pypa.io/stable/> is recommended  since  chango  should  not
       interfere with your projects dependencies.

MOTIVATION

       Informative  and  helpful  changelogs  (or  release notes) are an essential part of software development.
       They are a core part of the communication between developers and users.  At the same time,  creating  and
       maintaining  changelogs  can  be a tedious and error-prone task, especially since this is often done only
       when a new release is prepared.  chango aims to make the process of maintaining  changelogs  as  easy  as
       possible.  This is achieved roughly by two means:

       1. Shifting  the  creation  of changelogs to the time of development: Changes are described alongside the
          code changes in the codebase.  This reduces the chance to forget about crucial details in the  changes
          that  should  be  mentioned  in  the changelog.  It also ensures that the changelog undergoes the same
          review process as the code changes.

       2. Automating the generation of changelogs: chango extracts the changes from the codebase and generates a
          changelog.  At release time, the changelog is thus already  up-to-date  and  requires  close  to  zero
          manual work.

   Inspiration
       This package is heavily inspired by the towncrier <https://towncrier.readthedocs.io/>  and reno <https://
       reno.readthedocs.io/>  packages.   Both  packages  are  excellent  tools for changelog generation but are
       rather specialized in their use cases.  chango aims to be  more  flexible  and  customizable  than  these
       packages.

QUICK START

       A minimal setup of using chango for your project consists of the following steps.

   Building a ChanGo instance
       chango is designed to be highly customizable.

       Store the following code in a file named chango.py in the root of your project.

          from chango.concrete import (
              CommentChangeNote,
              CommentVersionNote,
              DirectoryChanGo,
              DirectoryVersionScanner,
              HeaderVersionHistory,
          )

          chango_instance = DirectoryChanGo(
              change_note_type=CommentChangeNote,
              version_note_type=CommentVersionNote,
              version_history_type=HeaderVersionHistory,
              scanner=DirectoryVersionScanner(
                  base_directory="changes", unreleased_directory="unreleased"
              ),
          )

       Create the directories changes and changes/unreleased in the root of your project.

       The  chango_instance  is  the  object  that the CLI will use to interact with the changelog.  It contains
       information about the data type of individual changes, versions and the history of versions.  It also has
       instructions on how the individual changes are stored and how they are extracted from the codebase.   All
       these  aspects  can  be  customized  by providing different classes to the DirectoryChanGo constructor or
       using a different implementation of the ChanGo interface.

   Configuring pyproject.toml
       We still need to make the chango CLI aware of the chango_instance.  This is done by adding the  following
       lines to your pyproject.toml file.

          [tool.chango]
          sys_path = "."
          chango_instance = { name= "chango_instance", module = "chango" }

       This instructs the CLI to import the chango_instance from the file chango.py in the root of your project.

   Adding Changes
       Now  the  chango CLI is ready to be used.  Go ahead and add a change to the changes/unreleased directory.
       It's as simple als calling

          chango new short-slug-for-the-change

       For more information on how to use chango, please refer to the documentation  <https://chango.readthedocs
       .io/>.

   GitHub Actions
       When  using  chango  in  your project, you will want to ensure that each change adds a change note.  When
       hosted on GitHub <https://github.com>, you can use GitHub  Actions  <https://github.com/features/actions>
       to  support  this  process  and  automatically create a template change note for each new change.  chango
       defines the following methods to help you with this process:

       • chango.abc.ChanGo.build_github_event_change_note() <#chango.abc.ChanGo.build_github_event_change_note>

       • chango.abc.ChangeNote.build_from_github_event() <#chango.abc.ChangeNote.build_from_github_event>

       Going even further, chango provides a composite  GitHub  Action  <https://github.com/marketplace/actions/
       chango> that does the heavy lifting for you.  You can configure it for example as follows:

          name: Create Chango Change Note
          on:
            pull_request:
              branches:
                - main
              types:
                - opened
                - reopened

          jobs:
            create-chango-fragment:
              permissions:
                # Give the default GITHUB_TOKEN write permission to commit and push the
                # added chango note to the PR branch.
                contents: write
              name: create-chango-fragment
              runs-on: ubuntu-latest
              steps:
                - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
                - uses: Bibo-Joshi/chango@<sha-of-latest-release>
                  with:
                    # Optional: Specify a Python version to use
                    python-version: '3.13'

       This will automatically use your chango configuration to create a change note for each new change.

   Inputs
       The following inputs can be used to configure the action using the with keyword.
┌────────────────────┬────────────────────────────────────────────────────┬──────────┬────────────────────────────────┐
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
│ pyproject-toml     │ Path      to       the                             │ No       │ None                           │
│                    │ pyproject.toml   file.                             │          │                                │
│                    │ chango.config.get_chango_instance()                │          │                                │
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
│                    │ parameter  data <#chango.abc.ChanGo                │          │ chango.action.ChanGoActionData │
│                    │ chango.abc.ChanGo.build_github_event_change_note() │          │                                │
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
│ github-token:      │ GitHub Token or Personal Access Token  (PAT)  used │ No       │ GITHUB_TOKEN                   │
├────────────────────┼────────────────────────────────────────────────────┼──────────┼────────────────────────────────┤
│ query-issue-types: │ Whether  to  query  the  issue types of the linked │ No       │ False                          │
└────────────────────┴────────────────────────────────────────────────────┴──────────┴────────────────────────────────┘

   Sphinx Extension
       In  addition  to  the  CLI,  chango  provides a Sphinx extension that can be used to automatically render
       change notes in your project documentation.

   Setup
       To enable the extension, simply add 'chango.sphinx_ext' to your extensions list in your conf.py file.

          extensions = [
              ...
              'chango.sphinx_ext',
          ]

       To specify the path to the pyproject.toml file,  you  can  use  the  chango_pyproject_toml  configuration
       option in your conf.py file.

          chango_pyproject_toml = 'path/to/pyproject.toml'

       This  is  useful to ensure that chango can find the correct configuration file independent of the current
       working directory.

       Now, you can use the chango directive in your documentation to render change notes.

          .. chango:: Headline
             :start_from: 1.0.0

       This will render a list of change notes starting  from  version  1.0.0  up  to  the  latest  (unreleased)
       version.

   Configuration
       The following configuration options are available:

       chango_pyproject_toml

              Type   pathlib.Path | str | None.TP Default None.UNINDENT

                     Path     to     the     pyproject.toml     file.     Takes     the     same     input    as
                     chango.config.get_chango_instance() <#chango.config.get_chango_instance>.

       .. chango::
              The chango directive renders the version history of your project.

              If the directive has a body, it will be used as the headline for the change notes with = above and
              below the headline, which is the default reStructuredText syntax for a headline.

                 Example

                     .. chango:: Headline
                        :start_from: "1.0.0"

                 Renders as

                     ========
                     Headline
                     ========

                     ...

              The  options  that  are  valid  for  the  chango  directive  are  the  same  as  the  options  for
              load_version_history() <#chango.abc.ChanGo.load_version_history>.

              If your implementation of ChanGo <#chango.abc.ChanGo> has additional options, you can pass them as
              keyword arguments to the directive.  chango will inspect the signature of the method and configure
              the options accordingly.

              Important:
                 Since  the options will be interpreted as keyword arguments for load_version_history() <#chango
                 .abc.ChanGo.load_version_history>, by default, each option is required to have a value.

              Tip:
                 The values be interpreted as JSON string and will be loaded using json.loads().

              Since you can only specify strings as options in reStructuredText, it  may  be  necessary  to  use
              custom  validator functions to convert the strings to the correct types.  Custom validators can be
              specified by using typing.Annotated in the signature of the method.  Validators  should  have  the
              following signature:

                 def validator(value: str | None) -> Any:
                     ...

                 Example

                     from collections.abc import Sequence
                     from typing import Annotated

                     def sequence_validator(value: str | None) -> Sequence[int]:
                         if value is None:
                             raise ValueError('Value must not be None')
                         return tuple(map(int, value.split(',')))

                     def flag_validator(value: str | None) -> bool:
                         if value is not None:
                             raise ValueError('Flag options must not have a value')
                         return True

                     class MyChanGo(ChanGo):
                         def load_version_history(
                             self,
                             start_from: str | None = None,
                             end_at: str | None = None,
                             custom_option_1: dict[str, str] | None = None,
                             custom_option_2: Annotated[Sequence[int], sequence_validator] = (1, 2, 3),
                             custom_option_3: Annotated[bool, flag_validator] = False,
                         ):
                             ...

                 With this signature, you can use the following directive:

                     .. chango::
                        :custom_option_1: {"key": "value"}
                        :custom_option_2: 4,5,6
                        :custom_option_3:

              The following options are available by default:

              Keyword Arguments:

                     :start_from: (str, optional): The version to start from. Passed to parameter
                            load_version_history       <#chango.abc.ChanGo.params.load_version_history>       of
                            load_version_history() <#chango.abc.ChanGo.load_version_history>. Defaults to None.

                     :end_at: (str, optional): The version to end at. Passed to parameter
                            load_version_history       <#chango.abc.ChanGo.params.load_version_history>       of
                            load_version_history() <#chango.abc.ChanGo.load_version_history>. Defaults to None.

   chango
       chango.__version__ = '0.6.0'
              The version of the chango library as string

              Type   str

   ChangeNoteInfo
       class chango.ChangeNoteInfo(uid, version, file_path)
              Bases: object

              Objects of this type represents metadata about a change note.

              Parametersuid (str) -- Unique identifier of this change note.

                     • version  (Version  <#chango.Version>  |  None) -- The version the change note belongs to.
                       May be None if the change note is not yet released.

                     • file_path (pathlib.Path) -- The file path this change note is stored at.

              uid    Unique identifier of this change note.

                     Type   str

              version
                     The version the change note belongs to.  May  be  None  if  the  change  note  is  not  yet
                     released.

                     Type   Version <#chango.Version> | None

              file_path
                     The file path this change note is stored at.

                     Type   pathlib.Path

   Version
       class chango.Version(uid, date)
              Bases: object

              Objects of this type represent a released version of a software project.

              Parametersuid (str) -- Unique identifier / version number of this version.

                     • date (datetime.date) -- Release date of this version.

              uid    Unique identifier / version number of this version.

                     Type   str

              date   Release date of this version.

                     Type   datetime.date

   abc
       This module contains abstract base classes defining the interfaces that the chango package is build on.

   ChangeNote
       class chango.abc.ChangeNote(slug, uid=None)
              Bases: ABC

              Abstract base class for a change note describing a single change in a software project.

              Parametersslug (str) -- A short, human-readable identifier for the change note.

                     • uid  (str)  --  A  unique  identifier  for  the  change  note.  If not provided, a random
                       identifier will be generated. Should be  8  characters  long  and  consist  of  lowercase
                       letters and digits.

              classmethod build_from_github_event(event, data=None)
                     Build a change note from a GitHub event.

                     Important:
                        This  is an optional method and by default raises a NotImplementedError.  Implement this
                        method if you want to automatically create change notes based on GitHub events.

                     Tip:
                        This method is useful for automatically creating change note drafts in GitHub actions to
                        ensure that each pull request has documented changes.

                        See also:
                            GitHub Actions <#action>

                     Parametersevent (Dict[str, Any]) -- The GitHub event data. This should be one of the  events
                              that trigger workflows <ettw>. The event is represented as a JSON dictionary.

                            • data    (Dict[str,    Any]    |   chango.action.ChanGoActionData   <#chango.action
                              .ChanGoActionData>,                 optional)  --  Additional  data  that  may  be
                              required to build the change note.

                     Returns
                            The change note or None.

                     Return type
                            CNT

                     Raises NotImplementedError -- If the method is not implemented.

              abstractmethod classmethod build_template(slug, uid=None)
                     Build a template change note for the concrete change note type.

                     Tip:
                        This will be used to create a new change note in the CLI.

                     Parametersslug (str) -- The slug to use for the change note.

                            • uid  (str)  --  The  unique  identifier  for the change note or None to generate a
                              random one.

                     Returns
                            The ChangeNote object.

              abstract property file_extension
                     The file extension to use when writing the change note to a file. The  extension  must  not
                     include the leading dot.

                     Type   str

              property file_name
                     The file name to use when writing the change note to a file.

              classmethod from_bytes(slug, uid, data, encoding='utf-8')
                     Read a change note from the specified byte data. The data will be the raw binary content of
                     a change note file.

                     Tip:
                        This convenience method calls from_string() internally.

                     Parametersslug (str) -- The slug of the change note.

                            • uid (str) -- The UID of the change note.

                            • data (bytes) -- The bytes to read from.

                            • encoding (str) -- The encoding to use for reading.

                     Returns
                            The ChangeNote object.

                     Return type
                            ChangeNote

                     Raises chango.error.ValidationError <#chango.error.ValidationError> -- If the data is not a
                            valid change note file.

              classmethod from_file(file_path, encoding='utf-8')
                     Read a change note from the specified file.

                     Tip:
                        This convenience method calls from_bytes() internally.

                     Parametersfile_path (pathlib.Path | str) -- The path to the file to read from.

                            • encoding (str) -- The encoding to use for reading.

                     Returns
                            The ChangeNote object.

                     Return type
                            ChangeNote

                     Raises chango.error.ValidationError <#chango.error.ValidationError> -- If the data is not a
                            valid change note file.

              abstractmethod classmethod from_string(slug, uid, string)
                     Read  a  change  note  from  the  specified string data. The implementation must be able to
                     handle the case where the string is not a valid change note and raise an ValidationError <#
                     chango.error.ValidationError> in that case.

                     Parametersslug (str) -- The slug of the change note.

                            • uid (str) -- The UID of the change note.

                            • string (str) -- The string to read from.

                     Returns
                            The ChangeNote object.

                     Return type
                            ChangeNote

                     Raises chango.error.ValidationError <#chango.error.ValidationError> -- If the string is not
                            a valid change note.

              property slug
                     The short, human-readable identifier for the change note.

                     Type   str

              to_bytes(encoding='utf-8')
                     Write the change note to bytes. This binary data should be suitable for writing to  a  file
                     and reading back in with from_bytes().

                     Tip:
                        This convenience method calls to_string() internally.

                     Parameters
                            encoding (str) -- The encoding to use.

                     Returns
                            The bytes data.

                     Return type
                            bytes

              to_file(directory=None, encoding='utf-8')
                     Write the change note to the directory.

                     Hint:
                        The file name will always be the file_name.

                     Parametersdirectory  --  Optional.  The directory to write the file to. If not provided, the
                              file will be written to the current working directory.

                            • encoding (str) -- The encoding to use for writing.

                     Returns
                            The path to the file that was written.

                     Return type
                            pathlib.Path

              abstractmethod to_string(encoding='utf-8')
                     Write the change note to a string. This string should be suitable for writing to a file and
                     reading back in with from_string().

                     Parameters
                            encoding (str) -- The encoding to use for writing.

                     Returns
                            The string data.

                     Return type
                            str

              property uid
                     The unique identifier for the change note.

                     Type   str

              update_uid(uid)
                     Update the UID of the change note.  Use with caution.

                     Parameters
                            uid (str) -- The new UID to use.

   ChanGo
       class chango.abc.ChanGo
              Bases: ABC, Generic

              Abstract base class for  loading  ChangeNote  <#chango.abc.ChangeNote>,  VersionNote  <#chango.abc
              .VersionNote>   and   VersionHistory  <#chango.abc.VersionHistory>  objects  as  well  as  writing
              ChangeNote <#chango.abc.ChangeNote> objects.  This class holds the main interface for  interacting
              with the version history and change notes.

              build_github_event_change_note(event, data=None)
                     Build a change note from a GitHub event.

                     Important:
                        This  is an optional method and by default raises a NotImplementedError.  Implement this
                        method if you want to automatically create change notes based on GitHub events.

                     Tip:
                        This method is useful for automatically creating change note drafts in GitHub actions to
                        ensure that each pull request has documented changes.

                        See also:
                            GitHub Actions <#action>

                     Parametersevent (Dict[str, Any]) -- The GitHub event data. This should be one of the  events
                              that trigger workflows <ettw>. The event is represented as a JSON dictionary.

                            • data    (Dict[str,    Any]    |   chango.action.ChanGoActionData   <#chango.action
                              .ChanGoActionData>,                 optional)  --  Additional  data  that  may  be
                              required to build the change note.

                     Returns

                            The change note or None if no
                                   change  note  should be created (e.g., if a change note is already available)
                                   for the change.

                     Return type
                            CNT | None

                     Raises NotImplementedError -- If the method is not implemented.

              abstractmethod build_template_change_note(slug, uid=None)
                     Build a template change note for the concrete change note type.

                     Tip:
                        This will be used to create a new change note in the CLI.

                     Parametersslug (str) -- The slug to use for the change note.

                            • uid (str, optional) -- The unique identifier  for  the  change  note  or  None  to
                              generate a random one.

                     Returns
                            The ChangeNote <#chango.abc.ChangeNote> object.

                     Return type
                            CNT

              abstractmethod build_version_history()
                     VHT: Build a new empty version history.

              abstractmethod build_version_note(version)
                     Build a new empty version note.

                     Parameters
                            version  (Version  <#chango.Version>  | None) -- The version of the software project
                            this note is for. May be None if the version is not yet released.

                     Returns
                            The VersionNote <#chango.abc.VersionNote> object.

                     Return type
                            VNT

              abstractmethod get_write_directory(change_note, version)
                     Determine the directory to write a change note to.

                     Important:

                        • It should be ensured that the directory exists.

                        • The version does not need to be already available. In that case,  it's  expected  that
                          version is of type Version <#chango.Version>.

                     Parameterschange_note (CNT | str) -- The change note to write or its UID.

                            • version  (Version  <#chango.Version>  | str | None) -- The version the change note
                              belongs to. Maybe be None if the change note is not yet released.

                     Returns
                            The directory to write the change note to.

                     Return type
                            pathlib.Path

                     Raises ChanGoError <#chango.error.ChanGoError> -- If the version is a str but not yet
                                available.

              abstractmethod load_change_note(uid)
                     Load a change note with the given identifier.

                     Parameters
                            uid (str) -- The unique identifier or file name of the change note to load.

                     Returns
                            The ChangeNote <#chango.abc.ChangeNote> object.

                     Return type
                            CNT

                     Raises ChanGoError <#chango.error.ChanGoError>  --  If  the  change  note  with  the  given
                            identifier is not
                                available.

              load_version_history(start_from=None, end_at=None)
                     Load the version history.

                     Important:
                        By  default,  unreleased  changes  are  included  in  the  returned  version history, if
                        available.

                     Parametersstart_from (Version <#chango.Version> | str, optional) --  The  version  to  start
                              from. If None, start from the earliest available version.

                            • end_at  (Version  <#chango.Version> | str, optional) -- The version to end at.  If
                              None, end at the latest available version, including unreleased changes.

                     Returns
                            The loaded version VersionHistory <#chango.abc.VersionHistory>.

                     Return type
                            VHT

              load_version_note(version)
                     Load a version note.

                     Parameters
                            version (Version <#chango.Version> | str | None) -- The version of the version  note
                            to load or the corresponding uid. May be None if the version is not yet released.

                     Returns
                            The loaded VersionNote <#chango.abc.VersionNote>.

                     Return type
                            VNT

                     Raises ChanGoError <#chango.error.ChanGoError> -- If the version is not available.

              release(version)
                     Release  a  version.   This calls get_write_directory() for all unreleased change notes and
                     moves the file if necessary.

                     Tip:
                        This    method    calls    chango.abc.VersionScanner.invalidate_caches()    <#chango.abc
                        .VersionScanner.invalidate_caches> after releasing the version.

                     Parameters
                            version (Version <#chango.Version>) -- The version to release.

                     Returns
                            Whether a release was performed. If no unreleased changes are available, this method
                            returns False.

                     Return type
                            bool

              abstract property scanner
                     The VersionScanner <#chango.abc.VersionScanner> used by this instance.

                     Type   VST

              write_change_note(change_note, version, encoding='utf-8')
                     Write a change note to disk.

                     Important:
                        The  version  does  not  need  to be already available. In that case, it's expected that
                        version is of type Version <#chango.Version>.

                     Tip:
                        This    method    calls    chango.abc.VersionScanner.invalidate_caches()    <#chango.abc
                        .VersionScanner.invalidate_caches> after writing the change note to disk.

                     Parameterschange_note (CNT | str) -- The change note to write.

                            • version  (Version  <#chango.Version>  | str | None) -- The version the change note
                              belongs to. Maybe be None if the change note is not yet released.

                            • encoding (str) -- The encoding to use for writing.

                     Returns
                            The file path the change note was written to.

                     Return type
                            pathlib.Path

                     Raises ChanGoError <#chango.error.ChanGoError> -- If the version is a str but not yet
                                available.

   VersionHistory
       class chango.abc.VersionHistory
              Bases:  MutableMapping[str  |  None,   VNT   <https://docs.python.org/3/library/typing.html#typing
              .TypeVar>], ABC, Generic

              Abstract  base  class  for  a  version  history describing the versions in a software project over
              several versions.

              Hint:
                 Objects of this class can be used as MutableMapping, where the keys are the unique  identifiers
                 of the versions and the values are the version notes themselves.

              add_version_note(version_note)
                     Add a version note to the version note.

                     Parameters
                            version_note (VNT) -- The VersionNote <#chango.abc.VersionNote> note to add.

              remove_version_note(version_note)
                     Remove a version note from the version note.

                     Parameters
                            version_note (VNT) -- The VersionNote <#chango.abc.VersionNote> note to remove.

              abstractmethod render(markup)
                     Render  the  version  note  as  a  string.  Must include information about all change notes
                     contained in the version note.

                     Hint:

                        • Make use of chango.abc.VersionNote.render() <#chango.abc.VersionNote.render> to render
                          the change notes.

                        • The change notes should be rendered in reverse chronological order. This needs  to  be
                          handled  by  the  implementation  and  can  be achieved either by applying appropriate
                          sorting the uid <#chango.abc.VersionNote.uid>  or  by  sorting  by  date  <#chango.abc
                          .VersionNote.date> if available.

                     Parameters
                            markup  (str) -- The markup language to use for rendering. If the markup language is
                            not  supported,  an  UnsupportedMarkupError   <#chango.error.UnsupportedMarkupError>
                            should be raised.

                     Returns
                            The rendered version note.

                     Return type
                            str

   VersionNote
       class chango.abc.VersionNote(version)
              Bases:  MutableMapping[str,  CNT  <https://docs.python.org/3/library/typing.html#typing.TypeVar>],
              ABC, Generic

              Abstract base class for a version note describing the set of changes in a software project  for  a
              single version.

              Hint:
                 Objects  of this class can be used as MutableMapping, where the keys are the unique identifiers
                 (or file names) of the change notes and the values are the change notes themselves.

              Warning:
                 To ensure that the changes in this version are displayed in the correct order, the change notes
                 should be added in the order they  were  made.  Manual  reordering  of  the  change  notes  may
                 interfere with the order in which they are displayed.

              Parameters
                     version (Version <#chango.Version> | None) -- The version of the software project this note
                     is for or May be None if the version is not yet released.

              version
                     (Version <#chango.Version> | None): The version of the software project this note is for or
                     May be None if the version is not yet released.

              add_change_note(change_note)
                     Add a change note to the version note.

                     Parameters
                            change_note (CNT) -- The ChangeNote <#chango.abc.ChangeNote> note to add.

              property date
                     Convenience property for the version UID.

                     Returns

                            The release date of version if available,
                                   None otherwise.

                     Return type
                            datetime.date | None

              remove_change_note(change_note)
                     Remove a change note from the version note.

                     Parameters
                            change_note (CNT) -- The ChangeNote <#chango.abc.ChangeNote> note to remove.

              abstractmethod render(markup)
                     Render the version note as a string.

                     Parameters
                            markup  (str) -- The markup language to use for rendering. If the markup language is
                            not  supported,  an  UnsupportedMarkupError   <#chango.error.UnsupportedMarkupError>
                            should be raised.

                     Returns
                            The rendered version note.

                     Return type
                            str

              property uid
                     Convenience property for the version UID.

                     Returns

                            The UID of version if available, None
                                   otherwise.

                     Return type
                            str | None

   VersionScanner
       class chango.abc.VersionScanner
              Bases: Collection[Version <#chango.Version>]

              Abstract base class for a version scanner that can list available versions.

              Hint:
                 Objects   of   this   class  can  be  used  as  Collection  of  versions  as  returned  by  the
                 get_available_versions() method.

              abstractmethod get_available_versions(start_from=None, end_at=None)
                     Get the available versions.

                     Important:
                        Unreleased changes must not be included in the returned version identifiers.

                     Parametersstart_from (Version <#chango.Version> | str, optional) -- The  version  identifier
                              to start from. If None, start from the earliest available version.

                            • end_at  (Version  <#chango.Version>  | str, optional) -- The version identifier to
                              end at. If None,  end  at  the  latest  available  version,  excluding  unreleased
                              changes.

                     Returns
                            The available versions.

                     Return type
                            Tuple[Version <#chango.Version>]

              abstractmethod get_changes(uid)
                     Get the changes either for a given version identifier or all available.

                     Hint:
                        To  easily extract the UIDs from the change files, chango.helpers.change_uid_from_file()
                        <#chango.helpers.change_uid_from_file> can be used.

                     Important:
                        The returned UIDs must be in the order in which the changes were made.

                     Parameters
                            uid (Version <#chango.Version> | str | None) -- The version identifier  to  get  the
                            change  files  for.  If  None,  get  the change files for unreleased changes must be
                            returned.

                     Returns
                            UIDs of the changes corresponding to the version identifier.

                     Return type
                            Tuple[str]

                     Raises ChanGoError <#chango.error.ChanGoError> -- If the version with the given  identifier
                            is not available.

              abstractmethod get_latest_version()
                     Get the latest version

                     Returns
                            The latest version

                     Return type
                            Version <#chango.Version>

                     Raises ChanGoError <#chango.error.ChanGoError> -- If no versions are available.

              get_version(uid)
                     Get the version with the given identifier.

                     Hint:
                        The  default implementation calls get_available_versions(). Implementations may override
                        this method to provide a more efficient way to get the version.

                     Parameters
                            uid (str) -- The version identifier to get the version for.

                     Returns
                            The version.

                     Return type
                            Version <#chango.Version>

                     Raises ChanGoError <#chango.error.ChanGoError> -- If the version with the given  identifier
                            is not available.

              abstractmethod has_unreleased_changes()
                     Check if there are changes in the repository that are not yet released in a version.

                     Returns
                            True if there are unreleased changes, False otherwise.

                     Return type
                            bool

              invalidate_caches()
                     Invalidate any internal caches that may be used by the implementation.

                     Important:

                        • This  method  is  not  required  to do anything if the implementation does not use any
                          caches. By default, it does nothing.

                        • This method is called by chango.abc.ChanGo.release() <#chango.abc.ChanGo.release>  and
                          chango.abc.ChanGo.write_change_note() <#chango.abc.ChanGo.write_change_note> after the
                          respective operation has been completed. This gives the implementation the opportunity
                          to clear any caches that may have been affected by the operation.

              abstractmethod is_available(uid)
                     Check if the version with the given identifier is available.

                     Tip:
                        None  may  be  passed for convenience, but it's recommended that an implementation calls
                        has_unreleased_changes() internally.

                     Parameters
                            uid (Version <#chango.Version> | str | None) -- The version identifier to check.

              abstractmethod lookup_change_note(uid)
                     Lookup a change note with the given identifier.

                     Parameters
                            uid (str) -- The unique identifier or file name of the change note to lookup

                     Returns

                            The metadata about the change note specifying the file
                                   path and version it belongs to.

                     Return type
                            chango.ChangeNoteInfo <#chango.ChangeNoteInfo>

                     Raises ChanGoError <#chango.error.ChanGoError>  --  If  the  change  note  with  the  given
                            identifier is not
                                available.

   concrete
       This  module  contains  implementations  of the interface classes defined in the abc <#module-chango.abc>
       module that are shipped with this package.

   BackwardCompatibleChanGo
       class chango.concrete.BackwardCompatibleChanGo(main_instance, legacy_instances)
              Bases:     ChanGo     <#chango.abc.ChanGo>[BackwardCompatibleVersionScanner      <#chango.concrete
              .BackwardCompatibleVersionScanner>,    VHT   <https://docs.python.org/3/library/typing.html#typing
              .TypeVar>, VNT <https://docs.python.org/3/library/typing.html#typing.TypeVar>,  CNT  <https://docs
              .python.org/3/library/typing.html#typing.TypeVar>], Generic

              An  Implementation  of  the  ChanGo  <#chango.abc.ChanGo>  interface  that  wraps  multiple  other
              implementations of ChanGo <#chango.abc.ChanGo>.  The purpose of this class is to  ease  transition
              between different version note formats in a project.

              Parametersmain_instance  (ChanGo  <#chango.abc.ChanGo>) -- The ChanGo <#chango.abc.ChanGo> instance
                       that should be used for new version notes.

                     • legacy_instances (Collection[ChanGo <#chango.abc.ChanGo>]) -- A collection of  ChanGo  <#
                       chango.abc.ChanGo> instances that should be used for loading older version notes.

              build_github_event_change_note(event, data=None)
                     Calls  build_github_event_change_note() <#chango.abc.ChanGo.build_github_event_change_note>
                     on main_instance.

              build_template_change_note(slug, uid=None)
                     Calls   build_template_change_note()   <#chango.abc.ChanGo.build_template_change_note>   on
                     main_instance.

              build_version_history()
                     Calls build_version_history() <#chango.abc.ChanGo.build_version_history> on main_instance.

              build_version_note(version)
                     Calls  build_version_note() <#chango.abc.ChanGo.build_version_note> on main_instance or one
                     of  the  legacy  instances  depending  on  the  result   of   is_available()   <#chango.abc
                     .VersionScanner.is_available>.

              get_write_directory(change_note, version)
                     Calls get_write_directory() <#chango.abc.ChanGo.get_write_directory> on main_instance.

              load_change_note(uid)
                     Load  a change note with the given identifier.  Tries to load the change note from the main
                     chango first and then from the legacy changos.

              property scanner
                     The  BackwardCompatibleVersionScanner   <#chango.concrete.BackwardCompatibleVersionScanner>
                     instance that is used by this BackwardCompatibleChanGo.

                     Hint:
                        The scanner is a composite of the scanners of main_instance and legacy_instance.

   BackwardCompatibleVersionScanner
       class chango.concrete.BackwardCompatibleVersionScanner(scanners)
              Bases: VersionScanner <#chango.abc.VersionScanner>

              An Implementation of the VersionScanner <#chango.abc.VersionScanner> interface that wraps multiple
              other  implementations  of VersionScanner <#chango.abc.VersionScanner>.  The purpose of this class
              is to ease transition between different version note formats in a project.

              Warning:
                 This assumes that the versions available for each of the scanners are mutually exclusive,  i.e.
                 no two scanners can return the same version.

              Tip:
                 Use together with BackwardCompatibleChanGo <#chango.concrete.BackwardCompatibleChanGo>.

              Parameters
                     scanners (Collection[VersionScanner <#chango.abc.VersionScanner>]) -- The scanners to wrap.

              get_latest_version()
                     Implementation      of      chango.abc.VersionScanner.get_latest_version()     <#chango.abc
                     .VersionScanner.get_latest_version>.

                     Important:
                        The newest version is determined by the date of the version, not the order in which  the
                        scanners were passed to the constructor.

                     Returns
                            The latest version

                     Return type
                            Version <#chango.Version>

              lookup_change_note(uid)
                     Lookup a change note with the given identifier.

                     Parameters
                            uid (str) -- The unique identifier or file name of the change note to lookup

                     Returns

                            The metadata about the change note specifying the file
                                   path and version it belongs to.

                     Return type
                            chango.ChangeNoteInfo <#chango.ChangeNoteInfo>

   CommentChangeNote
       class chango.concrete.CommentChangeNote(slug, comment, uid=None)
              Bases: ChangeNote <#chango.abc.ChangeNote>

              A simple change note that consists of a single comment. May be multi-line.

              Parameters
                     comment (str) -- The comment text.

              comment
                     The comment text.

                     Type   str

              MARKUP = 'txt'
                     The markup language used in the comment. Will also be used as file extension.

                     Type   str

              classmethod build_from_github_event(event, data=None)
                     Implementation         of         build_from_github_event()         <#chango.abc.ChangeNote
                     .build_from_github_event>.

                     Considers only events of type pull_request and pull_request_target.  Uses the pull  request
                     number as slug and the pull request title as comment.

                     Currently only supports TEXT <#chango.constants.MarkupLanguage.TEXT>,
                            MARKDOWN   <#chango.constants.MarkupLanguage.MARKDOWN>,   RESTRUCTUREDTEXT  <#chango
                            .constants.MarkupLanguage.RESTRUCTUREDTEXT>     and     HTML      <#chango.constants
                            .MarkupLanguage.HTML>.

                     Caution:
                        Does not consider any formatting in the pull request title!

                     Raises ValueError -- If required data is missing or not in the expected format or
                                if MARKUP is not supported.

   CommentVersionNote
       class chango.concrete.CommentVersionNote(version)
              Bases:       VersionNote       <#chango.abc.VersionNote>[CommentChangeNote       <#chango.concrete
              .CommentChangeNote>, V <https://docs.python.org/3/library/typing.html#typing.TypeVar>], Generic

              A  simple  version  note  implementation  that  works  with  CommentChangeNote   <#chango.concrete
              .CommentChangeNote>.

              render(markup)
                     Render  the  version  note to a string by listing all contained change notes separated by a
                     newline.  For markup languages Markdown, HTML and reStructuredText, the change  notes  will
                     be rendered as unordered lists.

                     Parameters
                            markup (str) -- The markup language to use for rendering.

                     Raises UnsupportedMarkupError   <#chango.error.UnsupportedMarkupError>  --  If  the  markup
                            parameter does not
                                coincide   with    chango.concrete.CommentChangeNote.MARKUP    <#chango.concrete
                            .CommentChangeNote.MARKUP>

                     Returns
                            The rendered version note.

                     Return type
                            str

   DirectoryChanGo
       class chango.concrete.DirectoryChanGo(change_note_type, version_note_type, version_history_type, scanner,
       directory_format='{uid}_{date}')
              Bases:         ChanGo        <#chango.abc.ChanGo>[DirectoryVersionScanner        <#chango.concrete
              .DirectoryVersionScanner>, VHT <https://docs.python.org/3/library/typing.html#typing.TypeVar>, VNT
              <https://docs.python.org/3/library/typing.html#typing.TypeVar>,  CNT   <https://docs.python.org/3/
              library/typing.html#typing.TypeVar>], Generic

              Implementation    of    the    ChanGo    <#chango.abc.ChanGo>    interface    that    works   with
              DirectoryVersionScanner <#chango.concrete.DirectoryVersionScanner> and assumes that  change  notes
              are stored in subdirectories named after the version identifier.

              Parameterschange_note_type  (type)  --  The  type  of  change  notes to load. Must be a subclass of
                       ChangeNote <#chango.abc.ChangeNote>.

                     • version_note_type (type) -- The type of version notes to load.  Must  be  a  subclass  of
                       VersionNote <#chango.abc.VersionNote>.

                     • version_history_type  (type) -- The type of version histories to load. Must be a subclass
                       of VersionHistory <#chango.abc.VersionHistory>.

                     • scanner  (DirectoryVersionScanner  <#chango.concrete.DirectoryVersionScanner>)   --   The
                       version scanner to use.

                     • directory_format  (str,  optional) -- Reverse of DirectoryVersionScannerdirectory_pattern
                       <#module-chango.concrete.params.DirectoryVersionScannerdirectory_pattern>.   Must  be   a
                       string  that  can  be used with str.format() and contain at least one named field uid for
                       the version identifier and optionally a second named field  date  for  the  date  of  the
                       version  release in ISO format. The default value is compatible with the default value of
                       DirectoryVersionScannerdirectory_pattern                  <#module-chango.concrete.params
                       .DirectoryVersionScannerdirectory_pattern>.

              directory_format
                     The format string used to create version directories.

                     Type   str

              build_github_event_change_note(event, data=None)
                     Implementation        of        build_github_event_change_note()        <#chango.abc.ChanGo
                     .build_github_event_change_note>.

                     Important:
                        By default, this will  always  call  chango.abc.ChangeNote.build_from_github_event()  <#
                        chango.abc.ChangeNote.build_from_github_event>  and  does not check if a new change note
                        is  necessary.   The  only  exception  is  when  change_note_type  is  a   subclass   of
                        SectionChangeNote <#chango.concrete.sections.SectionChangeNote>:

                        • If there already is a change note for the current pull request, it is updated with the
                          new information. If nothing changed, returns None.

                        • If   the   data   parameter   is   an  instance  of  ChanGoActionData  <#chango.action
                          .ChanGoActionData> with a parent pull request, then this method will try  to  find  an
                          existing  unreleased  change  note  for  the  parent  pull  request and append the new
                          information to it.

              build_version_note(version)
                     Implementation of build_version_note()  <#chango.abc.ChanGo.build_version_note>.   Includes
                     special  handling  for  SectionVersionNote  <#chango.concrete.sections.SectionVersionNote>,
                     which  has  the  required  argument   section_change_note_type   <#chango.concrete.sections
                     .SectionVersionNote.params.section_change_note_type>.

   DirectoryVersionScanner
       class chango.concrete.DirectoryVersionScanner(base_directory, unreleased_directory,
       directory_pattern=re.compile('(?P<uid>[^_]+)_(?P<date>[\\d-]+)'))
              Bases: VersionScanner <#chango.abc.VersionScanner>

              Implementation  of  a  version scanner that assumes that change notes are stored in subdirectories
              named after the version identifier.

              Parametersbase_directory (str | Path) --

                       The base directory to scan for version directories.

                       Important:
                          If the path is relative, it will be resolved relative to the directory of the  calling
                          module.

                              Example

                                     If       you       build      your      DirectoryVersionScanner      within
                                     /home/user/project/chango.py, passing base_directory="changes" will resolve
                                     to /home/user/project/changes.

                     • unreleased_directory (str | Path) --

                       The directory that contains unreleased changes.

                       Important:
                          If pathlib.Path.is_dir() returns False for this directory, it will be assumed to be  a
                          subdirectory of the base_directory.

                     • directory_pattern   (str  |  re.Pattern,  optional)  --  The  pattern  to  match  version
                       directories against. Must contain one named group uid for the version  identifier  and  a
                       second named group for the date for the date of the version release in ISO format.

              base_directory
                     The base directory to scan for version directories.

                     Type   Path

              directory_pattern
                     The pattern to match version directories against.

                     Type   re.Pattern

              unreleased_directory
                     The directory that contains unreleased changes.

                     Type   Path

              get_available_versions(start_from=None, end_at=None)
                     Implementation     of    chango.abc.VersionScanner.get_available_versions()    <#chango.abc
                     .VersionScanner.get_available_versions>.

                     Important:
                        Limiting    the    version    range    by     start_from     <#chango.abc.VersionScanner
                        .get_available_versions.params.start_from>    and   end_at   <#chango.abc.VersionScanner
                        .get_available_versions.params.end_at> is based on  lexicographical  comparison  of  the
                        version identifiers.

                     Returns
                            The available versions within the specified range.

                     Return type
                            Tuple[Version <#chango.Version>]

              get_latest_version()
                     Implementation      of      chango.abc.VersionScanner.get_latest_version()     <#chango.abc
                     .VersionScanner.get_latest_version>.

                     Important:
                        In case of multiple releases on the same day, lexicographical comparison of the  version
                        identifiers is employed.

                     Returns
                            The latest version

                     Return type
                            Version <#chango.Version>

              has_unreleased_changes()
                     Implementation     of    chango.abc.VersionScanner.has_unreleased_changes()    <#chango.abc
                     .VersionScanner.has_unreleased_changes>.   Checks  if  unreleased_directory  contains   any
                     files.

                     Returns
                            True if there are unreleased changes, False otherwise.

                     Return type
                            bool

   HeaderVersionHistory
       class chango.concrete.HeaderVersionHistory
              Bases: VersionHistory <#chango.abc.VersionHistory>, Generic

              A  simple  version  history  implementation  that renders version notes by prefixing them with the
              version UID as header, followed by the release date if available.

              render(markup)
                     Does the rendering.

                     Tip:
                        Version notes are automatically sorted by release date before rendering.  If  unreleased
                        changes are present, they are rendered first.

                     Important:
                        Currently, only Markdown, HTML and reStructuredText are supported as markup languages.

                     Parameters
                            markup (str) -- The markup language to use for rendering.

                     Returns
                            The rendered version history.

                     Return type
                            str

                     Raises UnsupportedMarkupError   <#chango.error.UnsupportedMarkupError>  --  If  the  markup
                            parameter does not
                                coincide with MARKDOWN <#chango.constants.MarkupLanguage.MARKDOWN>,
                                HTML <#chango.constants.MarkupLanguage.HTML>, or
                                RESTRUCTUREDTEXT <#chango.constants.MarkupLanguage.RESTRUCTUREDTEXT>

   sections
       This module contains an implementation of ChangeNote <#chango.abc.ChangeNote> that consists  of  multiple
       sections  and  includes  references  to  pull requests that are related to the change.  The main class is
       SectionChangeNote, while Section and PullRequest are used to  define  the  sections  and  pull  requests,
       respectively.

          Example

                 To create a change note with two sections, one required and one optional, use

              from chango.concrete.sections import GitHubSectionChangeNote, Section

              class MySectionChangeNote(
                  GitHubSectionChangeNote.with_sections(
                      [
                          Section(uid="required_section", title="Required Section", is_required=True),
                          Section(uid="optional_section", title="Optional Section"),
                      ]
                  )
              ):
                  OWNER = "my-username"
                  REPOSITORY = "my-repo"

       class chango.concrete.sections.GitHubSectionChangeNote(slug, *args, uid=None, pull_requests=<factory>)
              Bases: SectionChangeNote

              Specialization of SectionChangeNote for projects hosted on GitHub.

                 Example

                     from chango.concrete.sections import GitHubSectionChangeNote, Section

                     class MySectionChangeNote(
                         GitHubSectionChangeNote.with_sections(
                             [
                                 Section(uid="req_section", title="Required Section", is_required=True),
                                 Section(uid="opt_section", title="Optional Section"),
                             ]
                         )
                     ):
                         OWNER = "my-username"
                         REPOSITORY = "my-repo"

              OWNER = None
                     The owner of the repository on GitHub. This must be set as a class variable.

                     Type   str

              REPOSITORY = None
                     The name of the repository on GitHub. This must be set as a class variable.

                     Type   str

              classmethod build_from_github_event(event, data=None)
                     Implementation  of  chango.abc.ChangeNote.build_from_github_event() <#chango.abc.ChangeNote
                     .build_from_github_event>.

                     This writes the pull request title to the sections determined by get_sections().  Uses  the
                     pull request number as slug.

                     Caution:

                        • Does not consider any formatting in the pull request title!

                        • Considers  the  data  argument  only if it is an instance of ChanGoActionData <#chango
                          .action.ChanGoActionData>.

                     Raises ValueError -- If required data is missing or not in the expected format.

              classmethod get_author_url(author_uid)
                     Get the URL of an author with the given UID.

                     Parameters
                            author_uid    (str)    --    The    UID    of    an    author    as    defined    in
                            chango.concrete.sections.PullRequest.author_uids.

                     Returns
                            The URL of the author.

                     Return type
                            str

              classmethod get_pull_request_url(pr_uid)
                     Implementation of SectionChangeNote.get_pull_request_url() based on OWNER and REPOSITORY.

              classmethod get_sections(labels, issue_types)
                     Determine  appropriate sections based on the labels of a pull request as well as the labels
                     and types of the issues closed by the pull request.

                     If this class has required sections, they are all returned.  Otherwise, the  first  section
                     in the order of sort_order is returned.

                     Tip:
                        This  method can be overridden to provide custom logic for determining the section based
                        on the labels and issue types.

                     Parameterslabels (Collection[str]) -- The combined set of labels of the pull request and the
                              issues closed by the pull request.

                            • issue_types (Collection[str]) --

                              The types of the issues closed by the pull request.

                              Caution:
                                 Since issue types are currently  in  public  preview  <https://github.com/orgs/
                                 community/discussions/139933>, this set may be empty.

                     Returns
                            The UIDs of the sections.

                     Return type
                            Set[str]

              classmethod get_thread_url(thread_uid)
                     Implementation of SectionChangeNote.get_pull_request_url() based on OWNER and REPOSITORY.

              model_post_init(context, /)
                     This function is meant to behave like a BaseModel method to initialise private attributes.

                     It takes context as an argument since that's what pydantic-core passes when calling it.

                     Parametersself -- The BaseModel instance.

                            • context -- The context.

       class chango.concrete.sections.PullRequest(*, uid, author_uids, closes_threads=<factory>)
              Bases: BaseModel

              Simple data structure to represent a pull/merge request.

              Parametersuid  (str)  --  The unique identifier for the pull request. For example, the pull request
                       number.

                     • author_uids (str | tuple[str, ...]) -- The unique identifier of the author(s) of the pull
                       request. For example, the author's username.

                     • closes_threads (tuple[str], optional) --  The  threads  that  are  closed  by  this  pull
                       request.

              uid    The unique identifier for the pull request.

                     Type   str

              author_uids
                     The unique identifier of the author(s) of the pull request.

                     Type   tuple[str, ...]

              closes_threads
                     The threads that are closed by this pull request.  May be empty.

                     Type   tuple[str]

       class chango.concrete.sections.Section(*, uid, title, is_required=False, render_pr_details=True,
       sort_order=0)
              Bases: BaseModel

              Configuration for a section in a SectionChangeNote.

              Parametersuid (str) -- The unique identifier for the section. This is used as the field name in the
                       change note.

                     • title (str) -- The title of the section.

                     • is_required (bool, optional) --

                       Whether the section is required. Defaults to False.

                       Tip:
                          At least one section must be required.

                     • render_pr_details  (bool, optional) -- Whether to include details about the pull requests
                       related to the change in the rendering for this section.  Defaults to True.

                     • sort_order (int, optional) -- The sort order of the section. Defaults to 0.

              uid    The unique identifier for the section.

                     Type   str

              title  The title of the section.

                     Type   str

              is_required
                     Whether the section is required.

                     Type   bool

              render_pr_details
                     Whether to include details about the pull requests related to the change in  the  rendering
                     for this section.

                     Type   bool, optional

              sort_order
                     The sort order of the section.

                     Type   int

       class chango.concrete.sections.SectionChangeNote(slug, *args, uid=None, pull_requests=<factory>)
              Bases: BaseModel, ChangeNote <#chango.abc.ChangeNote>, ABC

              A change note that consists of multiple sections and includes references to pull requests that are
              related to the change.

              Uses the toml <https://toml.io/> format for specifying the content.

              Important:

                 • This  class  does  not contain any specified sections by default and must not be instantiated
                   directly. Use with_sections() to create a suitable subclass with the desired sections.

                 • Even though this class is in the concrete <#module-chango.concrete> module, it  is  still  an
                   abstract  base  class  and  must  be  subclassed  to  be  used.  However,  only  the  methods
                   get_pull_request_url(), get_thread_url(), and get_author_url() must  be  implemented  in  the
                   subclass. A concrete subclass is provided in GitHubSectionChangeNote.

              Parameters
                     pull_requests  (tuple[PullRequest],  optional) -- The pull requests that are related to the
                     change.

              pull_requests
                     The pull requests that are related to the change

                     Type   tuple[PullRequest]

              MARKUP = 'rst'
                     The markup language used in the sections.

                     Type   str

              SECTIONS = FieldInfo(annotation=NoneType, required=False, default_factory=dict)
                     The sections of the change note. Maps  the  UID  of  the  section  to  the  Section  object
                     containing the configuration for the section

                     Type   dict[str, Section]

              classmethod from_string(slug, uid, string)
                     Implementation of from_string() <#chango.abc.ChangeNote.from_string>.

                     Parametersslug (str) -- The slug of the change note.

                            • uid (str) -- The UID of the change note.

                            • string (str) -- The toml string to read from.

                     Returns
                            The ChangeNote <#chango.abc.ChangeNote> object.

                     Return type
                            ChangeNote <#chango.abc.ChangeNote>

                     Raises chango.error.ValidationError <#chango.error.ValidationError> -- If the string is not
                            a valid change note.

              abstractmethod classmethod get_author_url(author_uid)
                     Get the URL of an author with the given UID.

                     Parameters
                            author_uid    (str)    --    The    UID    of    an    author    as    defined    in
                            chango.concrete.sections.PullRequest.author_uids.

                     Returns
                            The URL of the author.

                     Return type
                            str

              abstractmethod classmethod get_pull_request_url(pr_uid)
                     Get the URL of the pull request with the given UID.

                     Parameters
                            pr_uid   (str)   --   The   UID   of   the    pull    request    as    defined    in
                            chango.concrete.sections.PullRequest.uid.

                     Returns
                            The URL of the pull request.

                     Return type
                            str

              abstractmethod classmethod get_thread_url(thread_uid)
                     Get the URL of the thread with the given UID.

                     Parameters
                            thread_uid    (str)    --    The    UID    of    the    thread    as    defined   in
                            chango.concrete.sections.PullRequest.closes_threads.

                     Returns
                            The URL of the thread.

                     Return type
                            str

              model_post_init(context, /)
                     This function is meant to behave like a BaseModel method to initialise private attributes.

                     It takes context as an argument since that's what pydantic-core passes when calling it.

                     Parametersself -- The BaseModel instance.

                            • context -- The context.

              classmethod with_sections(sections, name=None)
                     Create a new subclass of SectionChangeNote with the given sections.

                     Parameterssections (Collection[Section]) --

                              The sections to include in the change note.

                              Tip:
                                 All sections may be optional, but at least one section  must  be  specified  on
                                 instantiation.  That  is,  a  change note without content in any section is not
                                 allowed.

                            • name  (str,  optional)   --   The   name   of   the   new   class.   Defaults   to
                              DynamicSectionChangeNote.

                     Returns
                            The new subclass of SectionChangeNote.

                     Return type
                            type[SectionChangeNote]

       class chango.concrete.sections.SectionVersionNote(version, section_change_note_type)
              Bases: VersionNote <#chango.abc.VersionNote>, Generic

              An implementation of VersionNote <#chango.abc.VersionNote> that works with SectionChangeNote.

              Important:
                 Currently,   only   RESTRUCTUREDTEXT   <#chango.constants.MarkupLanguage.RESTRUCTUREDTEXT>   is
                 supported.

              Parameters
                     section_change_note_type (type[SectionChangeNote]) --

                     The type of the section change note to use.

                     Hint:
                        It will not be possible to add change notes of a different type to this version note.

              render(markup)
                     Render the version note to a string by listing all contained change notes.  Aggregates  the
                     content  of  all  change  notes  for  each section and renders them in the order defined by
                     sort_order.

                     Important:
                        Currently, only RESTRUCTUREDTEXT <#chango.constants.MarkupLanguage.RESTRUCTUREDTEXT>  is
                        supported.

   Auxiliary modules
   action
       This module contains functionality required when using chango in GitHub Actions <#action>.

       class chango.action.ChanGoActionData(*, parent_pull_request, linked_issues)
              Data  structure  for  the  additional information that the chango action automatically provides in
              addition to the GitHub event payload.

              Parametersparent_pull_request (ParentPullRequest | None) -- If there is a pull  request  associated
                       with the target branch of the current pull request, this field contains information about
                       it.

                     • linked_issues  (tuple[LinkedIssue],  optional)  -- Information about linked issues, i.e.,
                       issues that will be closed when the current pull request is merged.

              parent_pull_request
                     Optional. If there is a pull request associated with the target branch of the current  pull
                     request, this field contains information about it.

                     Type   ParentPullRequest

              linked_issues
                     Optional.  Information  about  linked  issues,  i.e.,  issues  that will be closed when the
                     current pull request is merged.

                     Type   tuple[LinkedIssue]

       class chango.action.LinkedIssue(*, number, title, labels, issue_type=None)
              Data structure for an issue linked in a GitHub pull request.

              Parametersnumber (int) -- The issue number.

                     • title (str) -- The title of the issue.

                     • labels (tuple[str], optional) -- The labels of the issue.

                     • issue_type (str, optional) -- The type of the issue.

              number The issue number.

                     Type   int

              title  The title of the issue.

                     Type   str

              labels Optional. The labels of the issue.

                     Type   tuple[str]

              issue_type
                     Optional. The type of the issue.

                     Type   str

       class chango.action.ParentPullRequest(*, number, author_login, title, url, state)
              Data structure for a pull request associated with the target branch of the current pull request.

              Parametersnumber (int) -- The pull request number.

                     • title (str) -- The title of the pull request.

                     • url (str) -- The URL of the pull request.

                     • state (str) -- The state of the pull request.  Possible  values  are  open,  closed,  and
                       merged.

              number The pull request number.

                     Type   int

              author_login
                     The login of the author of the pull request.

                     Type   str

              title  The title of the pull request.

                     Type   str

              url    The URL of the pull request.

                     Type   str

              state  The state of the pull request. Possible values are OPEN, CLOSED, and MERGED.

                     Type   str

   config
       This module provides the functionality to load the configuration for the ChanGo CLI.

       class chango.config.ChanGoConfig(_case_sensitive=None, _nested_model_default_partial_update=None,
       _env_prefix=None, _env_file=PosixPath('.'), _env_file_encoding=None, _env_ignore_empty=None,
       _env_nested_delimiter=None, _env_nested_max_split=None, _env_parse_none_str=None, _env_parse_enums=None,
       _cli_prog_name=None, _cli_parse_args=None, _cli_settings_source=None, _cli_parse_none_str=None,
       _cli_hide_none_type=None, _cli_avoid_json=None, _cli_enforce_required=None,
       _cli_use_class_docs_for_groups=None, _cli_exit_on_error=None, _cli_prefix=None,
       _cli_flag_prefix_char=None, _cli_implicit_flags=None, _cli_ignore_unknown_args=None,
       _cli_kebab_case=None, _secrets_dir=None, *, sys_path=None, chango_instance)
              Data structure for the ChanGos CLI configuration in the pyproject.toml file.

              Tip:
                 Rather  than  manually creating an instance of this class, use load() to load the configuration
                 from the pyproject.toml file.

              Important:
                 The attributes of chango_instance will be passed to  importlib.import_module()  to  import  the
                 user  defined  ChanGo  <#chango.abc.ChanGo>  instance.  For  this  to  work, the module must be
                 findable by Python, which may depend on your current working directory and the Python path.  It
                 can help to set sys_path accordingly.  Please evaluate the security implications of this before
                 setting it.

              Keyword Argumentssys_path (Path, optional) --

                       A path to temporarily add to the system path before importing the module.

                          Example

                                 To add the current working directory to the system path, set this to ..

                       Caution:
                          Since  this  class  is usually loaded via load(), the path is resolved relative to the
                          pyproject.toml file path. If the path is absolute,  it  will  be  used  as  is.   When
                          instantiating  this  class  manually,  the  path  is  resolved relative to the current
                          working directory.

                     • chango_instance (ChanGoInstanceConfig) -- Specification of how  the  ChanGo  <#chango.abc
                       .ChanGo> instance to use in the CLI is imported.

              sys_path
                     The  path to temporarily add to the system path before importing the module. If the path is
                     not absolute, it will considered as relative to the current working directory.

                     Type   Path | None

              chango_instance
                     The instance of ChanGo <#chango.abc.ChanGo> to use in the CLI.

                     Type   ChanGoInstanceConfig

              import_chango_instance()
                     Import  the  ChanGo  <#chango.abc.ChanGo>  instance  specified  in  chango_instance.   This
                     considers the sys_path attribute to temporarily add a path to the system path.

                     Returns
                            The imported ChanGo <#chango.abc.ChanGo> instance.

                     Return type
                            ChanGo <#chango.abc.ChanGo>

              classmethod load(path=None)
                     Load the ChanGoConfig from the pyproject.toml file.

                     Tip:
                        If  the  specification of sys_path is relative, it will be resolved relative to the path
                        parameter by this method.

                     Keyword Arguments
                            path (Path | None) --

                            The path to the pyproject.toml file. The path resolution works as follows:

                            • If path is None, the current working directory is used.

                            • If path is absolute, it is used as is. Relative paths are resolved relative to the
                              current working directory.

                            • If the path does not point to a file, it is assumed to be a directory and the file
                              name pyproject.toml is appended.

                     Returns
                            The loaded configuration.

                     Return type
                            ChanGoConfig

       class chango.config.ChanGoInstanceConfig(*, name, module, package=None)
              Data structure for specifying how the ChanGo <#chango.abc.ChanGo> should be imported for the CLI.

              Parametersname (str) -- The name of the object to import.

                     • module   (str)   --   The   module   to   import   the   object   from   as   passed   to
                       importlib.import_module().

                     • package  (str  |  None,  optional)  --  The module to import the object from as passed to
                       importlib.import_module().

              name   The name of the object to import.

                     Type   str

              module The module to import the object from as passed to importlib.import_module().

                     Type   str

              package
                     The module to import the object from as passed to importlib.import_module().

                     Type   str | None

       chango.config.get_chango_instance(path=None)
              Get the ChanGo <#chango.abc.ChanGo> instance  specified  in  the  configuration  file.   Uses  LRU
              caching to avoid reloading the configuration file multiple times.

              Parameters
                     path  (Path  |  str  |  None,  optional) -- The path to the configuration file as passed to
                     ChanGoConfig.load().

              Returns

                     The instance of the ChanGo <#chango.abc.ChanGo> class
                            specified in the configuration file.

              Return type
                     ChanGo <#chango.abc.ChanGo>

   constants
       This module contains constants used throughout the chango <#module-chango> package.

       class chango.constants.MarkupLanguage(*values)
              Commonly known markup languages

              ASCIIDOC = 'asciidoc'
                     The AsciiDoc <https://asciidoc.org> markup language

              CREOLE = 'creole'
                     The Creole <https://www.wikicreole.org> markup language

              HTML = 'html'
                     The HyperText Markup Language <https://html.spec.whatwg.org>

              MARKDOWN = 'markdown'
                     The Markdown <https://daringfireball.net/projects/markdown/> markup language

              MEDIAWIKI = 'mediawiki'
                     The MediaWiki <https://www.mediawiki.org> markup language

              ORG = 'org'
                     The Org-mode <https://orgmode.org> markup language

              POD = 'pod'
                     The Plain Old Documentation <https://perldoc.perl.org/perlpod.html> markup language

              RDOC = 'rdoc'
                     The RDoc <https://ruby.github.io/rdoc/> markup language

              RESTRUCTUREDTEXT = 'rst'
                     The reStructuredText <https://docutils.sourceforge.io/rst.html> markup language

              TEXT = 'txt'
                     Plain text

              TEXTILE = 'textile'
                     The Textile <https://textile-lang.com> markup language

              classmethod from_string(string, mapping=None)
                     Get the markup language enum member from a string by comparing against the members of  this
                     enum as well as commonly used file extensions. Case-insensitive. Leading dots are ignored.

                     Parametersstring (str) -- The string to look up.

                            • mapping  (Mapping  [str,  MarkupLanguage]  |                 None) -- A mapping of
                              file extensions to markup languages. If not provided, the default mapping will  be
                              used.

                     Returns
                            The markup language enum member.

                     Return type
                            MarkupLanguage

                     Raises ValueError -- If the file extension can not be resolved to a markup language.

   error
       This module contains error classes specific to the chango <#module-chango> package.

       exception chango.error.ChanGoError
              Base class for all exceptions defined by the chango package.

       exception chango.error.UnsupportedMarkupError
              Exception raised when an unsupported markup is encountered.

       exception chango.error.ValidationError
              Exception raised when a validation error occurs.

   helpers
       chango.helpers.change_uid_from_file(file)
              Get the change note identifier from a file name or path.

              Parameters
                     file (str | pathlib.Path) -- The file name or path to get the identifier from.

              Returns
                     The uid <#chango.abc.ChangeNote.uid> of the change note.

              Return type
                     str

       chango.helpers.ensure_uid(obj)
              Extract the unique identifier of an object. Input of type str and None is returned unchanged.

              Parameters
                     obj  (str  |  None  |  has  uid)  -- An object that either has a string attribute uid (e.g.
                     ChangeNote <#chango.abc.ChangeNote> or Version <#chango.Version>), is a str or is None.

              Returns
                     The extracted UID if available and None else.

              Return type
                     str | None

   sphinx_ext
       This module contains functionality that allows automatically rendering  changelogs  in  Sphinx  <https://
       https://www.sphinx-doc.org/> documentation using chango.

       See also:
          Sphinx Extension <#sphinx-ext>

       chango.sphinx_ext.setup(app)
              Sets up the chango Sphinx extension.  This currently does two things:

              1. Adds  the  chango  directive  to  Sphinx,  which  allows  you  to  include  changelogs  in your
                 documentation.

              2. Adds a configuration value chango_pyproject_toml_path to the Sphinx configuration, which allows
                 you to specify the path to the pyproject.toml file that contains the chango configuration.

              Parameters
                     app (sphinx.application.Sphinx) -- The Sphinx application object.

              Returns

                     A dictionary containing metadata about the
                            extension.

              Return type
                     dict[str, typing.Any]

   CLI
   chango
       CLI for chango - CHANgelog GOvernor for Your Project

          chango [OPTIONS] COMMAND [ARGS]...

       Options

       --version
              Show the version and exit.

              Default
                     False

       --install-completion
              Install completion for the current shell.

       --show-completion
              Show completion for the current shell, to copy it or customize the installation.

       Arguments

   config
       Show or verify the configuration of the chango CLI.

          chango config [OPTIONS] COMMAND [ARGS]...

       Options

       --path <path>
              The path to the pyproject.toml file. Input behavior as for chango.config.ChanGoConfig.load.

       Arguments

   show
       Show the configuration.

          chango config show [OPTIONS]

       Options

       Arguments

   validate
       Validate the configuration.

          chango config validate [OPTIONS]

       Options

       Arguments

   edit
       Edit an existing change note in the default editor.

          chango edit [OPTIONS] UID

       Options

       Arguments

       UID    Required argument

              The unique identifier of the change note to edit.

   new
       Create a new change note.

          chango new [OPTIONS]

       Options

       -s, --slug <slug>
              Required The slug of the change note.

       -e, --edit, -ne, --no-edit
              Whether to open the change note in the default editor.

              Default
                     True

       Arguments

   release
       Release the unreleased changes to a new version.

          chango release [OPTIONS]

       Options

       --uid <uid>
              Required The unique identifier of the version release.

       --date <date>
              The date of the version release. Defaults to today.

              Default
                     <function _today at 0x7a2abb231120>

       Arguments

   report
       Generate reports for one or multiple versions.

          chango report [OPTIONS] COMMAND [ARGS]...

       Options

       Arguments

   history
       Print a report of the version history.

          chango report history [OPTIONS]

       Options

       -m, --markup <markup>
              The markup language to use for the report.

              Default
                     <MarkupLanguage.MARKDOWN: 'markdown'>

       -o, --output <output>
              The file to write to. If not specified, the output is printed to the console.

       Arguments

   version
       Print a report of the change notes for a specific version.

          chango report version [OPTIONS]

       Options

       --uid <uid>
              Required The unique identifier of the version to report on. Leave empty for unreleased changes.

       -m, --markup <markup>
              The markup language to use for the report.

              Default
                     <MarkupLanguage.MARKDOWN: 'markdown'>

       -o, --output <output>
              The file to write to. If not specified, the output is printed to the console.

       Arguments

   Changelog
   0.6.0
       2025-10-15

   New Features
       • Use github-token also for target repository checkout (#123  <https://github.com/Bibo-Joshi/chango/pull/
         123> by @Bibo-Joshi <https://github.com/Bibo-Joshi>)

   Documentation
       • Skip Inherited Members for chango.config.ChanGoConfig (#129 <https://github.com/Bibo-Joshi/chango/pull/
         129> by @Bibo-Joshi <https://github.com/Bibo-Joshi>)

   Internal Changes
       • Bump  actions/checkout  from  4.2.2  to  5.0.0 (#112 <https://github.com/Bibo-Joshi/chango/pull/112> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump codecov/codecov-action from 5.4.3 to 5.5.0  (#113  <https://github.com/Bibo-Joshi/chango/pull/113>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  astral-sh/setup-uv  from  6.4.3 to 6.6.0 (#114 <https://github.com/Bibo-Joshi/chango/pull/114> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump github/codeql-action from 3.29.7 to 3.29.11 (#115  <https://github.com/Bibo-Joshi/chango/pull/115>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  actions/download-artifact  from  4.3.0 to 5.0.0 (#116 <https://github.com/Bibo-Joshi/chango/pull/
         116> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump pypa/gh-action-pypi-publish from 1.12.4  to  1.13.0  (#117  <https://github.com/Bibo-Joshi/chango/
         pull/117> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  actions/setup-python from 5.6.0 to 6.0.0 (#118 <https://github.com/Bibo-Joshi/chango/pull/118> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump github/codeql-action from 3.29.11 to 3.30.5 (#119  <https://github.com/Bibo-Joshi/chango/pull/119>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  astral-sh/setup-uv  from  6.6.0 to 6.8.0 (#120 <https://github.com/Bibo-Joshi/chango/pull/120> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump actions/github-script from 7.0.1 to 8.0.0 (#121 <https://github.com/Bibo-Joshi/chango/pull/121> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  pre-commit   Dependency   Versions   (#122   <https://github.com/Bibo-Joshi/chango/pull/122>   by
         @pre-commit-ci[bot] <https://github.com/pre-commit-ci[bot]>)

       • Update  Dependabot  Schedule  to  Quarterly  (#128  <https://github.com/Bibo-Joshi/chango/pull/128>  by
         @Bibo-Joshi <https://github.com/Bibo-Joshi>)

       • Bump Version to 0.6.0 (#130 <https://github.com/Bibo-Joshi/chango/pull/130>  by  @Bibo-Joshi  <https://
         github.com/Bibo-Joshi>)

   0.5.0
       2025-08-02

   New Features
       • Use  git add in Chango.write_change_note if available (#108 <https://github.com/Bibo-Joshi/chango/pull/
         108> by @Bibo-Joshi <https://github.com/Bibo-Joshi> closes #106  <https://github.com/Bibo-Joshi/chango/
         issues/106>)

       • Allow Several author_uids in sections.PullRequest (#110 <https://github.com/Bibo-Joshi/chango/pull/110>
         by   @Bibo-Joshi  <https://github.com/Bibo-Joshi>  closes  #107  <https://github.com/Bibo-Joshi/chango/
         issues/107>)

   Internal Changes
       • Bump actions/setup-python from 5.4.0 to 5.5.0  (#83  <https://github.com/Bibo-Joshi/chango/pull/83>  by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  codecov/test-results-action  from  1.0.2  to  1.1.0  (#84  <https://github.com/Bibo-Joshi/chango/
         pull/84> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump github/codeql-action from 3.28.10 to 3.28.13  (#85  <https://github.com/Bibo-Joshi/chango/pull/85>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  actions/download-artifact from 4.1.8 to 4.2.1 (#86 <https://github.com/Bibo-Joshi/chango/pull/86>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump actions/upload-artifact from 4.6.0 to 4.6.2 (#87 <https://github.com/Bibo-Joshi/chango/pull/87> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump   pre-commit   Dependency   Versions   (#88   <https://github.com/Bibo-Joshi/chango/pull/88>    by
         @pre-commit-ci[bot] <https://github.com/pre-commit-ci[bot]>)

       • Bump  actions/setup-python  from  5.5.0 to 5.6.0 (#89 <https://github.com/Bibo-Joshi/chango/pull/89> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump actions/download-artifact from 4.2.1 to 4.3.0 (#90  <https://github.com/Bibo-Joshi/chango/pull/90>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  stefanzweifel/git-auto-commit-action  from  5.1.0  to  5.2.0 (#91 <https://github.com/Bibo-Joshi/
         chango/pull/91> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump github/codeql-action from 3.28.13 to 3.28.16  (#92  <https://github.com/Bibo-Joshi/chango/pull/92>
         by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  astral-sh/setup-uv  from  5.3.0  to  6.0.1 (#93 <https://github.com/Bibo-Joshi/chango/pull/93> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump codecov/codecov-action from 5.4.0 to 5.4.3 (#94 <https://github.com/Bibo-Joshi/chango/pull/94>  by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  github/codeql-action  from 3.28.16 to 3.28.18 (#96 <https://github.com/Bibo-Joshi/chango/pull/96>
         by @dependabot <https://github.com/dependabot>)

       • Bump  codecov/test-results-action  from  1.1.0  to  1.1.1  (#97  <https://github.com/Bibo-Joshi/chango/
         pull/97> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Adapt  Test  Suite  to  click Update (#98 <https://github.com/Bibo-Joshi/chango/pull/98> by @Bibo-Joshi
         <https://github.com/Bibo-Joshi>)

       • Implement PEP 735 Dependency Groups (#99 <https://github.com/Bibo-Joshi/chango/pull/99> by  @Bibo-Joshi
         <https://github.com/Bibo-Joshi>)

       • Bump  stefanzweifel/git-auto-commit-action  from  5.2.0  to 6.0.1 (#100 <https://github.com/Bibo-Joshi/
         chango/pull/100> by @dependabot <https://github.com/dependabot>)

       • Bump  pre-commit   Dependency   Versions   (#101   <https://github.com/Bibo-Joshi/chango/pull/101>   by
         @pre-commit-ci <https://github.com/pre-commit-ci>)

       • Update  furo requirement from ~=2024.8 to >=2024.8,<2026.0 (#102 <https://github.com/Bibo-Joshi/chango/
         pull/102> by @dependabot <https://github.com/dependabot>)

       • Bump astral-sh/setup-uv from 6.0.1 to 6.4.3  (#103  <https://github.com/Bibo-Joshi/chango/pull/103>  by
         @dependabot <https://github.com/dependabot>)

       • Bump  github/codeql-action  from 3.29.2 to 3.29.5 (#104 <https://github.com/Bibo-Joshi/chango/pull/104>
         by @dependabot <https://github.com/dependabot>)

       • Bump sigstore/gh-action-sigstore-python  from  3.0.0  to  3.0.1  (#105  <https://github.com/Bibo-Joshi/
         chango/pull/105> by @dependabot <https://github.com/dependabot>)

   0.4.0
       2025-03-09

   New Features
       • Add  Workaround  for  PRs from Forks (#79 <https://github.com/Bibo-Joshi/chango/pull/79> by @Bibo-Joshi
         <https://github.com/Bibo-Joshi>)

       • Check  for  Changes   in   DirectoryChanGo.build_github_event_change_note   (#80   <https://github.com/
         Bibo-Joshi/chango/pull/80> by @Bibo-Joshi <https://github.com/Bibo-Joshi>)

   Documentation
       • Documentation Improvements (#81 <https://github.com/Bibo-Joshi/chango/pull/81> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   Internal Changes
       • Bump  stefanzweifel/git-auto-commit-action  from  5.0.1  to  5.1.0 (#74 <https://github.com/Bibo-Joshi/
         chango/pull/74> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump codecov/codecov-action from 5.3.1 to 5.4.0 (#75 <https://github.com/Bibo-Joshi/chango/pull/75>  by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  pypa/gh-action-pypi-publish  from  1.12.3  to  1.12.4 (#76 <https://github.com/Bibo-Joshi/chango/
         pull/76> by @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump github/codeql-action from 3.28.8 to 3.28.10 (#77 <https://github.com/Bibo-Joshi/chango/pull/77> by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump astral-sh/setup-uv from 5.1.0  to  5.3.0  (#78  <https://github.com/Bibo-Joshi/chango/pull/78>  by
         @dependabot[bot] <https://github.com/dependabot[bot]>)

       • Bump  Version  to  0.4.0  (#82  <https://github.com/Bibo-Joshi/chango/pull/82> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   0.3.2
       2025-02-07

   Bug Fixes
       • Fix Link Returned by GitHubSectionChangeNot.get_thread_url (#72  <https://github.com/Bibo-Joshi/chango/
         pull/72>  by  @Bibo-Joshi  <https://github.com/Bibo-Joshi>  closes  #71 <https://github.com/Bibo-Joshi/
         chango/issues/71>)

   Internal Changes
       • Remove Debugging Content (#70 <https://github.com/Bibo-Joshi/chango/pull/70> by  @Bibo-Joshi  <https://
         github.com/Bibo-Joshi>)

       • Bump  Version  to  0.3.2  (#73  <https://github.com/Bibo-Joshi/chango/pull/73> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   0.3.1
       2025-02-06

   Bug Fixes
       • Fix Faulty  Build  Configuration  (#68  <https://github.com/Bibo-Joshi/chango/pull/68>  by  @Bibo-Joshi
         <https://github.com/Bibo-Joshi>)

   Internal Changes
       • Bump  Version  to  0.3.1  (#69  <https://github.com/Bibo-Joshi/chango/pull/69> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   0.3.0
       2025-02-04

   Breaking Changes
       • Adapt  expected   exceptions   in   ChanGo   <#chango.abc.ChanGo>   and   VersionScanner   <#chango.abc
         .VersionScanner>  to  use  ChanGoError <#chango.error.ChanGoError> (#64 <https://github.com/Bibo-Joshi/
         chango/pull/64> by @Bibo-Joshi <https://github.com/Bibo-Joshi>)

   New Features
       • Add Classes  BackwardCompatibleVersionScanner  <#chango.concrete.BackwardCompatibleVersionScanner>  and
         BackwardCompatibleChanGo  <#chango.concrete.BackwardCompatibleChanGo>  allowing  to  easily  transition
         between change not formats (#64 <https://github.com/Bibo-Joshi/chango/pull/64> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   Internal Changes
       • Switch  to  using  GitHubSectionChangeNote   <#chango.concrete.sections.GitHubSectionChangeNote>   (#64
         <https://github.com/Bibo-Joshi/chango/pull/64> by @Bibo-Joshi <https://github.com/Bibo-Joshi>)

       • Bump  Version  to  0.3.0  (#66  <https://github.com/Bibo-Joshi/chango/pull/66> by @Bibo-Joshi <https://
         github.com/Bibo-Joshi>)

   0.2.0
       2025-02-03

       • FIx  Sorting  Direction  in  HeaderVersionHistory.render  (#46   <https://github.com/Bibo-Joshi/chango/
         pull/46>)

       • Add chango.concrete.sections (#47 <https://github.com/Bibo-Joshi/chango/pull/47>)

       • Implement  GitHubSectionChangeNote.build_from_github_event  And  Several Adaptions on GitHub Automation
         (#50 <https://github.com/Bibo-Joshi/chango/pull/50>)

       • Bump astral-sh/setup-uv from 4.2.0 to 5.1.0 (#52 <https://github.com/Bibo-Joshi/chango/pull/52>)

       • Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#53 <https://github.com/Bibo-Joshi/chango/pull/53>)

       • Bump github/codeql-action from 3.27.9 to 3.28.0 (#54 <https://github.com/Bibo-Joshi/chango/pull/54>)

       • Bump codecov/codecov-action from 5.1.1 to 5.1.2 (#55 <https://github.com/Bibo-Joshi/chango/pull/55>)

       • Bump pre-commit Dependency Versions (#56 <https://github.com/Bibo-Joshi/chango/pull/56>)

       • Don't Enforce One Required Section  in  SectionChangeNote  (#57  <https://github.com/Bibo-Joshi/chango/
         pull/57>)

       • Fix Nesting Bug in Parsing rich to sphinx Syntax (#58 <https://github.com/Bibo-Joshi/chango/pull/58>)

       • Bump github/codeql-action from 3.28.0 to 3.28.8 (#59 <https://github.com/Bibo-Joshi/chango/pull/59>)

       • Bump  codecov/test-results-action  from  1.0.1  to  1.0.2  (#60  <https://github.com/Bibo-Joshi/chango/
         pull/60>)

       • Bump actions/setup-python from 5.3.0 to 5.4.0 (#61 <https://github.com/Bibo-Joshi/chango/pull/61>)

       • Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#62 <https://github.com/Bibo-Joshi/chango/pull/62>)

       • Bump codecov/codecov-action from 5.1.2 to 5.3.1 (#63 <https://github.com/Bibo-Joshi/chango/pull/63>)

       • Bump Version to 0.2.0 (#65 <https://github.com/Bibo-Joshi/chango/pull/65>)

   0.1.0
       2024-12-15

       • Use git mv in ChanGo.release if Available (#43 <https://github.com/Bibo-Joshi/chango/pull/43>)

       • Set up Action  Metadata  for  Publishing  on  Marketplace  (#44  <https://github.com/Bibo-Joshi/chango/
         pull/44>)

       • Bump Version to 0.1.0 (#45 <https://github.com/Bibo-Joshi/chango/pull/45>)

   0.0.1
       2024-12-13

       • Initial Commit

       • Add Initial Functionality (#1 <https://github.com/Bibo-Joshi/chango/pull/1>)

       • Set Up Initial ReadTheDocs Build (#2 <https://github.com/Bibo-Joshi/chango/pull/2>)

       • Add Types to Docstrings: chango and chango.abc (#4 <https://github.com/Bibo-Joshi/chango/pull/4>)

       • Add Types To Docstrings: chango.concrete (#5 <https://github.com/Bibo-Joshi/chango/pull/5>)

       • Add CLI to Sphinx Documentation (#6 <https://github.com/Bibo-Joshi/chango/pull/6>)

       • Set Up Unified Formatting for CLI Help Texts and HTML Documentation (#7 <https://github.com/Bibo-Joshi/
         chango/pull/7>)

       • Add Unit Tests for Direct Members of chango Package (#8 <https://github.com/Bibo-Joshi/chango/pull/8>)

       • Make Use of pytest-xdist and pytest-randomly (#9 <https://github.com/Bibo-Joshi/chango/pull/9>)

       • Cache Dependencies in CI (#10 <https://github.com/Bibo-Joshi/chango/pull/10>)

       • Add Python 3.13 to Test Matrix (#11 <https://github.com/Bibo-Joshi/chango/pull/11>)

       • Improve Coverage of Existing Tests (#12 <https://github.com/Bibo-Joshi/chango/pull/12>)

       • Add Unit Tests for chango.abc.ChangeNote (#13 <https://github.com/Bibo-Joshi/chango/pull/13>)

       • Improve Coverage Configuration (#14 <https://github.com/Bibo-Joshi/chango/pull/14>)

       • Make ChangeNote.to_bytes Concrete (#15 <https://github.com/Bibo-Joshi/chango/pull/15>)

       • Add Unit Tests for chango.abc.VersionNote (#16 <https://github.com/Bibo-Joshi/chango/pull/16>)

       • Add Unit Tests for chango.abc.VersionHistory (#17 <https://github.com/Bibo-Joshi/chango/pull/17>)

       • Add  Unit  Tests  for  chango.concrete.Comment(Change|Version)Note (#18 <https://github.com/Bibo-Joshi/
         chango/pull/18>)

       • Remove Redundant Logic From and Add  Unit  Tests  for  HeaderVersionHistory  (#19  <https://github.com/
         Bibo-Joshi/chango/pull/19>)

       • Add Unit Tests for DirectoryVersionScanner (#20 <https://github.com/Bibo-Joshi/chango/pull/20>)

       • Add Unit Tests for VersionScanner (#21 <https://github.com/Bibo-Joshi/chango/pull/21>)

       • Add Unit Tests for DirectoryChanGo (#22 <https://github.com/Bibo-Joshi/chango/pull/22>)

       • Remove Redundant CommentChangeNote.to_bytes (#23 <https://github.com/Bibo-Joshi/chango/pull/23>)

       • Add Unit Tests for ChanGo (#24 <https://github.com/Bibo-Joshi/chango/pull/24>)

       • Initial Setup for Testing the CLI (#25 <https://github.com/Bibo-Joshi/chango/pull/25>)

       • Initial Readme Content and Changelog Setup (#26 <https://github.com/Bibo-Joshi/chango/pull/26>)

       • Create  Change  Notes  from  GitHub  Events  and Add GitHub Action (#27 <https://github.com/Bibo-Joshi/
         chango/pull/27>)

       • Add Sphinx Extension (#28 <https://github.com/Bibo-Joshi/chango/pull/28>)

       • Add Public chango.config Module (#29 <https://github.com/Bibo-Joshi/chango/pull/29>)

       • Make Parameter base_directory of DirectoryVersionScanner Relative  to  Calling  Module  (#33  <https://
         github.com/Bibo-Joshi/chango/pull/33>)

       • Add VersionScanner.invalidate_caches (#34 <https://github.com/Bibo-Joshi/chango/pull/34>)

       • Increase Code Coverage (#35 <https://github.com/Bibo-Joshi/chango/pull/35>)

       • Add Unit Tests for CLI (#36 <https://github.com/Bibo-Joshi/chango/pull/36>)

       • Add  Dependabot  and  Security  Scanning for GitHub Actions (#37 <https://github.com/Bibo-Joshi/chango/
         pull/37>)

       • Update sphinx requirement from ~=8.0 to ~=8.1 (#38 <https://github.com/Bibo-Joshi/chango/pull/38>)

       • Add Workflows for Automated Releases (#39 <https://github.com/Bibo-Joshi/chango/pull/39>)

       • Bump Version to 0.0.1 (#41 <https://github.com/Bibo-Joshi/chango/pull/41>)

Author

       Hinrich Mahler

Copyright

       2024, Hinrich Mahler

0.6.0                                             Nov 30, 2025                                         CHANGO(1)