Skip to content
cccskills
FreePublished on GitHub

conda-env-tests

Update the pinned Miniconda installer used by Python environment tests. Find the pin, choose a version available for supported platforms, preserve coverage across conda major versions, and identify the relevant tests and download-cache effects.

OriginalShow the original description

Bump the pinned Miniconda version for the Python conda env tests.

JetBrains/intellij-community20,665 stars(GitHub 20,665 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Bumping the Miniconda version used in tests
  • Checking installer availability across platforms
  • Preserving conda version branch coverage

Files included (1)

  • SKILL.md4.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- Generated by community/.ai/render-guides.mjs; edit community/.agents/skills/conda-env-tests/SKILL.md -->

Conda env tests

The Python env tests download and install Miniconda. They pin an exact installer version. This skill tells you how to move a pin.

Where the pin lives

One file holds every conda pin:

community/python/python-test-env/common/src/com/intellij/python/test/env/common/PredefinedPyEnvironments.kt

EntryRole
CONDAThe default. @PyEnvTestCaseWithConda and LocalCondaRule use it. Keep it on the newest build.
CONDA_24An old pin. It covers the conda.core.index.get_index branch of the helper script.
CONDA_25An old pin. It covers the conda.core.subdir_data.SubdirData branch.

There is no second place. The provider builds the download URL from the pin, and it verifies no checksum:

community/python/python-test-env/conda/src/com/intellij/python/test/env/conda/CondaPyEnvironmentProvider.kt

To find every consumer of a pin, search the repository for PredefinedPyEnvironments.CONDA.

The version token

A pin is the installer version token, not a plain conda version. The shape is py<python>_<conda>-<build>, for example py312_26.7.1-1.

The provider expands the token into one of these names:

  • Miniconda3-<token>-Windows-x86_64.exe
  • Miniconda3-<token>-Linux-x86_64.sh
  • Miniconda3-<token>-Linux-aarch64.sh
  • Miniconda3-<token>-MacOSX-arm64.sh

How to pick a new pin

  1. Open https://repo.anaconda.com/miniconda/. The page lists every installer with its date and its sha256.
  2. Take the highest version. Do not use Miniconda3-latest-*. The cache key holds the token, so a floating name breaks reproducibility.
  3. Check that all four names above exist for that token. Anaconda drops a platform from time to time. It stopped the MacOSX-x86_64 builds after py313_25.7.0-2.
  4. Keep the py312 prefix unless you have a reason to change it. The prefix only sets the Python of the base install. Each test environment gets its own Python from the spec.

When to add an entry instead of moving one

CondaPackagingToolHelperTest runs against CONDA_24, CONDA_25, and CONDA. It protects the version branches in community/python/helpers/conda_packaging_tool.py.

  • Move CONDA for a normal bump.
  • Add a new entry when conda ships a major release that changes an API the helper script uses. Add the tag row to ENVIRONMENTS_TO_TAGS in the same file, and add the entry to the @RunOnEnvironments list of that test.
  • Drop an old entry when CONDA reaches the same major. Two entries on one major waste a download.

A move of CONDA can remove coverage without a test failure. CONDA supplies the newest major to CondaPackagingToolHelperTest. A move from conda 26 to conda 27 therefore leaves conda 26 untested, and every test stays green. Before you move CONDA across a major, add a constant for the major you leave behind, and add it to @RunOnEnvironments.

ShortenPathTest holds the literal Miniconda3-py312_24.9.2-0-MacOSX-arm64. It is sample text for a path-shortening assertion, and no code reads the version. Leave it alone.

The download cache

The tests cache in ~/.cache/intellij-python-test-env/:

  • downloads/ holds the installer.
  • conda/Miniconda3-<token>-<os>-<arch>/ holds the install.

The token is part of the directory name. A bump therefore downloads about 150 MB again, and it leaves the old directory on disk. Delete an old directory by hand when you need the space.

Terms of service

Conda 25 added a terms-of-service gate on the default Anaconda channels. The provider runs conda tos accept for pkgs/main and pkgs/r before it creates an environment, and it ignores a failure. An older conda has no tos subcommand. You need no new work here for a bump.

Tests to run

Every command below needs the network, and each conda environment downloads about 150 MB. Run the commands from the monorepo root. In a community checkout, drop the community/ prefix, and skip the intellij.python.junit5Tests commands. That module is ultimate only.

./community/tests.cmd --module intellij.python.test.env.junit5 --test com.intellij.python.test.env.junit5.conda.showcase.PyEnvWithCondaShowCaseTest
./tests.cmd --module intellij.python.junit5Tests --test com.intellij.python.junit5Tests.env.tests.conda.CondaSdkCreatorTest
./tests.cmd --module intellij.python.junit5Tests --test com.intellij.python.junit5Tests.env.tests.packaging.CondaPackagingToolHelperTest

Not this skill

community/python/python-sdk/backend/resources/sdks.json lists the Miniconda builds that the product offers to a user. It needs a sha256 for every artifact, and community/python/build/src/org/jetbrains/intellij/build/pycharm/sdks/CondaUpdater.kt generates it. That file is separate from the env tests.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

actions

FreeSummary

Implement or update IntelliJ `AnAction` classes and their `plugin.xml` registrations. Keep labels and descriptions in message bundles, configure optional icons, and launch suspending work through the event coroutine scope so synchronous action handling does not freeze the IDE.

  • Adding a new IntelliJ action
  • Updating an action's registration or icon
  • Moving action labels into a message bundle
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

Move IntelliJ JPS test modules to Bazel and diagnose failures that occur only under Bazel. The guide helps trace missing dependencies, plugins, test data, and runfiles, then verify the generated target and migrated tests.

  • Migrating a JPS test module to Bazel
  • Diagnosing a test failure that occurs only in Bazel
  • Checking Bazel dependencies and test data wiring
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

code-style

FreeSummary

Write or review Kotlin and Java code in line with IntelliJ project conventions. The guidance covers language choice, formatting, sealed types, threading annotations, and safe handling of control flow exceptions so changes fit the surrounding codebase.

  • Writing a new Kotlin file that follows IntelliJ conventions
  • Reviewing Java code and checking its style guidance
  • Checking formatting, sealed-type handling, or exception handling
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

commits

FreeSummary

Create, amend, or rename IntelliJ commits with messages that follow the project’s ticket and label formats. Keep each commit focused, explain the reason and decision in the body when needed, and pass the message safely through the shell or PowerShell.

  • Writing a message for a change linked to a YouTrack ticket
  • Preparing a commit message for tests, cleanup, or documentation
  • Amending or renaming an existing IntelliJ commit
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

Compare how Python type checkers interpret a code snippet or file. The script runs selected tools, including ty, pyrefly, basedpyright, mypy, and zuban, then produces a Markdown report with verdicts, timings, and each checker's diagnostic output.

  • Comparing type inference for a Python snippet
  • Checking whether a Python expression should be a type error
  • Reviewing differences among Python type checkers
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

Shape Compose Desktop UI code by keeping composables focused on rendering and placing application decisions in presenters or coordinators. Get guidance on state ownership, effects, reusable component APIs, lazy-list keys, animation, and performance for individual UI changes.

  • Separating screen rendering from application decisions
  • Choosing which UI state belongs in composition
  • Structuring effects and coroutine work
JetBrains/intellij-community20.7KUpdated Oct 26, 2026

See all skills by JetBrains

Report a problem with this skill