diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:07:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:07:41 +0000 |
commit | 76926159194e180003aa78de97e5f287bf4325a5 (patch) | |
tree | 2cea7245cdc3f66355900c820c145eba90598766 /doc/source/whatsnew | |
parent | Initial commit. (diff) | |
download | python-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.rst | 211 | ||||
-rw-r--r-- | doc/source/whatsnew/0.8.0.rst | 38 | ||||
-rw-r--r-- | doc/source/whatsnew/0.9.4.rst | 17 | ||||
-rw-r--r-- | doc/source/whatsnew/1.0.rst | 75 | ||||
-rw-r--r-- | doc/source/whatsnew/1.1.rst | 28 | ||||
-rw-r--r-- | doc/source/whatsnew/1.4.rst | 16 | ||||
-rw-r--r-- | doc/source/whatsnew/1.6.rst | 26 | ||||
-rw-r--r-- | doc/source/whatsnew/1.7.rst | 42 | ||||
-rw-r--r-- | doc/source/whatsnew/1.8.rst | 8 | ||||
-rw-r--r-- | doc/source/whatsnew/2.0.rst | 37 | ||||
-rw-r--r-- | doc/source/whatsnew/2.1.rst | 7 | ||||
-rw-r--r-- | doc/source/whatsnew/index.rst | 9 |
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: + + * + |