Uploaded image for project: 'Project Quay'
  1. Project Quay
  2. PROJQUAY-1232

Update Quay's packages for Python 3.9 compatibility

    XMLWordPrintable

Details

    • Task
    • Resolution: Done
    • Critical
    • quay-v3.8.0
    • None
    • quay
    • 0

    Description

      Background

      Quay v3.4.0 is targeting compatibility with Python 3.8. This version of Python has been stable for over a year. We don't want to fall too far behind on our package bumps and Python compatibility. That contributed towards the massive Python 2.7 -> Python 3.8 migration that we have spent the majority of a year working on.

      After some simple experiments in Fedora 33, which uses Python 3.9 by default, I have found that only a handful of packages need to be updated to successfully pass `pip install -r requirements.txt`. This is not indicative of how well Quay will function under Python 3.9, however.

      Requirements

      • Quay and all of its dependencies can be successfully installed and work as expected when using Python 3.9.
      • The Continuous Integration tests cover both Python 3.8 and Python 3.9 in the test matrix.

      Example Changes

      The following diff shows some simple changes I made to Quay's requirements.txt file to successfully install all Python dependencies in Python 3.9.

      $ git diff python3.9 upstream/master -- requirements.txt
      diff --git a/requirements.txt b/requirements.txt
      index 7fefb7fa..1f0ba07c 100644
      --- a/requirements.txt
      +++ b/requirements.txt
      @@ -40,8 +40,8 @@ docker==4.1.0
       docutils==0.15.2
       dumb-init==1.2.2
       ecdsa==0.15
      -elasticsearch==7.9.1
      -elasticsearch-dsl==7.3.0 # TODO: double-check that this is required
      +elasticsearch==7.0.4
      +elasticsearch-dsl==7.0.0
       fakeredis==1.1.0
       Flask==1.1.1
       Flask-Cors==3.0.8
      @@ -55,10 +55,10 @@ furl==2.1.0
       future==0.18.2
       futures==3.1.1
       geoip2==3.0.0
      -gevent==20.9.0
      +gevent==1.4.0
       gipc==1.0.1
      -greenlet==0.4.17
      -grpcio==1.33.2
      +greenlet==0.4.15
      +grpcio==1.30.0
       gunicorn==20.0.4
       hashids==1.2.0
       hiredis==1.0.1
      @@ -139,7 +139,7 @@ recaptcha2==0.1
       redis==3.3.11
       redlock==1.2.0
       rehash==1.0.0
      -reportlab==3.5.55
      +reportlab==3.5.34
       requests==2.22.0
       requests-aws4auth==0.9
       requests-file==1.4.3

      Attachments

        Activity

          People

            obulatov@redhat.com Oleg Bulatov
            kmullins@redhat.com Kurtis Mullins (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: