From Fedora Project Wiki

python-dateutil 2.x

Summary

The package providing dateutil python libraries is currently on version 1.5. Early releases in the 2.x series of python-dateutil would work only for python3, so the package was not updated in Fedora. Now, python-dateutil is at version 2.4 and does work with python2. Fedora packages can be updated to use the newer version.

Owner

Current status

Detailed Description

Many newer python packages require the newer version of python-dateutil, but some still need python-dateutil 1.5 to function properly. Maintainers will assess affected packages, and can use the parallel installable python-dateutil15 package, which already exists in the distribution, if they cannot migrate.

Migrating to python-dateutil 2.4

Many upstream projects have set requirements for python-dateutil 1.5 because the next release was python3 only. The current release will have both python2 and python3 subpackages, and usage of the modules has changed little. Maintainers are encouraged to test with the new version, communicate the above with upstream, and reach out to change owners as needed.

Staying on python-dateutil15

Some packages might need to stay on the older version. Again, we encourage you to test; this version is effectively unmaintained upstream and has no python3 subpackage.

python-dateutil15 is provided via a python egg. To use it, use *Requires: python-dateutil = 1.5* and apply a patch with something like this:

   import sys
   py_ver = sys.version[:3]
   dateutil_egg_path = "/usr/lib/python" + py_ver + "/site-packages/python_dateutil-1.5-py" + py_ver + ".egg/"
   sys.path.insert(0, dateutil_egg_path)
   from dateutil import stuff and things

Benefit to Fedora

Fedora can offer newer dateutil libraries, and newer packages that depend on dateutil.

The older version of python-dateutil is py2 only, while the current version is available for both python2 and python3. Updating will allow more packages to use python3.

Scope

  • Proposal owners:

Coordinate update efforts and assist maintainers in assessing, testing, and updating their packages.

  • Other developers:

Maintainers of packages that depend on python-dateutils should test with version 2.4, or the current release at freeze. If their package is not compatible with this version, they should change the packages Requires: to use python-dateutil15 and ensure that it works with the parallel-installable egg that it provides.

  • Release engineering: As each package should be assessed individually, a mass rebuild is not appropriate and release engineering has no requirements for this change.

Upgrade/compatibility impact

Existing functionality can be supported by the backwards compatibility package, but it is expected that most packages will be compatible with the newer version.

Post-F22, the compatibility package may be retired. *python3-dateutil* currently exists as a separate package, and it will be retired when *python-dateutil* grows a py3 subpackage.

How To Test

Some ideas:

  • Use the package with newer python-dateutil and see if it breaks :)
  • Review code that uses python-dateutil modules for incompatible changes.

User Experience

Third party developers may need to review their work for compatibility, and use the appropriate package. End users of packages that depend on python-dateutils should not be impacted.

Dependencies

  • barman
  • bugwarrior
  • buildbot-master
  • calibre
  • condor-plumage
  • dmlite-shell
  • fedocal
  • freeipa-python
  • gtg
  • libopensync-plugin-moto
  • nagios-plugins-lcgdm-common
  • openerp
  • openerp7
  • openerp-client
  • pyqtrailer
  • python-arrow
  • python-bloom
  • python-botocore
  • python-bugzilla2fedmsg
  • python-catkin_pkg
  • python-collada
  • python-croniter
  • python-django-horizon
  • python-django-tastypie
  • python-fedmsg-meta-fedora-infrastructure
  • python-freezegun
  • python-gertty
  • python-icalendar
  • python-matplotlib
  • python-mwlib
  • python-nikola-extras
  • python-OWSLib
  • python-pandas
  • python-proteus
  • python-pypump
  • python-rhsm
  • python-tahrir
  • python-tahrir-api
  • python-taskw
  • python-tgscheduler
  • python-vcstools
  • python-vobject
  • python-wstool
  • pytrailer
  • ReviewBoard
  • s3cmd
  • subscription-manager
  • sugar-toolkit
  • sugar-toolkit-gtk3
  • supybot
  • tryton
  • trytond
  • TurboGears
  • vertica-python
  • wuja
  • yokadi
  • yum-plugin-changelog

Tracking bug: #1126521

Contingency Plan

  • Contingency mechanism: Revert commits and continue shipping older versions of python-dateutil and dependent packages.

Alternatively, if a relative minority of packages cannot be updated to 2.x or use the 1.5 egg, python-dateutil15 can explicitly Conflict with python-dateutil.

  • Contingency deadline: Beta Freeze
  • Blocks release? No

Documentation

Release Notes

python-dateutil has been updated to version 2.4, allowing new versions of popular software in Fedora.