Skip to content

Conda server API test are failing due to python=3.14 and astroid dependency conflict #319

@RRosio

Description

@RRosio

python=3.14 was released on Oct 7, and our Server API tests for conda don't always specify the python version to be installed in an environment created by the mk_env function, beyond the constraint for ["python!=3.10"].

While astroid 4.0.0 was released a few days ago with support for python=3.14, this is not available in defaults channel, and while we do set the channel to conda-forge in the CI workflow, this channel priority does not apply to the conda_api.post call.

FAILED mamba_gator/tests/test_api.py::TestPackagesEnvironmentHandler::test_pkg_install_and_remove - requests.exceptions.HTTPError: 500 Server Error: Encountered problems while solving:
  - package astroid-1.5.3-py27h8f8f47c_0 requires python >=2.7,<2.8.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
├─ astroid =* * is installable with the potential options
│  ├─ astroid [1.5.3|1.6.0|...|1.6.5] would require
│  │  └─ python >=2.7,<2.8.0a0 *, which can be installed;
│  ├─ astroid [1.5.3|1.6.0|...|2.0.4] would require
│  │  └─ python >=3.5,<3.6.0a0 *, which can be installed;
│  ├─ astroid [1.5.3|1.6.0|...|2.7.1] would require
│  │  └─ python >=3.6,<3.7.0a0 *, which can be installed;
│  ├─ astroid [1.6.5|2.0.2|...|2.9.0] would require
│  │  └─ python >=3.7,<3.8.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
│  │  └─ python >=3.10,<3.11.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.2.4] would require
│  │  └─ python >=3.8,<3.9.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
│  │  └─ python >=3.9,<3.10.0a0 *, which can be installed;
│  ├─ astroid [2.13.3|2.14.2|...|3.3.8] would require
│  │  └─ python >=3.11,<3.12.0a0 *, which can be installed;
│  ├─ astroid [2.14.2|3.2.2|3.2.4|3.3.11|3.3.8] would require
│  │  └─ python >=3.12,<3.13.0a0 *, which can be installed;
│  └─ astroid [3.3.11|3.3.8] would require
│     └─ python >=3.13,<3.14.0a0 *, which can be installed;
└─ pin on python 3.14.* =* * is not installable because it requires
   └─ python =3.14 *, which conflicts with any installable versions previously reported.

Pins seem to be involved in the conflict. Currently pinned specs:
 - python=3.14

Full log
Run python -m pytest -ra mamba_gator
============================= test session starts ==============================
platform linux -- Python 3.9.13, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/gator/gator
configfile: pyproject.toml
plugins: asyncio-1.2.0, anyio-3.6.2
asyncio: mode=auto, debug=False, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function
collected 59 items

mamba_gator/tests/test_actionsstack.py ....                              [  6%]
mamba_gator/tests/test_api.py ..........................F..........      [ 69%]
mamba_gator/tests/test_manager.py .s............                         [ 93%]
mamba_gator/tests/test_utils.py ....                                     [100%]

=================================== FAILURES ===================================
__________ TestPackagesEnvironmentHandler.test_pkg_install_and_remove __________

self = <mamba_gator.tests.test_api.TestPackagesEnvironmentHandler testMethod=test_pkg_install_and_remove>

    def test_pkg_install_and_remove(self):
        n = generate_name()
        self.wait_for_task(self.mk_env, n)
    
>       r = self.wait_for_task(
            self.conda_api.post,
            ["environments", n, "packages"],
            body={"packages": [self.pkg_name]},
        )

mamba_gator/tests/test_api.py:563: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mamba_gator/tests/test_api.py:45: in wait_for_task
    return self.wait_task(location)
mamba_gator/tests/utils.py:211: in wait_task
    response = self.conda_api.get([endpoint])
mamba_gator/tests/utils.py:81: in get
    return self._req("GET", path, body, params)
mamba_gator/tests/utils.py:67: in _req
    response.raise_for_status()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Response [500]>

    def raise_for_status(self):
        """Raises :class:`HTTPError`, if one occurred."""
    
        http_error_msg = ""
        if isinstance(self.reason, bytes):
            # We attempt to decode utf-8 first because some servers
            # choose to localize their reason strings. If the string
            # isn't utf-8, we fall back to iso-8859-1 for all other
            # encodings. (See PR #3538)
            try:
                reason = self.reason.decode("utf-8")
            except UnicodeDecodeError:
                reason = self.reason.decode("iso-8859-1")
        else:
            reason = self.reason
    
        if 400 <= self.status_code < 500:
            http_error_msg = (
                f"{self.status_code} Client Error: {reason} for url: {self.url}"
            )
    
        elif 500 <= self.status_code < 600:
            http_error_msg = (
                f"{self.status_code} Server Error: {reason} for url: {self.url}"
            )
    
        if http_error_msg:
>           raise HTTPError(http_error_msg, response=self)
E           requests.exceptions.HTTPError: 500 Server Error: Encountered problems while solving:
E             - package astroid-1.5.3-py27h8f8f47c_0 requires python >=2.7,<2.8.0a0, but none of the providers can be installed
E           
E           Could not solve for environment specs
E           The following packages are incompatible
E           ├─ astroid =* * is installable with the potential options
E           │  ├─ astroid [1.5.3|1.6.0|...|1.6.5] would require
E           │  │  └─ python >=2.7,<2.8.0a0 *, which can be installed;
E           │  ├─ astroid [1.5.3|1.6.0|...|2.0.4] would require
E           │  │  └─ python >=3.5,<3.6.0a0 *, which can be installed;
E           │  ├─ astroid [1.5.3|1.6.0|...|2.7.1] would require
E           │  │  └─ python >=3.6,<3.7.0a0 *, which can be installed;
E           │  ├─ astroid [1.6.5|2.0.2|...|2.9.0] would require
E           │  │  └─ python >=3.7,<3.8.0a0 *, which can be installed;
E           │  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
E           │  │  └─ python >=3.10,<3.11.0a0 *, which can be installed;
E           │  ├─ astroid [2.11.7|2.12.2|...|3.2.4] would require
E           │  │  └─ python >=3.8,<3.9.0a0 *, which can be installed;
E           │  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
E           │  │  └─ python >=3.9,<3.10.0a0 *, which can be installed;
E           │  ├─ astroid [2.13.3|2.14.2|...|3.3.8] would require
E           │  │  └─ python >=3.11,<3.12.0a0 *, which can be installed;
E           │  ├─ astroid [2.14.2|3.2.2|3.2.4|3.3.11|3.3.8] would require
E           │  │  └─ python >=3.12,<3.13.0a0 *, which can be installed;
E           │  └─ astroid [3.3.11|3.3.8] would require
E           │     └─ python >=3.13,<3.14.0a0 *, which can be installed;
E           └─ pin on python 3.14.* =* * is not installable because it requires
E              └─ python =3.14 *, which conflicts with any installable versions previously reported.
E           
E           Pins seem to be involved in the conflict. Currently pinned specs:
E            - python=3.14
E            for url: http://localhost:12341/a%40b/conda/tasks/58

/usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/requests/models.py:1026: HTTPError
----------------------------- Captured stderr call -----------------------------
[Application.mamba_gator] ERROR | {
  "Host": "localhost:12341",
  "Accept": "*/*",
  "User-Agent": "python-requests/2.32.5"
}
[Application.mamba_gator] ERROR | 500 GET /a%40b/conda/tasks/58 (8b135d1031c343e4a175d56c8394f09c@::1) 0.86ms referer=None
------------------------------ Captured log call -------------------------------
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
DEBUG    ServerApp:identity.py:447 Accepting token-authenticated request from ::1
=============================== warnings summary ===============================
../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/jupyter_client/connect.py:27
  /usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/jupyter_client/connect.py:27: DeprecationWarning: Jupyter is migrating its paths to use standard platformdirs
  given by the platformdirs library.  To remove this warning and
  see the appropriate new directories, set the environment variable
  `JUPYTER_PLATFORM_DIRS=1` and then run `jupyter --paths`.
  The use of platformdirs will be the default in `jupyter_core` v6
    from jupyter_core.paths import jupyter_data_dir

../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/pythonjsonlogger/jsonlogger.py:11
  /usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/pythonjsonlogger/jsonlogger.py:11: DeprecationWarning: pythonjsonlogger.jsonlogger has been moved to pythonjsonlogger.json
    warnings.warn(

../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/jupyter_events/validators.py:4
../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/jupyter_events/validators.py:4
  /usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/jupyter_events/validators.py:4: DeprecationWarning: jsonschema.RefResolver is deprecated as of v4.18.0, in favor of the https://github.com/python-jsonschema/referencing library, which provides more compliant referencing behavior as well as more flexible APIs for customization. A future release will remove RefResolver. Please file a feature request (on referencing) if you are missing an API for the kind of customization you need.
    from jsonschema import Draft7Validator, RefResolver, ValidationError

../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/nbformat/json_compat.py:14
../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/nbformat/json_compat.py:14
  /usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/nbformat/json_compat.py:14: DeprecationWarning: Importing ErrorTree directly from the jsonschema package is deprecated and will become an ImportError. Import it from jsonschema.exceptions instead.
    from jsonschema import ErrorTree, ValidationError

../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/notebook/utils.py:280
../../../../../usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/notebook/utils.py:280
  /usr/share/miniconda/envs/test_gator/lib/python3.9/site-packages/notebook/utils.py:280: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    return LooseVersion(v) >= LooseVersion(check)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] mamba_gator/tests/test_manager.py:17: Mamba NOT found
FAILED mamba_gator/tests/test_api.py::TestPackagesEnvironmentHandler::test_pkg_install_and_remove - requests.exceptions.HTTPError: 500 Server Error: Encountered problems while solving:
  - package astroid-1.5.3-py27h8f8f47c_0 requires python >=2.7,<2.8.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
├─ astroid =* * is installable with the potential options
│  ├─ astroid [1.5.3|1.6.0|...|1.6.5] would require
│  │  └─ python >=2.7,<2.8.0a0 *, which can be installed;
│  ├─ astroid [1.5.3|1.6.0|...|2.0.4] would require
│  │  └─ python >=3.5,<3.6.0a0 *, which can be installed;
│  ├─ astroid [1.5.3|1.6.0|...|2.7.1] would require
│  │  └─ python >=3.6,<3.7.0a0 *, which can be installed;
│  ├─ astroid [1.6.5|2.0.2|...|2.9.0] would require
│  │  └─ python >=3.7,<3.8.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
│  │  └─ python >=3.10,<3.11.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.2.4] would require
│  │  └─ python >=3.8,<3.9.0a0 *, which can be installed;
│  ├─ astroid [2.11.7|2.12.2|...|3.3.8] would require
│  │  └─ python >=3.9,<3.10.0a0 *, which can be installed;
│  ├─ astroid [2.13.3|2.14.2|...|3.3.8] would require
│  │  └─ python >=3.11,<3.12.0a0 *, which can be installed;
│  ├─ astroid [2.14.2|3.2.2|3.2.4|3.3.11|3.3.8] would require
│  │  └─ python >=3.12,<3.13.0a0 *, which can be installed;
│  └─ astroid [3.3.11|3.3.8] would require
│     └─ python >=3.13,<3.14.0a0 *, which can be installed;
└─ pin on python 3.14.* =* * is not installable because it requires
   └─ python =3.14 *, which conflicts with any installable versions previously reported.

Pins seem to be involved in the conflict. Currently pinned specs:
 - python=3.14
 for url: http://localhost:12341/a%40b/conda/tasks/58
======= 1 failed, 57 passed, 1 skipped, 8 warnings in 890.18s (0:14:50) ========
Error: Process completed with exit code 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions