tiledbsoma 2.2.0 breaks user-agent in requests
bug
## Describe the bug
Running the test suite with tiledbsoma 2.2.0 installed shows failures for some of the user agent tests. Downgrading to tiledbsoma 2.1.2 shows passing tests.
## To Reproduce
From the python api root
```
pip install -e .[spatial] -r scripts/requirements-dev.txt
pytest -k test_user_agent
```
<details>
<summary> test results </summary>
```
$ pytest -k test_user_agent
============================================================================================================= test session starts ==============================================================================================================
platform linux -- Python 3.12.12, pytest-9.0.2, pluggy-1.6.0
rootdir: /home/ubuntu/github/cellxgene-census/api/python/cellxgene_census
configfile: pyproject.toml
plugins: requests-mock-1.12.1, zarr-3.1.5, xdist-3.8.0
collected 422 items / 418 deselected / 4 selected
tests/test_user_agent.py .FFF [100%]
=================================================================================================================== FAILURES ===================================================================================================================
________________________________________________________________________________________________________ test_download_w_proxy_fixture _________________________________________________________________________________________________________
small_dataset_id = '0895c838-e550-48a3-a777-dbcd35d30272', collect_proxy_requests = <function collect_proxy_requests.<locals>._proxy_requests at 0x764991ff7f60>
tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_download_w_proxy_fixture0'), test_specific_useragent = 'tests/test_user_agent.py::test_download_w_proxy_fixture (setup)'
def test_download_w_proxy_fixture(
small_dataset_id: str,
collect_proxy_requests: Callable[[], list[dict]],
tmp_path: Path,
test_specific_useragent: str,
):
# Use of collect_proxy_requests forces test to use a proxy and will check headers of requests made via that proxy
adata_path = tmp_path / "adata.h5ad"
cellxgene_census.download_source_h5ad(small_dataset_id, adata_path.as_posix(), census_version="latest")
records = collect_proxy_requests()
> check_proxy_records(
records,
custom_user_agent=test_specific_useragent,
min_records=3, # Should request at least a json and the download
)
tests/test_user_agent.py:233:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
records = [{'headers': {'host': 'census.cellxgene.cziscience.com:443'}, 'method': 'CONNECT', 'url': 'census.cellxgene.cziscience... ...}, 'method': 'GET', 'url': '/?list-type=2&delimiter=%2F&prefix=cell-census%2F2025-11-17%2Fsoma%2F__group%2F'}, ...]
def check_proxy_records(records: list[dict], *, custom_user_agent: None | str = None, min_records: int = 1) -> None:
# Check that there aren't two CONNECT requests in a row
prev_was_connect = False
for record in records:
was_connect = record["method"] == "CONNECT"
if prev_was_connect and was_connect:
raise AssertionError(
"Recieved multiple connect requests in a row. Some calls aren't being intercepted by the proxy."
)
# Check that headers were set correctly on intercepted requests
n_records = 0
for record in records:
if record["method"] == "CONNECT":
continue
n_records += 1
headers = record["headers"]
user_agent = headers["user-agent"]
> assert "cellxgene-census-python" in user_agent
E AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
tests/test_user_agent.py:199: AssertionError
------------------------------------------------------------------------------------------------------------- Captured stderr call -------------------------------------------------------------------------------------------------------------
Downloading: 100%|██████████| 5.13M/5.13M [00:00<00:00, 9.10MB/s]
__________________________________________________________________________________________________________ test_query_w_proxy_fixture __________________________________________________________________________________________________________
collect_proxy_requests = <function collect_proxy_requests.<locals>._proxy_requests at 0x7649931b9300>
def test_query_w_proxy_fixture(collect_proxy_requests: Callable[[], list[dict]]):
with cellxgene_census.open_soma(census_version="stable") as census:
_ = cellxgene_census.get_obs(census, "Mus musculus", coords=slice(100, 300))
records = collect_proxy_requests()
> check_proxy_records(
records,
min_records=5, # some metadata requests, then a lot of request from tiledb
)
tests/test_user_agent.py:245:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
records = [{'headers': {'host': 'census.cellxgene.cziscience.com:443'}, 'method': 'CONNECT', 'url': 'census.cellxgene.cziscience... ...}, 'method': 'GET', 'url': '/?list-type=2&delimiter=%2F&prefix=cell-census%2F2025-11-08%2Fsoma%2F__group%2F'}, ...]
def check_proxy_records(records: list[dict], *, custom_user_agent: None | str = None, min_records: int = 1) -> None:
# Check that there aren't two CONNECT requests in a row
prev_was_connect = False
for record in records:
was_connect = record["method"] == "CONNECT"
if prev_was_connect and was_connect:
raise AssertionError(
"Recieved multiple connect requests in a row. Some calls aren't being intercepted by the proxy."
)
# Check that headers were set correctly on intercepted requests
n_records = 0
for record in records:
if record["method"] == "CONNECT":
continue
n_records += 1
headers = record["headers"]
user_agent = headers["user-agent"]
> assert "cellxgene-census-python" in user_agent
E AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
tests/test_user_agent.py:199: AssertionError
------------------------------------------------------------------------------------------------------------- Captured stderr call -------------------------------------------------------------------------------------------------------------
The "stable" release is currently 2025-11-08. Specify 'census_version="2025-11-08"' in future calls to open_soma() to ensure data consistency.
-------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------
INFO cellxgene_census:_open.py:252 The "stable" release is currently 2025-11-08. Specify 'census_version="2025-11-08"' in future calls to open_soma() to ensure data consistency.
____________________________________________________________________________________________________________ test_embedding_headers ____________________________________________________________________________________________________________
collect_proxy_requests = <function collect_proxy_requests.<locals>._proxy_requests at 0x7649931bbe20>
def test_embedding_headers(collect_proxy_requests: Callable[[], list[dict]]):
import cellxgene_census.experimental
CENSUS_VERSION = "2023-12-15"
embeddings_metadata = cellxgene_census.experimental.get_all_available_embeddings(CENSUS_VERSION)
metadata = embeddings_metadata[0]
embedding_uri = (
f"s3://cellxgene-contrib-public/contrib/cell-census/soma/{metadata['census_version']}/{metadata['id']}"
)
_ = cellxgene_census.experimental.get_embedding(
CENSUS_VERSION,
embedding_uri=embedding_uri,
obs_soma_joinids=np.arange(100),
)
> check_proxy_records(collect_proxy_requests())
tests/test_user_agent.py:267:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
records = [{'headers': {'host': 'census.cellxgene.cziscience.com:443'}, 'method': 'CONNECT', 'url': 'census.cellxgene.cziscience...e', 'host': 'census.cellxgene.cziscience.com', ...}, 'method': 'GET', 'url': '/cellxgene-census/v1/release.json'}, ...]
def check_proxy_records(records: list[dict], *, custom_user_agent: None | str = None, min_records: int = 1) -> None:
# Check that there aren't two CONNECT requests in a row
prev_was_connect = False
for record in records:
was_connect = record["method"] == "CONNECT"
if prev_was_connect and was_connect:
raise AssertionError(
"Recieved multiple connect requests in a row. Some calls aren't being intercepted by the proxy."
)
# Check that headers were set correctly on intercepted requests
n_records = 0
for record in records:
if record["method"] == "CONNECT":
continue
n_records += 1
headers = record["headers"]
user_agent = headers["user-agent"]
> assert "cellxgene-census-python" in user_agent
E AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
tests/test_user_agent.py:199: AssertionError
=========================================================================================================== short test summary info ============================================================================================================
FAILED tests/test_user_agent.py::test_download_w_proxy_fixture - AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
FAILED tests/test_user_agent.py::test_query_w_proxy_fixture - AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
FAILED tests/test_user_agent.py::test_embedding_headers - AssertionError: assert 'cellxgene-census-python' in 'aws-sdk-cpp/1.11.665 ua/2.1 api/S3 os/Linux#6.8.0-1024-aws lang/c++#C++11 md/aws-crt#0.34.5 md/arch#x86_64 md/GCC#14.2.1 m/Z,b,P'
================================================================================================= 3 failed, 1 passed, 418 deselected in 31.53s =================================================================================================
```
</details>
<details>
<summary> Showing that downgrading tiledbsoma resolves the issue </summary>
```
(census-dev) ubuntu@ip-172-31-32-138:~/github/cellxgene-census/api/python/cellxgene_census ‹main›
$ pip install "tiledbsoma==2.1.2"
Collecting tiledbsoma==2.1.2
Downloading tiledbsoma-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (7.0 kB)
Requirement already satisfied: anndata>=0.10.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (0.12.6)
Requirement already satisfied: attrs>=22.2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (25.4.0)
Requirement already satisfied: more-itertools in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (10.8.0)
Requirement already satisfied: numpy in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (2.3.5)
Requirement already satisfied: pandas in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (2.3.3)
Requirement already satisfied: pyarrow in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (22.0.0)
Requirement already satisfied: scanpy>=1.9.2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (1.11.5)
Requirement already satisfied: scipy in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (1.16.3)
Requirement already satisfied: somacore==1.0.29 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (1.0.29)
Requirement already satisfied: typing-extensions>=4.5.0 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from tiledbsoma==2.1.2) (4.15.0)
Requirement already satisfied: pyarrow-hotfix in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from somacore==1.0.29->tiledbsoma==2.1.2) (0.7)
Requirement already satisfied: shapely in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from somacore==1.0.29->tiledbsoma==2.1.2) (2.1.2)
Requirement already satisfied: array-api-compat>=1.7.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (1.12.0)
Requirement already satisfied: h5py>=3.8 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (3.15.1)
Requirement already satisfied: legacy-api-wrap in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (1.5)
Requirement already satisfied: natsort in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (8.4.0)
Requirement already satisfied: packaging>=24.2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (25.0)
Requirement already satisfied: zarr!=3.0.*,>=2.18.7 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from anndata>=0.10.1->tiledbsoma==2.1.2) (3.1.5)
Requirement already satisfied: python-dateutil>=2.8.2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from pandas->tiledbsoma==2.1.2) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from pandas->tiledbsoma==2.1.2) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from pandas->tiledbsoma==2.1.2) (2025.2)
Requirement already satisfied: six>=1.5 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas->tiledbsoma==2.1.2) (1.17.0)
Requirement already satisfied: joblib in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (1.5.2)
Requirement already satisfied: matplotlib>=3.7.5 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (3.10.8)
Requirement already satisfied: networkx>=2.7.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (3.6.1)
Requirement already satisfied: numba!=0.62.0rc1,>=0.57.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.63.1)
Requirement already satisfied: patsy!=1.0.0 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (1.0.2)
Requirement already satisfied: pynndescent>=0.5.13 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.5.13)
Requirement already satisfied: scikit-learn>=1.1.3 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (1.8.0)
Requirement already satisfied: seaborn>=0.13.2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.13.2)
Requirement already satisfied: session-info2 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.2.3)
Requirement already satisfied: statsmodels>=0.14.5 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.14.6)
Requirement already satisfied: tqdm in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (4.67.1)
Requirement already satisfied: umap-learn>=0.5.6 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scanpy>=1.9.2->tiledbsoma==2.1.2) (0.5.9.post2)
Requirement already satisfied: contourpy>=1.0.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (4.61.1)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (1.4.9)
Requirement already satisfied: pillow>=8 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (12.0.0)
Requirement already satisfied: pyparsing>=3 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from matplotlib>=3.7.5->scanpy>=1.9.2->tiledbsoma==2.1.2) (3.2.5)
Requirement already satisfied: llvmlite<0.47,>=0.46.0dev0 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from numba!=0.62.0rc1,>=0.57.1->scanpy>=1.9.2->tiledbsoma==2.1.2) (0.46.0)
Requirement already satisfied: threadpoolctl>=3.2.0 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from scikit-learn>=1.1.3->scanpy>=1.9.2->tiledbsoma==2.1.2) (3.6.0)
Requirement already satisfied: donfig>=0.8 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.10.1->tiledbsoma==2.1.2) (0.8.1.post1)
Requirement already satisfied: google-crc32c>=1.5 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.10.1->tiledbsoma==2.1.2) (1.7.1)
Requirement already satisfied: numcodecs>=0.14 in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.10.1->tiledbsoma==2.1.2) (0.16.5)
Requirement already satisfied: pyyaml in /home/ubuntu/miniforge3/envs/census-dev/lib/python3.12/site-packages (from donfig>=0.8->zarr!=3.0.*,>=2.18.7->anndata>=0.10.1->tiledbsoma==2.1.2) (6.0.3)
Downloading tiledbsoma-2.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (21.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 170.6 MB/s 0:00:00
Installing collected packages: tiledbsoma
Attempting uninstall: tiledbsoma
Found existing installation: tiledbsoma 2.2.0
Uninstalling tiledbsoma-2.2.0:
Successfully uninstalled tiledbsoma-2.2.0
Successfully installed tiledbsoma-2.1.2
(census-dev) ubuntu@ip-172-31-32-138:~/github/cellxgene-census/api/python/cellxgene_census ‹main›
$ pytest -k test_user_agent
============================================================================================================= test session starts ==============================================================================================================
platform linux -- Python 3.12.12, pytest-9.0.2, pluggy-1.6.0
rootdir: /home/ubuntu/github/cellxgene-census/api/python/cellxgene_census
configfile: pyproject.toml
plugins: requests-mock-1.12.1, zarr-3.1.5, xdist-3.8.0
collected 422 items / 418 deselected / 4 selected
tests/test_user_agent.py .... [100%]
====================================================================================================== 4 passed, 418 deselected in 30.52s ======================================================================================================
```
</details>
## Expected behavior
We expect that this not fail.
## Environment
Provide a description of your system and the software versions.
- Machine
- OS
- Software versions:
- Python user: `pip list`
- R user: `sessionInfo()`
<details>
<summary> pip list </summary>
```
Package Version Editable project location
------------------------- ----------------------- ----------------------------------------------------------------
aiobotocore 2.26.0
aiohappyeyeballs 2.6.1
aiohttp 3.13.2
aioitertools 0.13.0
aiosignal 1.4.0
anndata 0.12.6
array-api-compat 1.12.0
asttokens 3.0.1
attrs 25.4.0
autopep8 2.3.2
botocore 1.41.5
cellxgene-census 1.17.1.dev27+g40b42116e /home/ubuntu/github/cellxgene-census/api/python/cellxgene_census
certifi 2025.11.12
cffi 2.0.0
charset-normalizer 3.4.4
comm 0.2.3
contourpy 1.3.3
coverage 7.13.0
cryptography 46.0.3
cycler 0.12.1
debugpy 1.8.18
decorator 5.2.1
docutils 0.22.3
donfig 0.8.1.post1
execnet 2.1.2
executing 2.2.1
fonttools 4.61.1
frozenlist 1.8.0
fsspec 2025.12.0
google-crc32c 1.7.1
h5py 3.15.1
id 1.5.0
idna 3.11
importlib_metadata 8.7.0
iniconfig 2.3.0
ipykernel 7.1.0
ipython 9.8.0
ipython_pygments_lexers 1.1.1
jaraco.classes 3.4.0
jaraco.context 6.0.1
jaraco.functools 4.3.0
jedi 0.19.2
jeepney 0.9.0
jmespath 1.0.1
joblib 1.5.2
jsonschema 4.25.1
jsonschema-specifications 2025.9.1
jupyter_client 8.7.0
jupyter_core 5.9.1
keyring 25.7.0
kiwisolver 1.4.9
legacy-api-wrap 1.5
llvmlite 0.46.0
markdown-it-py 4.0.0
matplotlib 3.10.8
matplotlib-inline 0.2.1
mdurl 0.1.2
more-itertools 10.8.0
multidict 6.7.0
natsort 8.4.0
nbqa 1.9.1
nest-asyncio 1.6.0
networkx 3.6.1
nh3 0.3.2
numba 0.63.1
numcodecs 0.16.5
numpy 2.3.5
packaging 25.0
pandas 2.3.3
parso 0.8.5
patsy 1.0.2
pexpect 4.9.0
pillow 12.0.0
pip 25.3
platformdirs 4.5.1
pluggy 1.6.0
prompt_toolkit 3.0.52
propcache 0.4.1
proxy.py 2.4.10
psutil 7.1.3
ptyprocess 0.7.0
pure_eval 0.2.3
pyarrow 22.0.0
pyarrow-hotfix 0.7
pycodestyle 2.14.0
pycparser 2.23
Pygments 2.19.2
pynndescent 0.5.13
pyparsing 3.2.5
pytest 9.0.2
pytest-xdist 3.8.0
python-dateutil 2.9.0.post0
pytz 2025.2
PyYAML 6.0.3
pyzmq 27.1.0
readme_renderer 44.0
referencing 0.37.0
requests 2.32.5
requests-mock 1.12.1
requests-toolbelt 1.0.0
rfc3986 2.0.0
rich 14.2.0
rpds-py 0.30.0
s3fs 2025.12.0
scanpy 1.11.5
scikit-learn 1.8.0
scikit-misc 0.5.2
scipy 1.16.3
seaborn 0.13.2
SecretStorage 3.5.0
session-info2 0.2.3
setuptools 80.9.0
shapely 2.1.2
six 1.17.0
somacore 1.0.29
stack-data 0.6.3
statsmodels 0.14.6
tblib 3.2.2
threadpoolctl 3.6.0
tiledb 0.36.0
tiledb-cloud 0.14.4
tiledb-vector-search 0.16.0
tiledbsoma 2.2.0
tokenize_rt 6.2.0
tomli 2.3.0
tornado 6.5.3
tqdm 4.67.1
traitlets 5.14.3
twine 6.2.0
typing_extensions 4.15.0
tzdata 2025.2
umap-learn 0.5.9.post2
urllib3 2.5.0
wcwidth 0.2.14
wheel 0.45.1
wrapt 1.17.3
yarl 1.22.0
zarr 3.1.5
zipp 3.23.0
```
</details>
## Additional context
This probably needs to be resolved upstrean on the tiledb side, since it seems like a regression from them.
0 条评论