| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| conda-26.5.0.tar.gz | 2026-05-15 | 25.8 MB | |
| conda-26.5.0.tar.gz.sha256sum | 2026-05-15 | 65 Bytes | |
| 26.5.0 source code.tar.gz | 2026-05-15 | 25.8 MB | |
| 26.5.0 source code.zip | 2026-05-15 | 26.8 MB | |
| README.md | 2026-05-15 | 13.8 kB | |
| Totals: 5 Items | 78.5 MB | 3 | |
26.5.0 (2026-05-15)
Enhancements
- Add parsing and storage support for conditional dependencies, optional dependency groups, and variant flags in
MatchSpecexpressions (introduced in [conda/ceps#164](https://github.com/conda/ceps/issues/164), [conda/ceps#165](https://github.com/conda/ceps/issues/165), and [conda/ceps#166](https://github.com/conda/ceps/issues/166)). (#15443) - Add
--clobberflag toconda create, matching existing support inconda installandconda update. (#15584 via [#15801]) - Display a Warning when exporting lockfiles from environments containing packages installed with pip, uv, or other 3rd party Python package managers. (#15581 via [#15838])
- Speed up condarc search path expansion on every
reset_context()by ~5x (~1.35 ms/call to ~0.27 ms/call on a 27-entry path), via cheapercustom_expandvars()andos.scandir()-based directory traversal inConfiguration._expand_search_path(). (#15867) - Drop the
ChannelTypemetaclass fromconda.models.channel.Channel. Single-argumentChannel(value)construction andMultiChanneldispatch have moved toChannel.__new__, and the per-value cache is now@functools.cacheonChannel.from_value. (#15867) - Remove a redundant
context.__init__()call inmain_subshell(). The first initialization withpre_argswas immediately repeated after theno_pluginscheck without any change in arguments. (#15867) ContextStacknow allocates a single slot on construction instead of three. Slots are still doubled on demand, so deep nesting works identically. Eliminates two unnecessaryContextStackObjectallocations at import time. (#15867)Resolve._get_reduced_index()no longer usescopy.deepcopy()to snapshotspecs_by_name. A dict comprehension with slice copies (v[:]) is sufficient becauseMatchSpecobjects are immutable. Removes theimport copyfromresolve.py. (#15867)- Defer heavy imports in
notices/core.pyandcli/main_env.pyto reduce the module cost of loading individual subcommand modules. (#15867) - Add fast path for
conda --version/conda -Vthat prints the version and exits without loading the argument parser, context, or plugin system. (#15867) - Replace f-string log calls with
%-style lazy formatting across the codebase. String interpolation is now deferred until the log record is actually emitted. Enable the ruffG004rule to enforce this going forward. (#15867) context.category_mapis now a@memoizedproperty. The large static dict was rebuilt on every access; it is now constructed once and cached for the lifetime of theContextinstance. (#15867)- Hot-path regexes in
conda/models/match_spec.pyandconda/activate.pyare now compiled once at module load time instead of on every call. Removes repeatedre.compile()overhead from theMatchSpecparser and the shell activation path resolver. (#15867) PrefixData._load_single_record()now reads the conda-meta JSON file withPath.read_bytes()+json.loads()instead of opening a text file handle and callingjson.load(). For the small files typical of conda-meta records, a single read syscall followed by an in-memory parse is faster than the incremental read performed byjson.load(). (#15867)- Add Ruff
TID253rule to ban module-level imports ofrequestson the startup path, preventing accidental re-introduction of heavy import chains (e.g. the A1 regression fixed in [#15866]). Files inconda/gateways/and other non-startup-path locations that legitimately importrequestsare annotated with# noqa: TID253. - Port sharded repodata implementation from conda-libmamba-solver. (#15906)
- Add
conda_exception_observersplugin hook for observational callbacks on any exception conda encounters (filterable per observer viawatch_for). (#15910) - Bump
conda-incubator/setup-minicondato v4.0.0 across.github/workflows/tests.yml. v4.0.0 ships the perf work tested in [#15741], including direct.condarcYAML writes, localisDefaultEnvironmentresolution, parallelized Windowstakeown, bulk-move pkg cleanup, and dropped HTML index scraping; the Node.js 24 runtime is the breaking change motivating the major bump. (#15923) - Add default-implemented
available_platformsandenv_for(platform)onEnvironmentSpecBase(EXPERIMENTAL) for multi-platform environment specifiers (conda-lock.yml,pixi.lock). (#15927) conda env create/conda env updatecheckcontext.subdir in spec.available_platformsbefore callingspec.env_for(context.subdir)and raisePlatformMismatchErrorwith the platforms the file does cover and aconda exportcommand that includes the current platform when the check fails. (#15927)Environment.from_clipre-flights every-f/--fileargument and reports all files that do not covercontext.subdirin a singlePlatformMismatchErrorinstead of stopping at the first mismatch. (#15927)- Add
PlatformMismatchError(subclass ofCondaValueError) so the wording stays consistent acrossconda env create,conda env update, andEnvironment.from_cli. (#15927) - Rewrite the help text for
conda create,conda export,conda env create, andconda env export(already an alias ofconda export) to make lockfile workflows discoverable. The epilog of each command now lists the available input/output formats grouped by category, driven dynamically by the installed environment specifier and exporter plugins. (#15960) - Add
context.previewconfiguration parameter (viaCONDA_PREVIEWenv var orpreview:in.condarc) andcontext.preview_enabled(value)method for opt-in feature previews. (#16010) - Sharded repodata: extract dependency names and package records from v3 repodata groups in
shard_mentioned_packagesanditer_recordsfor compatible solvers. (#16067 via [#16078]) - Add startup performance benchmarks (
tests/cli/test_startup_benchmarks.py) to the CodSpeed benchmark suite, covering import cost, context initialization, parser generation, and module-count guardrails. (#15838) - Canonicalize deferred deprecation shims in
conda.auxlib.logzandconda.common.serializeto usedeprecated.constant(..., factory=...), avoiding eager imports ofconda.common.serialize.jsonon cold paths. (#15926) - Add
factory=kwarg toconda.deprecations.deprecated.constantas a mutually-exclusive alternative to positionalvalue. When given, the callable is invoked (and the result cached) only on first access of the deprecated symbol. Enables deprecating symbols whose materialization would otherwise force heavy imports at registration time, without giving up the canonicaldeprecated.constantAPI. - Improve initialization time by using stdlib
jsoninstead ofrequests.compat.jsoninconda.common.serialize.json, avoiding many transitive imports. (#15838)
Bug fixes
- Don't raise
RemoveErrorif a missing conda dependency is not being installed or uninstalled by the current transaction; can happen when a conda dependency was installed with pip. (#14050) - Fix v3 MatchSpec parser regression where PyPI-style extras in
constrains(e.g.dask[array]) crash the classic solver due to a regex anchor bug and a test-only dispatcher override. (#15443 via [#16095]) - Run PowerShell reactivate after
conda install,update,upgrade,remove, anduninstallso thatactivate.ps1runs and environment variables set by packages (e.g. proj, GDAL) are available in the same session without manually deactivating and reactivating. (#15643 via [#15710]) - Make
conda.notices.cache.clear_cache()robust against transient Windows file locks. It now rewindsnotices.cache's mtime instead of deleting the file (which could silently fail withPermissionError), and ignoresOSErrorwhen removing per-channel response caches. This fixes flaky behavior oftests/cli/test_main_notices.py::test_notices_shown_after_previous_command_erroron Windows. (#15796, [#15817], [#15839]) - Require
pluggy >=1.6.0to ensure theHookImpl.wrapperattribute is available; older versions caused anAttributeErrorat runtime in the plugin manager. (#15862) - Fix
Environment.extrapolateso the solver receives virtual packages for the target platform (e.g.__glibconlinux-*) instead of the host's. This unblocks multi-platformconda exportof lockfiles when specs likepython=3.13are pinned. (#15919) - Fix
Context._overrideto correctly restoreParameterLoader(and other non-data descriptor) attributes on exit. The previous implementation shadowed the descriptor in__dict__permanently, causing laterreset_context()calls to ignore env-var changes for the overridden parameter. - Update the
conda activate/conda deactivatecommands return a 0 exit code when run with the-h/--helpflag. (#15826 via [#15958]) - Make the windows (bat activator) recognize the
-h/--helpflags. (#15826 via [#15958]) - Make the windows powershell activator recognize the
-h/--helpflags. (#15978) - When invalidating the channel notices cache, rewind
notices.cache's mtime in integer nanoseconds (stat.st_mtime_ns+os.utime(ns=...)) and check expiry againsttime.time_ns()so theNOTICES_DECORATOR_DISPLAY_INTERVALboundary check is not subject to float/FILETIME rounding on Windows. (#16003) - Fix
test_get_index_no_platform_with_offline_cachefailing on conda-forge CI by warming the repodata cache before testing offline reads. (#16041) - Ensure that reported conda anchor files report case matched paths on Windows. (#16052 via [#15983])
- Fix conda doctor --fix package reinstall step (#15740 via [#16054])
- Remove
conda-pypidependency from the conda recipe to prevent downstream CI breakages. (#16082) - Validate
MatchSpecpackage names against CEP-26 rules, rejecting names with invalid characters or structure. (#16087) - Fix wheel package extension not found when conda-pypi URLs have a trailing sha256 hash. (#16088 via [#16089])
- Update
tests/cli/test_cli_install.py::test_emscripten_forgeto usehttps://repo.prefix.dev/emscripten-forge-4x, the channel URL recommended by the emscripten-forge installation docs. The legacyhttps://repo.mamba.pm/emscripten-forgehost has been unreachable, causing the integration test to fail on every CI run across all platforms.
Deprecations
- Accidentally allowed and silently ignored
package[version<1]-likeMatchSpecswill be removed in27.3. The square bracket syntax must always includekey=valuepairs. (#15443) - Mark
--env-spec/--environment-specifieras pending deprecation in favor of--format(#15794 via [#15834]) - Deprecate
conda.models.channel.ChannelType.Channelis now a regular class; use the builtintype(Channel)if you need to inspect the metaclass. (#15867) - Mark the
conda.instructionsmodule as pending deprecation for removal in 27.3, as a follow-up to the removal ofconda.plan. (#15874) - Mark
conda.gateways.logging.initialize_std_loggersas pending deprecation to be removed in 27.3. (#15876) - Mark
conda.stdout,conda.stderr,conda.stdoutlog,conda.stderrlog, andconda.stdout.verboseloggers as pending deprecation to be removed in 27.3. (#15876) - Define private symbols, modules (i.e. starts-with-underscore
_) as not requiring deprecation. Library users should avoid these symbols. See deprecations.md (docs.conda.io). (#15977)
Docs
- Start dev-oriented documentation for type hints and how we use them. (#15768)
- Add tutorial and API reference for the new exception observer plugin hook. (#15910)
- Document
available_platformsandenv_foronEnvironmentSpecBase. (#15927) - Add information on conda-lockfiles to Managing environments page. (#16086)
- Document
factory=kwarg ondeprecated.constantin the deprecations dev-guide.
Other
- Add type hints to
conda.common.io. (#15773) - Provide better error messages for when an environment file is not detected. (#15718 via [#15793])
- Provide better error messages for when too many plugins can read an environment files. (#15718 via [#15793])
- Require
conda-libmamba-solver >=26.4.0. (#15950) - Require
conda-pypi >=0.8.0in the conda recipe. (#15987) - Bump
conda-libmamba-solverminimum version to>=26.4.1. (#16043) - Make the Linux integration jobs resilient to Azure-hosted Ubuntu apt
mirror outages by switching to the canonical
archive.ubuntu.commirror and enabling apt retries (Acquire::Retries=3). Also install shells (ash,csh,fish,tcsh,zsh) non-interactively with--no-install-recommendsto shrink the download footprint.
Contributors
- @agriyakhetarpal
- @conda-bot
- @costajohnt made their first contribution in https://github.com/conda/conda/pull/15801
- @dashagurova made their first contribution in https://github.com/conda/conda/pull/16051
- @danyeaw
- @dholth
- @jaimergp
- @jezdez
- @jsmolic made their first contribution in https://github.com/conda/conda/pull/16082
- @kathatherine
- @kenodegard
- @prady0t made their first contribution in https://github.com/conda/conda/pull/15950
- @smartcoder0777 made their first contribution in https://github.com/conda/conda/pull/15710
- @soapy1
- @travishathaway
- @VedantMadane made their first contribution in https://github.com/conda/conda/pull/15773