Repository: spyder-ide/qtpy (language: python)

Issue:
Fix flaky importlib error on Ubuntu Python 3.7 conda CI job
The Test ubuntu-latest Python 3.7 conda=Yes CI job fails approximately every other time with the error `ERROR module 'importlib_metadata' has no attribute 'distributions'`: [Example Run](https://github.com/spyder-ide/qtpy/actions/runs/4636864288/jobs/8205180511?pr=422). We should probably look into that and do something about it.


Discussion / hints:
3.7 is about to reach end-of-life, so I'd suggest to drop it from our CIs instead of investing time trying to fix this 

Fix patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a9da129c..10d20c53 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -103,11 +103,13 @@ jobs:
            auto-update-conda: true
            channels: conda-forge
            channel-priority: strict
+           miniforge-variant: Mambaforge
+           use-mamba: true
       - name: Print Conda info
         shell: bash -l {0}
         run: |
-          conda info
-          conda list
+          mamba info
+          mamba list
       - name: Test PyQt5
         if: (! matrix.skip-pyqt5)
         run: ./.github/workflows/test.sh pyqt5
@@ -121,7 +123,7 @@ jobs:
         if: always() && (! (matrix.skip-pyside6))
         run: ./.github/workflows/test.sh pyside6
       - name: Upload coverage data to coveralls.io
-        shell: bash
+        shell: bash -e {0}
         env:
           COVERALLS_FLAG_NAME: ${{ matrix.os }} Python ${{ matrix.python-version }} conda=${{ matrix.use-conda }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


Test patch:
diff --git a/.github/workflows/test.sh b/.github/workflows/test.sh
index 977e7644..5ccfbc10 100755
--- a/.github/workflows/test.sh
+++ b/.github/workflows/test.sh
@@ -1,12 +1,8 @@
 #!/bin/bash -ex
 
-# Activate conda properly
 eval "$(conda shell.bash hook)"
 
-# Remove any existing env
-conda remove -q -n test-env --all || true
-
-# Create and activate conda environment for this test
+# Create and activate mamba environment for this test
 BINDING=$(echo "$1" | tr '[:lower:]' '[:upper:]')
 QT_VERSION_VAR=${BINDING}_QT_VERSION
 
@@ -16,22 +12,26 @@ if [ "${!QT_VERSION_VAR:0:3}" = "5.9" ]; then
     PYTEST_VERSION=">=6,!=7.0.0,!=7.0.1,<7.2.0"
 fi
 
-conda create -q -n test-env python=${PYTHON_VERSION} pytest${PYTEST_VERSION:-">=6,!=7.0.0,!=7.0.1"} "pytest-cov>=3.0.0" pytest-qt${PYTESTQT_VERSION:-}
-conda activate test-env
 
 if [ "$USE_CONDA" = "Yes" ]; then
 
     if [ "${1}" = "pyqt5" ]; then
-        conda install -q qt=${PYQT5_QT_VERSION} pyqt=${PYQT5_VERSION}
+        QT_SPECS="qt=${PYQT5_QT_VERSION} pyqt=${PYQT5_VERSION}"
     elif [ "${1}" = "pyside2" ]; then
-        conda install -q qt=${PYSIDE2_QT_VERSION} pyside2=${PYSIDE2_VERSION}
+        QT_SPECS="qt=${PYSIDE2_QT_VERSION} pyside2=${PYSIDE2_VERSION}"
     elif [ "${1}" = "pyside6" ]; then
-        conda install -q qt6-main=${PYSIDE6_QT_VERSION} pyside6=${PYSIDE6_VERSION}
+        QT_SPECS="qt6-main=${PYSIDE6_QT_VERSION} pyside6=${PYSIDE6_VERSION}"
     else
         exit 1
     fi
 
-else
+fi
+
+mamba create -y -n test-env-${BINDING} python=${PYTHON_VERSION} pytest${PYTEST_VERSION:->=6,!=7.0.0,!=7.0.1} pytest-cov>=3.0.0 pytest-qt${PYTESTQT_VERSION:-} ${QT_SPECS:-}
+
+conda activate test-env-${BINDING}
+
+if [ "$USE_CONDA" = "No" ]; then
 
     if [ "${1}" = "pyqt5" ]; then
         pip install pyqt5==${PYQT5_VERSION}.* PyQtWebEngine==${PYQT5_VERSION}.* QScintilla==${QSCINTILLA_VERSION}.*
@@ -60,7 +60,7 @@ python -bb -X dev -W error -m build
 echo dist/*.whl | xargs -I % python -bb -X dev -W error -W "ignore::DeprecationWarning:pip._internal.locations._distutils" -W "ignore::DeprecationWarning:distutils.command.install" -m pip install --upgrade %
 
 # Print environment information
-conda list
+mamba list
 
 # Run tests
 mkdir -p temp_test_dir