conda search does not find v3.whl packages on channels serving only monolithic repodata
Author: danyeawCreated Sep 14, 2026Updated Sep 18, 2026
Labelstype::bugsource::contributor
Checklist
- I added a descriptive title
- I searched open reports and couldn't find a duplicate
What happened?
On a channel that serves only monolithic repodata, conda search cannot find packages that exist only as v3.whl records.
Two compounding behaviors:
- With sharded repodata enabled, calls fetch_channels, which returns None when no queried channel serves shards, so search bails to the classic path (SubdirData)
- The classic path (SubdirData) loads only packages/packages.conda and never reads the v3 section, so wheel records are never matched.
Steps to Reproduce
pip download --dest mychannel/noarch pyfig
conda pypi index mychannelThen, with only that channel (no sharded channel in the list):
conda search --override-channels -c file:///mychannel pyfig
Expected: conda search lists pyfig 1.0.2.
Actual: No match found for: pyfig
### Conda Info
```shell
active environment : C:\Users\DYeaw\Projects\conda\devenv
active env location : C:\Users\DYeaw\Projects\conda\devenv
shell level : 2
user config file : C:\Users\DYeaw\.condarc
populated config files : C:\Users\DYeaw\miniconda3\.condarc
C:\Users\DYeaw\miniconda3\condarc.d\anaconda-auth.yml
C:\Users\DYeaw\.condarc
C:\Users\DYeaw\Projects\conda\devenv\.condarc
conda version : 26.7.2
conda-build version : not installed
python version : 3.14.7.final.0
solver : rattler
virtual packages : __archspec=1=aarch64
__conda=26.7.2=0
__win=10.0.26100=0
base environment : C:\Users\DYeaw\miniconda3 (writable)
conda av data dir : C:\Users\DYeaw\miniconda3\etc\conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/conda-forge/win-64
https://conda.anaconda.org/conda-forge/noarch
https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : C:\Users\DYeaw\miniconda3\pkgs
C:\Users\DYeaw\.conda\pkgs
C:\Users\DYeaw\AppData\Local\conda\conda\pkgs
notices cache : C:\Users\DYeaw\AppData\Local\conda\conda\Cache\notices
envs directories : C:\Users\DYeaw\miniconda3\envs
C:\Users\DYeaw\.conda\envs
C:\Users\DYeaw\AppData\Local\conda\conda\envs
temporary directory : C:\Users\DYeaw\AppData\Local\Temp
platform : win-64
user-agent : conda/26.7.2 requests/2.34.2 CPython/3.14.7 Windows/11 Windows/10.0.26100 solver/rattler conda-rattler-solver/0.1.1 py-rattler/0.25.0 aau/0.8.1 c/. s/. e/.
administrator : False
netrc file : None
offline mode : FalseConda Config
==> C:\Users\DYeaw\miniconda3\.condarc <==
channels:
- defaults
==> C:\Users\DYeaw\miniconda3\condarc.d\anaconda-auth.yml <==
channel_settings:
- channel: https://repo.anaconda.cloud/*
auth: anaconda-auth
==> C:\Users\DYeaw\.condarc <==
add_anaconda_token: False
channels:
- defaults
solver: rattler
==> C:\Users\DYeaw\Projects\conda\devenv\.condarc <==
channels:
- conda-forgeConda list
# packages in environment at C:\Users\DYeaw\Projects\conda\devenv:
#
# Name Version Build Channel
_python_abi3_support 1.0 hd8ed1ab_3 conda-forge
annotated-types 0.8.0 pyhd8ed1ab_0 conda-forge
anyio 4.15.1 pyh5ded981_1 conda-forge
archspec 0.2.5 pyhd8ed1ab_0 conda-forge
backports.zstd 1.7.0 py314h680f03e_1 conda-forge
blinker 1.9.0 pyhff2d567_0 conda-forge
boltons 26.2.0 pyhd8ed1ab_0 conda-forge
brotli-python 1.2.0 py314h85cf176_4 conda-forge
bzip2 1.0.8 h0ad9c76_10 conda-forge
ca-certificates 2026.7.22 h4c7d964_0 conda-forge
cached-property 2.0.1 pyhcf101f3_0 conda-forge
cached_property 2.0.1 pyhcf101f3_0 conda-forge
certifi 2026.7.22 pyhd8ed1ab_0 conda-forge
charset-normalizer 3.5.1 pyhd8ed1ab_0 conda-forge
click 8.5.0 pyh5ded981_0 conda-forge
colorama 0.4.6 pyhd8ed1ab_1 conda-forge
conda 26.7.2.dev110 pypi_0 pypi
conda-index 0.13.0 pyh5ded981_0 conda-forge
conda-launchers 24.7.1 74da2fe_gcc_5 conda-forge
conda-libmamba-solver 26.7.0 pyhcf101f3_0 conda-forge
conda-lockfiles 0.2.1 pyhd8ed1ab_0 conda-forge
conda-package-handling 2.6.0 pyh5ded981_0 conda-forge
conda-package-streaming 0.13.0 pyhd8ed1ab_0 conda-forge
conda-pypi 0.11.0 pyh5ded981_2 conda-forge
conda-rattler-solver 0.1.2.dev42+g8d1e64f92 pypi_0 pypi
conda-self 0.2.1 pyhd8ed1ab_0 conda-forge
coverage 7.16.0 py314h9aa99d3_0 conda-forge
cpp-expected 1.3.1 h477610d_1 conda-forge
cpython 3.14.7 py314hd8ed1ab_106 conda-forge
distro 1.9.0 pyhd8ed1ab_1 conda-forge
exceptiongroup 1.3.1 pyhd8ed1ab_0 conda-forge
flask 3.1.3 pyhcf101f3_1 conda-forge
fmt 12.1.0 h1ced75a_1 conda-forge
frozendict 2.4.7 pyh851646a_2 conda-forge
git 2.55.0 h57928b3_2 conda-forge
h11 0.16.0 pyhcf101f3_1 conda-forge
h2 4.4.1 pyhcf101f3_0 conda-forge
hpack 4.2.0 pyhd8ed1ab_0 conda-forge
httpcore 1.0.9 pyh29332c3_0 conda-forge
httpx 0.28.1 pyhd8ed1ab_0 conda-forge
hyperframe 6.1.0 pyhd8ed1ab_0 conda-forge
icu 78.3 h5112557_2 conda-forge
idna 3.19 pyhcf101f3_0 conda-forge
importlib-metadata 9.0.1 pyhcf101f3_0 conda-forge
importlib_resources 7.1.0 pyhd8ed1ab_0 conda-forge
iniconfig 2.3.0 pyhd8ed1ab_0 conda-forge
itsdangerous 2.2.0 pyhd8ed1ab_1 conda-forge
jinja2 3.1.6 pyhcf101f3_1 conda-forge
krb5 1.22.2 h719d79b_2 conda-forge
libarchive 3.8.9 gpl_h8fdc8af_101 conda-forge
libcurl 8.22.0 hdb0ef4a_0 conda-forge
libexpat 2.8.1 hac47afa_1 conda-forge
libffi 3.7.0 h3d046cb_1 conda-forge
libiconv 1.18 hc1393d2_3 conda-forge
liblzma 5.8.3 hfd05255_1 conda-forge
libmamba 2.9.0 py314h08176f6_0 conda-forge
libmamba-spdlog 2.9.0 h9ac7702_0 conda-forge
libmambapy 2.9.0 py314h5301c5d_0 conda-forge
libmpdec 4.0.0 hfd05255_2 conda-forge
libmsgpack-c 6.1.0 h5112557_7 conda-forge
libpsl 0.23.1 h9b16d47_1 conda-forge
libpython 3.14.7 h4f90d01_106_cp314 conda-forge
libsolv 0.7.39 h8883371_1 conda-forge
libsqlite 3.53.4 hf5d6505_1 conda-forge
libssh2 1.11.1 h734d217_1 conda-forge
libxml2 2.15.4 he095d88_0 conda-forge
libxml2-16 2.15.4 h3cfd58e_0 conda-forge
libzlib 1.3.2 hfd05255_3 conda-forge
lz4-c 1.10.0 h6a83c73_2 conda-forge
lzo 2.10 h6a83c73_1003 conda-forge
mamba 2.9.0 heafb4a2_0 conda-forge
markupsafe 3.0.3 py314h2359020_1 conda-forge
menuinst 2.5.2 py314hb98de8c_2 conda-forge
miniforge_console_shortcut 1.0 h57928b3_0 conda-forge
msgpack-python 1.2.2 py314hf309875_2 conda-forge
nlohmann_json-abi 3.12.0 h0f90c79_2 conda-forge
openssl 3.6.4 hf411b9b_0 conda-forge
packaging 26.3 pyhc364b38_0 conda-forge
pexpect 4.9.0 pyhd8ed1ab_1 conda-forge
pip 26.2.1 pyh145f28c_0 conda-forge
platformdirs 4.11.8 pyh5ded981_0 conda-forge
pluggy 1.6.0 pyhf9edf01_1 conda-forge
psutil 7.2.2 py314hc5dbbe4_2 conda-forge
ptyprocess 0.7.0 pyhd8ed1ab_1 conda-forge
py-cpuinfo 9.0.0 pyhd8ed1ab_1 conda-forge
py-rattler 0.25.0 py310hb39080a_5 conda-forge
pybind11-abi 11 hc364b38_1 conda-forge
pycosat 0.6.6 py314h5a2d7ad_5 conda-forge
pydantic 2.13.5 pyhcf101f3_0 conda-forge
pydantic-core 2.46.5 py314h9f07db2_1 conda-forge
pygments 2.21.0 pyhcf101f3_0 conda-forge
pyproject_hooks 1.2.0 pyhd8ed1ab_1 conda-forge
pysocks 1.7.1 pyh09c184e_7 conda-forge
pytest 9.1.1 pyhc364b38_2 conda-forge
pytest-benchmark 5.3.0 pyhd8ed1ab_0 conda-forge
pytest-cov 7.1.0 pyhcf101f3_0 conda-forge
pytest-mock 3.15.1 pyhd8ed1ab_0 conda-forge
pytest-rerunfailures 16.6.1 pyhd8ed1ab_0 conda-forge
pytest-split 0.11.0 pyhcf101f3_0 conda-forge
pytest-timeout 2.4.0 pyhd8ed1ab_0 conda-forge
pytest-xprocess 1.0.2 pyhd8ed1ab_1 conda-forge
python 3.14.7 h53f6dd8_106_cp314 conda-forge
python-build 1.6.0 pyhc364b38_0 conda-forge
python-gil 3.14.7 h4df99d1_106 conda-forge
python-installer 1.0.1 pyh332efcf_0 conda-forge
python_abi 3.14 9_cp314 conda-forge
pyyaml 6.0.3 py314h2359020_1 conda-forge
reproc 14.2.8.post0 h5112557_0 conda-forge
reproc-cpp 14.2.8.post0 hf5d2508_0 conda-forge
requests 2.34.2 pyhcf101f3_0 conda-forge
responses 0.26.3 pyhcf101f3_0 conda-forge
ruamel.yaml 0.19.1 pyhcf101f3_0 conda-forge
ruamel.yaml.clib 0.2.15 py314hc5dbbe4_5 conda-forge
setuptools 84.0.0 pyh332efcf_0 conda-forge
setuptools-scm 10.2.3 pyh5ded981_0 conda-forge
setuptools_scm 10.2.3 hc233242_0 conda-forge
simdjson 4.6.11 h477610d_0 conda-forge
sniffio 1.3.1 pyhd8ed1ab_2 conda-forge
spdlog 1.17.0 hd227c35_2 conda-forge
tk 8.6.13 h967ab96_4 conda-forge
tomli 2.4.1 pyhcf101f3_0 conda-forge
tomli-w 1.2.0 pyhd8ed1ab_0 conda-forge
tqdm 4.70.1 pyh6be1c34_0 conda-forge
truststore 0.10.4 pyhcf101f3_0 conda-forge
typing-extensions 4.16.0 h69aa097_0 conda-forge
typing-inspection 0.4.4 pyhcf101f3_0 conda-forge
typing_extensions 4.16.0 pyhcf101f3_0 conda-forge
tzdata 2026c h151e31d_0 conda-forge
ucrt 10.0.26100.0 h57928b3_0 conda-forge
unearth 0.18.3 pyhd8ed1ab_0 conda-forge
urllib3 2.7.0 pyhd8ed1ab_0 conda-forge
vc 14.5 ha367084_41 conda-forge
vc14_runtime 14.51.36247 habf1de7_41 conda-forge
vcomp14 14.51.36247 habf1de7_41 conda-forge
vcs_versioning 2.3.4 pyh5ded981_0 conda-forge
werkzeug 3.1.8 pyhcf101f3_0 conda-forge
win_inet_pton 1.1.0 pyh7428d3b_8 conda-forge
yaml 0.2.5 h6a83c73_3 conda-forge
yaml-cpp 0.8.0 h5112557_1 conda-forge
zipp 4.1.0 pyhcf101f3_0 conda-forge
zstd 1.5.7 h534d264_7 conda-forgeAdditional Context
Proposal:
In _search_package_via_shards, when fetch_channels returns None, wrap each channel's monolithic repodata in ShardLike instead of bailing to _search_package
The shards search path already iterates iter_records_v3(), the same repodata.json is fetched either way, and this matches how sharded channels already surface v3 records in search.
Depends on #16676
Source: conda/conda