summaryrefslogtreecommitdiffstats
path: root/doc/source/whatsnew
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 18:07:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 18:07:41 +0000
commit76926159194e180003aa78de97e5f287bf4325a5 (patch)
tree2cea7245cdc3f66355900c820c145eba90598766 /doc/source/whatsnew
parentInitial commit. (diff)
downloadpython-apt-76926159194e180003aa78de97e5f287bf4325a5.tar.xz
python-apt-76926159194e180003aa78de97e5f287bf4325a5.zip
Adding upstream version 2.7.6.upstream/2.7.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/source/whatsnew')
-rw-r--r--doc/source/whatsnew/0.7.100.rst211
-rw-r--r--doc/source/whatsnew/0.8.0.rst38
-rw-r--r--doc/source/whatsnew/0.9.4.rst17
-rw-r--r--doc/source/whatsnew/1.0.rst75
-rw-r--r--doc/source/whatsnew/1.1.rst28
-rw-r--r--doc/source/whatsnew/1.4.rst16
-rw-r--r--doc/source/whatsnew/1.6.rst26
-rw-r--r--doc/source/whatsnew/1.7.rst42
-rw-r--r--doc/source/whatsnew/1.8.rst8
-rw-r--r--doc/source/whatsnew/2.0.rst37
-rw-r--r--doc/source/whatsnew/2.1.rst7
-rw-r--r--doc/source/whatsnew/index.rst9
12 files changed, 514 insertions, 0 deletions
diff --git a/doc/source/whatsnew/0.7.100.rst b/doc/source/whatsnew/0.7.100.rst
new file mode 100644
index 0000000..eda2764
--- /dev/null
+++ b/doc/source/whatsnew/0.7.100.rst
@@ -0,0 +1,211 @@
+What's New In python-apt 0.7.100
+================================
+Python-apt 0.7.100 is a new major release of the python bindings for the APT
+package management libraries. It provides support for Python 3, new language
+features and an API conforming to :PEP:`8`.
+
+Despite the many changes made in python-apt 0.7.100, the release still provides
+backwards compatibility to the 0.7 series. This makes it possible to run your
+old applications.
+
+This documents describes the important changes introduced since the release
+of python-apt 0.7.10.3, starting with the first development release 0.7.90
+from April 2009.
+
+.. note::
+
+ Applications using the old API should be updated to the new API because
+ the old ones will be dropped in a future release. To build a python-apt
+ variant without the deprecated API, build it without the -DCOMPAT_0_7
+ compiler flag.
+
+Support for Python 3
+--------------------
+Python-apt is the first Debian package to support the third major release of
+Python. The port is straight forward and integrates as nicely in Python 3 as
+the Python 2 builds integrate in Python 2.
+
+Please be aware that python-apt builds for Python 3 are built without the
+compatibility options enabled for Python 2 builds. They also do not provide
+methods like :meth:`has_key` on mapping objects, because it has been removed
+in Python 3.
+
+Python 3 support may be disabled by distributions.
+
+Real classes in :mod:`apt_pkg`
+------------------------------
+The 0.7.100 release introduces real classes in the :mod:`apt_pkg` extension. This
+is an important step forward and makes writing code much easier, because you
+can see the classes without having to create an object first. It also makes
+it easier to talk about those classes, because they have a real name now.
+
+The 0.7 series shipped many functions for creating new objects, because the
+classes were not exported. In 0.7.100, the classes themselves replace those
+functions, as you can see in the following table.
+
+.. table::
+
+ ===================================== =================================
+ Function Replacing class
+ ===================================== =================================
+ :func:`apt_pkg.GetAcquire` :class:`apt_pkg.Acquire`
+ :func:`apt_pkg.GetCache()` :class:`apt_pkg.Cache`
+ :func:`apt_pkg.GetCdrom()` :class:`apt_pkg.Cdrom`
+ :func:`apt_pkg.GetDepCache()` :class:`apt_pkg.DepCache`
+ :func:`apt_pkg.GetPackageManager` :class:`apt_pkg.PackageManager`
+ :func:`apt_pkg.GetPkgAcqFile` :class:`apt_pkg.AcquireFile`
+ :func:`apt_pkg.GetPkgActionGroup` :class:`apt_pkg.ActionGroup`
+ :func:`apt_pkg.GetPkgProblemResolver` :class:`apt_pkg.ProblemResolver`
+ :func:`apt_pkg.GetPkgRecords` :class:`apt_pkg.PackageRecords`
+ :func:`apt_pkg.GetPkgSourceList` :class:`apt_pkg.SourceList`
+ :func:`apt_pkg.GetPkgSrcRecords` :class:`apt_pkg.SourceRecords`
+ :func:`apt_pkg.ParseSection` :class:`apt_pkg.TagSection`
+ :func:`apt_pkg.ParseTagFile` :class:`apt_pkg.TagFile`
+ ===================================== =================================
+
+Complete rename of functions, methods and attributes
+-----------------------------------------------------
+In May 2008, Ben Finney reported bug 481061 against the python-apt package,
+asking for PEP8 conformant names. With the release of python-apt 0.7.100, this
+is finally happening.
+
+Context managers for the :keyword:`with` statement
+--------------------------------------------------
+This is not a real big change, but it's good to have it:
+:class:`apt_pkg.ActionGroup` can now be used as a context manager for the
+:keyword:`with` statement. This makes it more obvious that you are using an
+action group, and is just cooler::
+
+ with apt_pkg.ActionGroup(depcache):
+ for package in my_selected_packages:
+ depcache.mark_install(package)
+
+This also works for :class:`apt.Cache`::
+
+ with cache.actiongroup(): # cache is an Instance of apt.Cache
+ for package in my_selected_packages:
+ package.mark_install() # Instance of apt.Package
+
+Yet another context manager is available for locking the package system::
+
+ with apt_pkg.SystemLock():
+ # do your stuff here
+ pass
+
+There is also one for file based locking::
+
+ with apt_pkg.FileLock(filename):
+ # do your stuff here
+ pass
+
+
+Unification of dependency handling
+----------------------------------
+In apt 0.7.XX, there were three different return types of functions parsing
+dependencies.
+
+First of all, there were :func:`apt_pkg.ParseDepends()` and
+:func:`apt_pkg.ParseSrcDepends()` which returned a list of or groups (which
+are lists themselves) which contain tuples in the format ``(package,ver,op)``,
+whereas op is one of "<=",">=","<<",">>","=","!=".
+
+Secondly, there was Package.DependsListStr which returned a dictionary mapping
+the type of the dependency (e.g. 'Depends', 'Recommends') to a list similar to
+those of :func:`apt_pkg.ParseDepends()`. The only difference was that the
+values ">>", "<<" of op are ">", "<" instead.
+
+Thirdly, there was SourceRecords.BuildDepends, which returned a simple list
+of tuples in the format ``(package, version, op, type)``, whereas ``op`` was
+the integer representation of those ">>", "<<" actions and ``type`` an integer
+representing the type of the dependency (e.g. 'Build-Depends'). The whole
+format was almost useless from the Python perspective because the string
+representations or constants for checking the values were not exported.
+
+python-apt 0.7.100 puts an end to this confusion and uses one basic format, which
+is the format known from Package.DependsListStr. The format change only applies
+to the new functions and attributes, i.e. :attr:`SourceRecords.build_depends`
+will now return a dict, whereas :attr:`SourceRecords.BuildDepends` will still
+return the classic format. The functions :func:`apt_pkg.parse_depends` and
+:func:`apt_pkg.parse_src_depends` now use the same values for ``op`` as
+:attr:`Package.DependsListStr` does.
+
+Example::
+
+ >>> s = apt_pkg.SourceRecords()
+ >>> s.lookup("apt")
+ 1
+ >>> s.build_depends
+ {'Build-Depends': [[('debhelper', '5.0', '>=')],
+ [('libdb-dev', '', '')],
+ [('gettext', '0.12', '>=')],
+ [('libcurl4-gnutls-dev', '', ''),
+ ('libcurl3-gnutls-dev', '7.15.5', '>=')],
+ [('debiandoc-sgml', '', '')],
+ [('docbook-utils', '0.6.12', '>=')],
+ [('xsltproc', '', '')],
+ [('docbook-xsl', '', '')],
+ [('xmlto', '', '')]]}
+ >>> s.BuildDepends
+ [('debhelper', '5.0', 2, 0),
+ ('libdb-dev', '', 0, 0),
+ ('gettext', '0.12', 2, 0),
+ ('libcurl4-gnutls-dev', '', 16, 0),
+ ('libcurl3-gnutls-dev', '7.15.5', 2, 0),
+ ('debiandoc-sgml', '', 0, 0),
+ ('docbook-utils', '0.6.12', 2, 0),
+ ('xsltproc', '', 0, 0),
+ ('docbook-xsl', '', 0, 0),
+ ('xmlto', '', 0, 0)]
+
+C++ headers
+------------
+The 0.7.100 release introduces python-apt-dev which provides headers for
+developers to provide Python support in the libapt-pkg-using application.
+
+Redesign of :mod:`apt_inst`
+---------------------------
+The 0.7.100 series redesigns the :mod:`apt_inst` module to provide
+more flexible classes replacing the older functions. The older functions
+are still available in Python 2 builds, but are deprecated and will be
+removed in the future.
+
+Other changes
+-------------
+This release of python-apt also features several other, smaller changes:
+
+ * Reduced memory usage by making :class:`apt.Cache` create
+ :class:`apt.Package()` object dynamically, instead of creating all of
+ them during the cache initialization.
+ * Support to set the candidate version in :class:`apt.package.Package`
+ * Support for reading gzip-compressed files in apt_pkg.TagFile.
+ * Various changes to :mod:`apt.debfile` have been merged from gdebi.
+
+There have been various other changes, see the changelog for a complete list
+of changes.
+
+
+Porting your applications to the new python-apt API
+----------------------------------------------------
+Porting your application to the new python-apt API may be trivial. You
+should download the source tarball of python-apt and run the tool
+utils/migrate-0.8 over your code::
+
+ utils/migrate-0.8.py -c myapp.py mypackage/
+
+This will search your code for places where possibly deprecated names are
+used. Using the argument ``-c``, you can turn colorized output on.
+
+Now that you know which parts of your code have to be changed, you have to know
+how to do this. For classes, please look at the table. For all attributes,
+methods, functions, and their parameters the following rules apply:
+
+ 1. Replace leading [A-Z] with [a-z] (e.g DescURI => descURI)
+ 2. Replace multiple [A-Z] with [A-Z][a-z] (e.g. descURI => descUri)
+ 3. Replace every [A-Z] with the corresponding [a-z] (descUri => desc_uri)
+
+As an exception, refixes such as 'de' (e.g. 'dequote') or 'un' (e.g. 'unlock')
+are normally not separated by underscores from the next word. There are also
+some other exceptions which are listed here, and apply to any name containing
+this word: **filename**, **filesize**, **destdir**, **destfile**, **dequote**,
+**unlock**, **reinstall**, **pinfile**, **REINSTREQ**, **UNPACKED**,
+**parse_commandline**.
diff --git a/doc/source/whatsnew/0.8.0.rst b/doc/source/whatsnew/0.8.0.rst
new file mode 100644
index 0000000..2eeb135
--- /dev/null
+++ b/doc/source/whatsnew/0.8.0.rst
@@ -0,0 +1,38 @@
+What's New In python-apt 0.8
+============================
+Python-apt 0.8 is a new major release of the python bindings for the APT
+package management libraries.
+
+
+Removal of old API
+------------------
+The old API that was deprecated in 0.7.100 is no longer available. Applications
+that have not yet updated to the new API should do so.
+
+Multi-arch support
+------------------
+This version of python-apt introduces multi-arch support:
+
+ * A new class, :class:`apt_pkg.Group` has been added.
+ * :class:`apt_pkg.Cache` can now be indexed by ``(name, architecture)``
+ tuples
+
+Features for mancoosi
+----------------------
+Several new features related to ordering have been added on request
+of the mancoosi project:
+
+ * A new class :class:`apt_pkg.OrderList` has been added
+ * The :class:`apt_pkg.PackageManager` class now provides new methods
+ for registering install/remove/configure actions which can be
+ subclassed to check ordering.
+
+Other changes
+-------------
+This release of python-apt also features several other, smaller changes:
+
+ * apt_pkg.Cache() now takes None for the progress parameter, preventing
+ progress reporting.
+
+There have been various other changes, see the changelog for a complete list
+of changes.
diff --git a/doc/source/whatsnew/0.9.4.rst b/doc/source/whatsnew/0.9.4.rst
new file mode 100644
index 0000000..617ef08
--- /dev/null
+++ b/doc/source/whatsnew/0.9.4.rst
@@ -0,0 +1,17 @@
+What's New In python-apt 0.9.4
+==============================
+Python-apt 0.9.4 is a maintenance update.
+
+New features
+------------
+
+ * Support for apt_pkg.sha512sum()
+ * Support for apt_pkg.maybe_open_clear_signed_file()
+ * Use apt_pkg.open_maybe_clear_signed_file() when opening a .dsc file
+ * add MULTI_ARCH_NO constant (MULTI_ARCH_NONE is deprecated)
+
+Maintenance
+-----------
+
+ * Add Ubuntu Wily
+ * Update examples
diff --git a/doc/source/whatsnew/1.0.rst b/doc/source/whatsnew/1.0.rst
new file mode 100644
index 0000000..b3364ad
--- /dev/null
+++ b/doc/source/whatsnew/1.0.rst
@@ -0,0 +1,75 @@
+What's New In python-apt 1.0
+==============================
+Python-Apt 1.0 fixes several issues and use of deprecated methods. Most
+importantly, it introduces large file support
+
+New features
+------------
+* :class:`apt_pkg.AcquireFile` can now take a hash string that is not an
+ md5 value, using the new `hash` argument.
+* A new a :meth:`apt_pkg.TagFile.close` method was added
+* :class:`apt_pkg.TagFile` is now a context manager
+
+* The high-level cache class, :class:`apt.cache.Cache` and it's companion
+ :class:`apt.cache.FilteredCache` now support package
+ names with special architecture qualifiers such as :all and :native.
+
+* The method :meth:`apt.cache.Cache.connect2` allows connecting callbacks on
+ cache changes that take the cache as their first argument, reducing the
+ potential for reference cycles.
+
+* The property :attr:`apt.package.Version.is_installed` was added.
+* The properties :attr:`apt.package.BaseDependency.installed_target_versions`
+ and :attr:`apt.package.Dependency.installed_target_versions` were added.
+
+* The property :class:`apt.Dependency.rawtype` was added to give the raw type
+ of a dependency, such as 'Depends'.
+
+* The attribute :attr:`apt_pkg.Dependency.comp_type_deb` and the property
+ :attr:`apt.Dependency.relation_deb` were added, they return a Debian-style
+ comparison operator instead of a mathematical-style one.
+
+* A new filter for filtered caches is provided, :class:`apt.cache.InstalledFilter`.
+
+Backward-incompatible changes
+-----------------------------
+* :class:`apt.Version` now compares package names in addition to version only
+ when checking for equality. This was broken previously.
+
+Deprecated
+----------
+The following features are deprecated, starting with this release:
+
+* The `section` member of :class:`apt_pkg.Package`
+* The `files` member of of :class:`apt_pkg.SourceRecords`
+* The `md5` argument to :class:`apt_pkg.AcquireFile`, it is replaced by
+ the `hash` argument.
+* The method :meth:`apt.cache.Cache.connect` has been deprecated. It is
+ replaced by :meth:`apt.cache.Cache.connect2` which is more flexible and
+ less prone to reference cycles.
+* The attribute :attr:`apt_pkg.AcquireItem.mode` has been replaced by
+ :attr:`apt_pkg.AcquireItem.active_subprocess`
+* The class :class:`apt_pkg.IndexRecords` has been deprecated and will
+ be removed in the next release.
+
+Removed
+-------
+* The module :mod:`apt.progress.gtk2` has been removed. There were no
+ users in the Debian archive, its last update was in 2013, and it was buggy
+ already. Apart from that, it suggested that it is OK to run a graphical
+ application as root, and used the unmaintained GTK+ 2 version.
+
+ Therefore, there is no replacement, please use PackageKit or aptdaemon
+ for installation in graphical environments.
+* The attribute :attr:`apt_pkg.Package.auto` was not set anymore, and thus
+ removed.
+
+Maintenance
+-----------
+* The classes :class:`apt.cache.Cache` and :class:`apt.cache.FilteredCache` no
+ longer store cyclic references to/between them. This fixes a huge issue,
+ because a cache can have tens of open file descriptors, causing the maximum
+ of file descriptors to be reached easily.
+
+* :mod:`apt_inst` now supports ar and tar archives that are larger than 4 GiB
+* Various smaller bug fixes
diff --git a/doc/source/whatsnew/1.1.rst b/doc/source/whatsnew/1.1.rst
new file mode 100644
index 0000000..5a4f5c3
--- /dev/null
+++ b/doc/source/whatsnew/1.1.rst
@@ -0,0 +1,28 @@
+What's New In python-apt 1.1
+==============================
+This release is built against APT 1.1
+
+Highlights
+----------
+* Code that previously raised :class:`SystemError` now raises
+ :class:`apt_pkg.Error`.
+
+Removed
+-------
+* The class :class:`apt_pkg.IndexRecords` has been removed, as it was removed
+ in APT 1.1
+* :attr:`apt_pkg.Dependency.smart_target_pkg` has been removed.
+
+Added
+------
+* The class :class:`apt_pkg.HashStringList` has been added.
+* The class :class:`apt_pkg.Error` and an alias :class:`apt_inst.Error` has
+ been added.
+
+
+Deprecated
+----------
+* :attr:`apt_pkg.PackageRecords.md5_hash`,
+ :attr:`apt_pkg.PackageRecords.sha1_hash`, and
+ :attr:`apt_pkg.PackageRecords.sha256_hash`
+ are replaced by :attr:`apt_pkg.PackageRecords.hashes`.
diff --git a/doc/source/whatsnew/1.4.rst b/doc/source/whatsnew/1.4.rst
new file mode 100644
index 0000000..fa3f95d
--- /dev/null
+++ b/doc/source/whatsnew/1.4.rst
@@ -0,0 +1,16 @@
+What's New In python-apt 1.4
+============================
+This release is built against APT 1.4, see :doc:`1.1` for the other changes
+since 1.0, the last series with a feature-complete release. There are no 1.2
+or 1.3 series.
+
+Added
+------
+* The methods :meth:`apt_pkg.parse_depends` and :meth:`apt_pkg.parse_src_depends`
+ gained a new parameter *architecture* to change the architecture the dependency lines
+ are interpreted for, matching the change in apt 1.4~beta3.
+
+ This only really makes sense for the latter option right now, as it only
+ affects the parsing of architecture lists.
+
+ By default, the host architecture is used.
diff --git a/doc/source/whatsnew/1.6.rst b/doc/source/whatsnew/1.6.rst
new file mode 100644
index 0000000..2015bee
--- /dev/null
+++ b/doc/source/whatsnew/1.6.rst
@@ -0,0 +1,26 @@
+What's New In python-apt 1.6
+============================
+
+Changed
+-------
+* Methods of :class:`apt_pkg.DepCache` now raise an exception if passed
+ objects belonging to a different cache, in order to avoid segmentation
+ faults or wrong behavior.
+
+ .. versionchanged:: 1.6.1
+
+ Starting with 1.6.1 and 1.7~alpha1, the exception raised is
+ :class:`apt_pkg.CacheMismatchError`, and :class:`apt.cache.Cache` will
+ automatically remap open packages and versions to a new cache.
+
+* Initial type hints
+
+* :attr:`apt_pkg.SourceRecords.files` now returns a
+ :class:`apt_pkg.SourceRecordsFile` object with getters instead of
+ a tuple (but it also emulates the tuple).
+
+Bugfixes
+--------
+* Various other fixes for segmentation faults
+* apt/auth.py: Protect against race with gpg when removing tmpdir
+ (Closes: #871585)
diff --git a/doc/source/whatsnew/1.7.rst b/doc/source/whatsnew/1.7.rst
new file mode 100644
index 0000000..38485f7
--- /dev/null
+++ b/doc/source/whatsnew/1.7.rst
@@ -0,0 +1,42 @@
+What's New In python-apt 1.7
+============================
+
+Changed
+--------
+* Starting with 1.6.1 and 1.7~alpha1, the exception raised when
+ passing objects of a different cache to :class:`apt_pkg.DepCache`
+ is :class:`apt_pkg.CacheMismatchError`, and :class:`apt.cache.Cache` will
+ automatically remap open packages and versions to a new cache.
+
+* :meth:`apt_pkg.Policy.get_priority()` now accepts :class:`apt_pkg.Version`
+ objects in addition to :class:`apt_pkg.Package` and :class:`apt_pkg.PackageFile`
+ ones.
+
+* :attr:`apt.package.Version.policy_priority` now returns the priority
+ for that version rather than the highest priority for one of its
+ package files.
+
+* :meth:`apt.Cache.commit` and :meth:`apt_pkg.DepCache.commit` now use
+ frontend locking to run dpkg.
+
+Added
+------
+* The class :class:`apt_pkg.PackageRecords` can now lookup custom fields
+ using ``records[key]`` and ``key in records``.
+
+
+* All code is now statically typed. Some methods from :mod:`apt_pkg`
+ and :mod:`apt_inst` might still be missing or more strict than
+ necessary.
+
+* A new method :meth:`apt.cache.Cache.fix_broken` has been added.
+
+* New methods for frontend locking have been added:
+ :meth:`apt_pkg.pkgsystem_lock_inner`,
+ :meth:`apt_pkg.pkgsystem_unlock_inner`,
+ :meth:`apt_pkg.pkgsystem_is_locked` (starting in alpha 3).
+
+Deprecated
+----------
+* :meth:`apt_pkg.Policy.get_priority()` accepting :class:`apt_pkg.Package`
+ is deprecated.
diff --git a/doc/source/whatsnew/1.8.rst b/doc/source/whatsnew/1.8.rst
new file mode 100644
index 0000000..0f9704f
--- /dev/null
+++ b/doc/source/whatsnew/1.8.rst
@@ -0,0 +1,8 @@
+What's New In python-apt 1.8
+============================
+
+
+Added
+------
+* A new method :meth:`apt_pkg.Policy.init_defaults` has been added
+ in 1.8.2.
diff --git a/doc/source/whatsnew/2.0.rst b/doc/source/whatsnew/2.0.rst
new file mode 100644
index 0000000..ed2b063
--- /dev/null
+++ b/doc/source/whatsnew/2.0.rst
@@ -0,0 +1,37 @@
+What's New In python-apt 2.0
+============================
+Changes since 1.8.
+
+Added
+-----
+* The method :meth:`apt_pkg.TagSection.write()` has been added
+* The attribute :attr:`apt_pkg.HashString.hashvalue` has been added
+* The constructor :class:`apt_pkg.AcquireFile` now accepts an
+ :class:`apt_pkg.HashStringList` as the *hash* argument.
+
+* The classes :class:`apt_pkg.HashString` and :class:`apt_pkg.HashStringList`
+ gained a new ``usable`` property.
+
+Removed
+-------
+* The methods called `install_protect` have been removed
+* The `section` attribute has been removed from :class:`apt_pkg.Package`
+ and :class:`apt.package.Package`
+* The method :meth:`apt_pkg.rewrite_section` has been removed
+* The attributes :attr:`apt_pkg.Hashes.md5`, :attr:`apt_pkg.Hashes.sha1`, :attr:`apt_pkg.Hashes.sha256` have been removed
+* The method :meth:`apt_pkg.Policy.get_match` has been removed.
+* The constructor :class:`apt_pkg.AcquireFile` no longer takes an *md5* argument.
+
+Changed
+-------
+* In :class:`apt_pkg.SourceRecords`, the tuple view of files now always contains
+ None where it previously contained the md5 hash.
+* The method :meth:`apt_pkg.Policy.get_priority()` no longer accepts :class:`apt_pkg.Package` instances.
+* Instances of :class:`apt_pkg.HashString` can now be compared for equality
+* :class:`apt.progress.base.InstallProgress` is now a context manager, use it in
+ a ``with`` statement to avoid leaking file descriptors.
+
+Bug fixes
+---------
+
+* Fixed unterminated ``char*`` array in :class:`apt_pkg.TagRemove` constructor.
diff --git a/doc/source/whatsnew/2.1.rst b/doc/source/whatsnew/2.1.rst
new file mode 100644
index 0000000..ecbd995
--- /dev/null
+++ b/doc/source/whatsnew/2.1.rst
@@ -0,0 +1,7 @@
+What's New In python-apt 2.1
+============================
+2.1 is the development series for 2.2
+
+Removed
+-------
+* Support for Python 2 (2.1.0)
diff --git a/doc/source/whatsnew/index.rst b/doc/source/whatsnew/index.rst
new file mode 100644
index 0000000..cc270a1
--- /dev/null
+++ b/doc/source/whatsnew/index.rst
@@ -0,0 +1,9 @@
+What's new in python-apt
+========================
+
+.. toctree::
+ :maxdepth: 2
+ :glob:
+
+ *
+