Skip to content

Commit 2bf3bbd

Browse files
committed
first commit
0 parents  commit 2bf3bbd

File tree

28 files changed

+4523
-0
lines changed

28 files changed

+4523
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Bug report
2+
description: Report something that is broken or incorrect
3+
labels: bug
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
**Note**: Please read [this guide](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports)
9+
detailing how to provide the necessary information for us to reproduce your bug. In brief:
10+
* Please provide exact steps how to reproduce the bug in a clean Python environment.
11+
* In case it's not clear what's causing this bug, please provide the data or the data generation procedure.
12+
* Sometimes it is not possible to share the data, but usually it is possible to replicate problems on publicly
13+
available datasets or to share a subset of your data.
14+
15+
- type: textarea
16+
id: report
17+
attributes:
18+
label: Report
19+
description: A clear and concise description of what the bug is.
20+
validations:
21+
required: true
22+
23+
- type: textarea
24+
id: versions
25+
attributes:
26+
label: Versions
27+
description: |
28+
Which version of packages.
29+
30+
Please install `session-info2`, run the following command in a notebook,
31+
click the “Copy as Markdown” button, then paste the results into the text box below.
32+
33+
```python
34+
In[1]: import session_info2; session_info2.session_info(dependencies=True)
35+
```
36+
37+
Alternatively, run this in a console:
38+
39+
```python
40+
>>> import session_info2; print(session_info2.session_info(dependencies=True)._repr_mimebundle_()["text/markdown"])
41+
```
42+
render: python
43+
placeholder: |
44+
anndata 0.11.3
45+
---- ----
46+
charset-normalizer 3.4.1
47+
coverage 7.7.0
48+
psutil 7.0.0
49+
dask 2024.7.1
50+
jaraco.context 5.3.0
51+
numcodecs 0.15.1
52+
jaraco.functools 4.0.1
53+
Jinja2 3.1.6
54+
sphinxcontrib-jsmath 1.0.1
55+
sphinxcontrib-htmlhelp 2.1.0
56+
toolz 1.0.0
57+
session-info2 0.1.2
58+
PyYAML 6.0.2
59+
llvmlite 0.44.0
60+
scipy 1.15.2
61+
pandas 2.2.3
62+
sphinxcontrib-devhelp 2.0.0
63+
h5py 3.13.0
64+
tblib 3.0.0
65+
setuptools-scm 8.2.0
66+
more-itertools 10.3.0
67+
msgpack 1.1.0
68+
sparse 0.15.5
69+
wrapt 1.17.2
70+
jaraco.collections 5.1.0
71+
numba 0.61.0
72+
pyarrow 19.0.1
73+
pytz 2025.1
74+
MarkupSafe 3.0.2
75+
crc32c 2.7.1
76+
sphinxcontrib-qthelp 2.0.0
77+
sphinxcontrib-serializinghtml 2.0.0
78+
zarr 2.18.4
79+
asciitree 0.3.3
80+
six 1.17.0
81+
sphinxcontrib-applehelp 2.0.0
82+
numpy 2.1.3
83+
cloudpickle 3.1.1
84+
sphinxcontrib-bibtex 2.6.3
85+
natsort 8.4.0
86+
jaraco.text 3.12.1
87+
setuptools 76.1.0
88+
Deprecated 1.2.18
89+
packaging 24.2
90+
python-dateutil 2.9.0.post0
91+
---- ----
92+
Python 3.13.2 | packaged by conda-forge | (main, Feb 17 2025, 14:10:22) [GCC 13.3.0]
93+
OS Linux-6.11.0-109019-tuxedo-x86_64-with-glibc2.39
94+
Updated 2025-03-18 15:47

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Scverse Community Forum
4+
url: https://discourse.scverse.org/
5+
about: If you have questions about “How to do X”, please ask them here.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Feature request
2+
description: Propose a new feature for Unofficial Cellosaurus MCP
3+
labels: enhancement
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: Description of feature
9+
description: Please describe your suggestion for a new feature. It might help to describe a problem or use case, plus any alternatives that you have considered.
10+
validations:
11+
required: true

.github/workflows/build.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Check Build
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
defaults:
14+
run:
15+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
16+
shell: bash -euo pipefail {0}
17+
18+
jobs:
19+
package:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
filter: blob:none
25+
fetch-depth: 0
26+
- name: Install uv
27+
uses: astral-sh/setup-uv@v5
28+
with:
29+
cache-dependency-glob: pyproject.toml
30+
- name: Build package
31+
run: uv build
32+
- name: Check package
33+
run: uvx twine check --strict dist/*.whl

.github/workflows/release.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Release
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
defaults:
8+
run:
9+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
10+
shell: bash -euo pipefail {0}
11+
12+
# Use "trusted publishing", see https://docs.pypi.org/trusted-publishers/
13+
jobs:
14+
release:
15+
name: Upload release to PyPI
16+
runs-on: ubuntu-latest
17+
environment:
18+
name: pypi
19+
url: https://pypi.org/p/cellosaurus_mcp
20+
permissions:
21+
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
22+
steps:
23+
- uses: actions/checkout@v4
24+
with:
25+
filter: blob:none
26+
fetch-depth: 0
27+
- name: Install uv
28+
uses: astral-sh/setup-uv@v5
29+
with:
30+
cache-dependency-glob: pyproject.toml
31+
- name: Build package
32+
run: uv build
33+
- name: Publish package distributions to PyPI
34+
uses: pypa/gh-action-pypi-publish@release/v1

.github/workflows/test.yaml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Test
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: "0 5 1,15 * *"
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
defaults:
16+
run:
17+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
18+
shell: bash -euo pipefail {0}
19+
20+
jobs:
21+
# Get the test environment from hatch as defined in pyproject.toml.
22+
# This ensures that the pyproject.toml is the single point of truth for test definitions and the same tests are
23+
# run locally and on continuous integration.
24+
# Check [[tool.hatch.envs.hatch-test.matrix]] in pyproject.toml and https://hatch.pypa.io/latest/environment/ for
25+
# more details.
26+
get-environments:
27+
runs-on: ubuntu-latest
28+
outputs:
29+
envs: ${{ steps.get-envs.outputs.envs }}
30+
steps:
31+
- uses: actions/checkout@v4
32+
with:
33+
filter: blob:none
34+
fetch-depth: 0
35+
- name: Install uv
36+
uses: astral-sh/setup-uv@v5
37+
- name: Get test environments
38+
id: get-envs
39+
run: |
40+
ENVS_JSON=$(uvx hatch env show --json | jq -c 'to_entries
41+
| map(
42+
select(.key | startswith("hatch-test"))
43+
| {
44+
name: .key,
45+
label: (if (.key | contains("pre")) then .key + " (PRE-RELEASE DEPENDENCIES)" else .key end),
46+
python: .value.python
47+
}
48+
)')
49+
echo "envs=${ENVS_JSON}" | tee $GITHUB_OUTPUT
50+
51+
# Run tests through hatch. Spawns a separate runner for each environment defined in the hatch matrix obtained above.
52+
test:
53+
needs: get-environments
54+
55+
strategy:
56+
fail-fast: false
57+
matrix:
58+
os: [ubuntu-latest]
59+
env: ${{ fromJSON(needs.get-environments.outputs.envs) }}
60+
61+
name: ${{ matrix.env.label }}
62+
runs-on: ${{ matrix.os }}
63+
64+
steps:
65+
- uses: actions/checkout@v4
66+
with:
67+
filter: blob:none
68+
fetch-depth: 0
69+
- name: Install uv
70+
uses: astral-sh/setup-uv@v5
71+
with:
72+
python-version: ${{ matrix.env.python }}
73+
cache-dependency-glob: pyproject.toml
74+
- name: create hatch environment
75+
run: uvx hatch env create ${{ matrix.env.name }}
76+
- name: run tests using hatch
77+
env:
78+
MPLBACKEND: agg
79+
PLATFORM: ${{ matrix.os }}
80+
DISPLAY: :42
81+
run: uvx hatch run ${{ matrix.env.name }}:run-cov
82+
- name: generate coverage report
83+
run: uvx hatch run ${{ matrix.env.name }}:coverage xml
84+
- name: Upload coverage
85+
uses: codecov/codecov-action@v4
86+
87+
# Check that all tests defined above pass. This makes it easy to set a single "required" test in branch
88+
# protection instead of having to update it frequently. See https://github.com/re-actors/alls-green#why.
89+
check:
90+
name: Tests pass in all hatch environments
91+
if: always()
92+
needs:
93+
- get-environments
94+
- test
95+
runs-on: ubuntu-latest
96+
steps:
97+
- uses: re-actors/alls-green@release/v1
98+
with:
99+
jobs: ${{ toJSON(needs) }}

.gitignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Temp files
2+
.DS_Store
3+
*~
4+
buck-out/
5+
6+
7+
# Compiled files
8+
.venv/
9+
__pycache__/
10+
.*cache/
11+
12+
# Distribution / packaging
13+
/dist/
14+
15+
# Tests and coverage
16+
/data/
17+
/node_modules/
18+
19+
# docs
20+
/docs/generated/
21+
/docs/_build/

.pre-commit-config.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
fail_fast: false
2+
default_language_version:
3+
python: python3
4+
default_stages:
5+
- pre-commit
6+
- pre-push
7+
minimum_pre_commit_version: 2.16.0
8+
repos:
9+
- repo: https://github.com/biomejs/pre-commit
10+
rev: v2.2.0
11+
hooks:
12+
- id: biome-format
13+
exclude: ^\.cruft\.json$ # inconsistent indentation with cruft - file never to be modified manually.
14+
- repo: https://github.com/tox-dev/pyproject-fmt
15+
rev: v2.6.0
16+
hooks:
17+
- id: pyproject-fmt
18+
- repo: https://github.com/astral-sh/ruff-pre-commit
19+
rev: v0.12.9
20+
hooks:
21+
- id: ruff-check
22+
types_or: [python, pyi, jupyter]
23+
args: [--fix, --exit-non-zero-on-fix]
24+
- id: ruff-format
25+
types_or: [python, pyi, jupyter]
26+
- repo: https://github.com/pre-commit/pre-commit-hooks
27+
rev: v6.0.0
28+
hooks:
29+
- id: detect-private-key
30+
- id: check-ast
31+
- id: end-of-file-fixer
32+
- id: mixed-line-ending
33+
args: [--fix=lf]
34+
- id: trailing-whitespace
35+
- id: check-case-conflict
36+
# Check that there are no merge conflicts (could be generated by template sync)
37+
- id: check-merge-conflict
38+
args: [--assume-in-merge]
39+
- repo: local
40+
hooks:
41+
- id: forbid-to-commit
42+
name: Don't commit rej files
43+
entry: |
44+
Cannot commit .rej files. These indicate merge conflicts that arise during automated template updates.
45+
Fix the merge conflicts manually and remove the .rej files.
46+
language: fail
47+
files: '.*\.rej$'

0 commit comments

Comments
 (0)