SingleCellExperiment 0.5.9__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/.github/workflows/publish-pypi.yml +10 -13
  2. singlecellexperiment-0.6.0/.github/workflows/run-tests.yml +73 -0
  3. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/.pre-commit-config.yaml +2 -2
  4. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/CHANGELOG.md +5 -0
  5. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/PKG-INFO +3 -2
  6. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/changelog.md +5 -0
  7. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/setup.cfg +2 -1
  8. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/PKG-INFO +3 -2
  9. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/requires.txt +2 -1
  10. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/SingleCellExperiment.py +28 -24
  11. singlecellexperiment-0.5.9/.github/workflows/run-tests.yml +0 -32
  12. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/.coveragerc +0 -0
  13. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/.gitignore +0 -0
  14. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/.readthedocs.yml +0 -0
  15. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/AUTHORS.md +0 -0
  16. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/CONTRIBUTING.md +0 -0
  17. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/LICENSE.txt +0 -0
  18. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/README.md +0 -0
  19. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/Makefile +0 -0
  20. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/_static/.gitignore +0 -0
  21. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/authors.md +0 -0
  22. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/conf.py +0 -0
  23. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/contributing.md +0 -0
  24. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/index.md +0 -0
  25. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/license.md +0 -0
  26. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/readme.md +0 -0
  27. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/requirements.txt +0 -0
  28. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/docs/tutorial.md +0 -0
  29. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/pyproject.toml +0 -0
  30. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/setup.py +0 -0
  31. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/SOURCES.txt +0 -0
  32. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/dependency_links.txt +0 -0
  33. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/not-zip-safe +0 -0
  34. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/SingleCellExperiment.egg-info/top_level.txt +0 -0
  35. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/__init__.py +0 -0
  36. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/_combineutils.py +0 -0
  37. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/_ioutils.py +0 -0
  38. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/io/__init__.py +0 -0
  39. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/io/h5ad.py +0 -0
  40. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/src/singlecellexperiment/io/tenx.py +0 -0
  41. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/conftest.py +0 -0
  42. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/adata.h5ad +0 -0
  43. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/mocks.py +0 -0
  44. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/raw_feature_bc_matrix/barcodes.tsv +0 -0
  45. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/raw_feature_bc_matrix/features.tsv +0 -0
  46. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/raw_feature_bc_matrix/matrix.mtx +0 -0
  47. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/data/tenx.sub.h5 +0 -0
  48. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce.py +0 -0
  49. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce_combine_cols.py +0 -0
  50. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce_combine_rows.py +0 -0
  51. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce_io.py +0 -0
  52. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce_methods.py +0 -0
  53. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tests/test_sce_slice.py +0 -0
  54. {singlecellexperiment-0.5.9 → singlecellexperiment-0.6.0}/tox.ini +0 -0
@@ -1,6 +1,3 @@
1
- # This workflow will install Python dependencies, run tests and lint with a single version of Python
2
- # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
-
4
1
  name: Publish to PyPI
5
2
 
6
3
  on:
@@ -19,10 +16,10 @@ jobs:
19
16
  steps:
20
17
  - uses: actions/checkout@v4
21
18
 
22
- - name: Set up Python 3.11
19
+ - name: Set up Python 3.12
23
20
  uses: actions/setup-python@v5
24
21
  with:
25
- python-version: 3.11
22
+ python-version: 3.12
26
23
 
27
24
  - name: Install dependencies
28
25
  run: |
@@ -33,6 +30,14 @@ jobs:
33
30
  run: |
34
31
  tox
35
32
 
33
+ - name: Build Project and Publish
34
+ run: |
35
+ python -m tox -e clean,build
36
+
37
+ # This uses the trusted publisher workflow so no token is required.
38
+ - name: Publish to PyPI
39
+ uses: pypa/gh-action-pypi-publish@release/v1
40
+
36
41
  - name: Build docs
37
42
  run: |
38
43
  tox -e docs
@@ -45,11 +50,3 @@ jobs:
45
50
  branch: gh-pages # The branch the action should deploy to.
46
51
  folder: ./docs/_build/html
47
52
  clean: true # Automatically remove deleted files from the deploy branch
48
-
49
- - name: Build Project and Publish
50
- run: |
51
- python -m tox -e clean,build
52
-
53
- # This uses the trusted publisher workflow so no token is required.
54
- - name: Publish to PyPI
55
- uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,73 @@
1
+ name: Test the library
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master # for legacy repos
7
+ - main
8
+ pull_request:
9
+ branches:
10
+ - master # for legacy repos
11
+ - main
12
+ workflow_dispatch: # Allow manually triggering the workflow
13
+ schedule:
14
+ # Run roughly every 15 days at 00:00 UTC
15
+ # (useful to check if updates on dependencies break the package)
16
+ - cron: "0 0 1,16 * *"
17
+
18
+ permissions:
19
+ contents: read
20
+
21
+ concurrency:
22
+ group: >-
23
+ ${{ github.workflow }}-${{ github.ref_type }}-
24
+ ${{ github.event.pull_request.number || github.sha }}
25
+ cancel-in-progress: true
26
+
27
+ jobs:
28
+ test:
29
+ strategy:
30
+ matrix:
31
+ python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
32
+ platform:
33
+ - ubuntu-latest
34
+ - macos-latest
35
+ # - windows-latest
36
+ runs-on: ${{ matrix.platform }}
37
+ name: Python ${{ matrix.python }}, ${{ matrix.platform }}
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+
41
+ - uses: actions/setup-python@v5
42
+ id: setup-python
43
+ with:
44
+ python-version: ${{ matrix.python }}
45
+
46
+ - name: Install dependencies
47
+ run: |
48
+ python -m pip install --upgrade pip
49
+ pip install tox coverage
50
+
51
+ - name: Run tests
52
+ run: >-
53
+ pipx run --python '${{ steps.setup-python.outputs.python-path }}'
54
+ tox
55
+ -- -rFEx --durations 10 --color yes --cov --cov-branch --cov-report=xml # pytest args
56
+
57
+ - name: Check for codecov token availability
58
+ id: codecov-check
59
+ shell: bash
60
+ run: |
61
+ if [ ${{ secrets.CODECOV_TOKEN }} != '' ]; then
62
+ echo "codecov=true" >> $GITHUB_OUTPUT;
63
+ else
64
+ echo "codecov=false" >> $GITHUB_OUTPUT;
65
+ fi
66
+
67
+ - name: Upload coverage reports to Codecov with GitHub Action
68
+ uses: codecov/codecov-action@v5
69
+ if: ${{ steps.codecov-check.outputs.codecov == 'true' }}
70
+ env:
71
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
72
+ slug: ${{ github.repository }}
73
+ flags: ${{ matrix.platform }} - py${{ matrix.python }}
@@ -2,7 +2,7 @@ exclude: '^docs/conf.py'
2
2
 
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v5.0.0
5
+ rev: v6.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: check-added-large-files
@@ -33,7 +33,7 @@ repos:
33
33
 
34
34
  - repo: https://github.com/astral-sh/ruff-pre-commit
35
35
  # Ruff version.
36
- rev: v0.9.10
36
+ rev: v0.14.5
37
37
  hooks:
38
38
  - id: ruff
39
39
  args: [--fix, --exit-non-zero-on-fix]
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.6.0
4
+
5
+ - Changed related to SummarizedExperiment and implementation of `CompressedGenomicRangesList` in the genomic ranges package.
6
+ - Update versions of relevant dependency packages.
7
+
3
8
  ## Version 0.5.8 - 0.5.9
4
9
 
5
10
  - Rename `reduced_dims` to `reduced_dimensions`. Constructor accepts both these arguments for backwards compatibility.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SingleCellExperiment
3
- Version: 0.5.9
3
+ Version: 0.6.0
4
4
  Summary: Container class for single-cell experiments
5
5
  Home-page: https://github.com/BiocPy/SingleCellExperiment
6
6
  Author: jkanche
@@ -14,7 +14,8 @@ Requires-Python: >=3.9
14
14
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
15
15
  License-File: LICENSE.txt
16
16
  Requires-Dist: importlib-metadata; python_version < "3.8"
17
- Requires-Dist: summarizedexperiment>=0.5.3
17
+ Requires-Dist: summarizedexperiment>=0.6.3
18
+ Requires-Dist: compressed-lists>=0.4.3
18
19
  Provides-Extra: optional
19
20
  Requires-Dist: anndata==0.9.2; python_version <= "3.9" and extra == "optional"
20
21
  Requires-Dist: anndata>0.9.2; python_version > "3.9" and extra == "optional"
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.6.0
4
+
5
+ - Changed related to SummarizedExperiment and implementation of `CompressedGenomicRangesList` in the genomic ranges package.
6
+ - Update versions of relevant dependency packages.
7
+
3
8
  ## Version 0.5.8 - 0.5.9
4
9
 
5
10
  - Rename `reduced_dims` to `reduced_dimensions`. Constructor accepts both these arguments for backwards compatibility.
@@ -24,7 +24,8 @@ package_dir =
24
24
  python_requires = >=3.9
25
25
  install_requires =
26
26
  importlib-metadata; python_version<"3.8"
27
- summarizedexperiment>=0.5.3
27
+ summarizedexperiment>=0.6.3
28
+ compressed-lists>=0.4.3
28
29
 
29
30
  [options.packages.find]
30
31
  where = src
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SingleCellExperiment
3
- Version: 0.5.9
3
+ Version: 0.6.0
4
4
  Summary: Container class for single-cell experiments
5
5
  Home-page: https://github.com/BiocPy/SingleCellExperiment
6
6
  Author: jkanche
@@ -14,7 +14,8 @@ Requires-Python: >=3.9
14
14
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
15
15
  License-File: LICENSE.txt
16
16
  Requires-Dist: importlib-metadata; python_version < "3.8"
17
- Requires-Dist: summarizedexperiment>=0.5.3
17
+ Requires-Dist: summarizedexperiment>=0.6.3
18
+ Requires-Dist: compressed-lists>=0.4.3
18
19
  Provides-Extra: optional
19
20
  Requires-Dist: anndata==0.9.2; python_version <= "3.9" and extra == "optional"
20
21
  Requires-Dist: anndata>0.9.2; python_version > "3.9" and extra == "optional"
@@ -1,4 +1,5 @@
1
- summarizedexperiment>=0.5.3
1
+ summarizedexperiment>=0.6.3
2
+ compressed-lists>=0.4.3
2
3
 
3
4
  [:python_version < "3.8"]
4
5
  importlib-metadata
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from collections import OrderedDict
2
4
  from typing import Any, Dict, List, Optional, Sequence, Union
3
5
  from warnings import warn
@@ -105,7 +107,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
105
107
  column_data: Optional[biocframe.BiocFrame] = None,
106
108
  row_names: Optional[List[str]] = None,
107
109
  column_names: Optional[List[str]] = None,
108
- metadata: Optional[dict] = None,
110
+ metadata: Optional[Union[Dict[str, Any], ut.NamedList]] = None,
109
111
  reduced_dimensions: Optional[Dict[str, Any]] = None,
110
112
  reduced_dims: Optional[Dict[str, Any]] = None, # deprecated name
111
113
  main_experiment_name: Optional[str] = None,
@@ -113,7 +115,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
113
115
  row_pairs: Optional[Any] = None,
114
116
  column_pairs: Optional[Any] = None,
115
117
  alternative_experiment_check_dim_names: bool = True,
116
- validate: bool = True,
118
+ _validate: bool = True,
117
119
  **kwargs,
118
120
  ) -> None:
119
121
  """Initialize a single-cell experiment.
@@ -198,7 +200,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
198
200
 
199
201
  Defaults to None.
200
202
 
201
- validate:
203
+ _validate:
202
204
  Internal use only.
203
205
 
204
206
  kwargs:
@@ -213,7 +215,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
213
215
  row_names=row_names,
214
216
  column_names=column_names,
215
217
  metadata=metadata,
216
- validate=validate,
218
+ _validate=_validate,
217
219
  **kwargs,
218
220
  )
219
221
  self._main_experiment_name = main_experiment_name
@@ -234,7 +236,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
234
236
  self._row_pairs = row_pairs if row_pairs is not None else {}
235
237
  self._column_pairs = column_pairs if column_pairs is not None else {}
236
238
 
237
- if validate:
239
+ if _validate:
238
240
  _validate_reduced_dims(self._reduced_dims, self._shape)
239
241
  _validate_alternative_experiments(
240
242
  self._alternative_experiments,
@@ -283,6 +285,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
283
285
  alternative_experiments=_alt_expt_copy,
284
286
  row_pairs=_row_pair_copy,
285
287
  column_pairs=_col_pair_copy,
288
+ _validate=False,
286
289
  )
287
290
 
288
291
  def __copy__(self):
@@ -304,6 +307,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
304
307
  alternative_experiments=self._alternative_experiments,
305
308
  row_pairs=self._row_pairs,
306
309
  column_pairs=self._column_pairs,
310
+ _validate=False,
307
311
  )
308
312
 
309
313
  def copy(self):
@@ -403,7 +407,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
403
407
  """Alias for :py:meth:`~get_reduced_dimensions`, for back-compatibility."""
404
408
  return self.get_reduced_dimensions()
405
409
 
406
- def set_reduced_dimensions(self, reduced_dims: Dict[str, Any], in_place: bool = False) -> "SingleCellExperiment":
410
+ def set_reduced_dimensions(self, reduced_dims: Dict[str, Any], in_place: bool = False) -> SingleCellExperiment:
407
411
  """Set new reduced dimensions.
408
412
 
409
413
  Args:
@@ -423,7 +427,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
423
427
  output._reduced_dims = reduced_dims
424
428
  return output
425
429
 
426
- def set_reduced_dims(self, reduced_dims: Dict[str, Any], in_place: bool = False) -> "SingleCellExperiment":
430
+ def set_reduced_dims(self, reduced_dims: Dict[str, Any], in_place: bool = False) -> SingleCellExperiment:
427
431
  """Alias for :py:meth:`~set_reduced_dimensions`, for back-compatibility."""
428
432
  return self.set_reduced_dimensions(reduced_dims=reduced_dims, in_place=in_place)
429
433
 
@@ -471,7 +475,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
471
475
  """Alias for :py:meth:`~get_reduced_dimension_names`, for back-compatibility."""
472
476
  return self.get_reduced_dimension_names()
473
477
 
474
- def set_reduced_dimension_names(self, names: List[str], in_place: bool = False) -> "SingleCellExperiment":
478
+ def set_reduced_dimension_names(self, names: List[str], in_place: bool = False) -> SingleCellExperiment:
475
479
  """Replace :py:attr:`~.reduced_dims`'s names.
476
480
 
477
481
  Args:
@@ -497,7 +501,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
497
501
  output._reduced_dims = new_reduced_dims
498
502
  return output
499
503
 
500
- def set_reduced_dim_names(self, names: List[str], in_place: bool = False) -> "SingleCellExperiment":
504
+ def set_reduced_dim_names(self, names: List[str], in_place: bool = False) -> SingleCellExperiment:
501
505
  """Alias for :py:meth:`~set_reduced_dimension_names`, for back-compatibility."""
502
506
  return self.set_reduced_dimension_names(names=names, in_place=in_place)
503
507
 
@@ -573,7 +577,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
573
577
  """Alias for :py:meth:`~get_reduced_dimension`, for back-compatibility."""
574
578
  return self.get_reduced_dimension(name=name)
575
579
 
576
- def set_reduced_dimension(self, name: str, embedding: Any, in_place: bool = False) -> "SingleCellExperiment":
580
+ def set_reduced_dimension(self, name: str, embedding: Any, in_place: bool = False) -> SingleCellExperiment:
577
581
  """Add or replace :py:attr:`~singlecellexperiment.SingleCellExperiment.reduced_dimension`'s.
578
582
 
579
583
  Args:
@@ -613,7 +617,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
613
617
  """
614
618
  return self._main_experiment_name
615
619
 
616
- def set_main_experiment_name(self, name: Optional[str], in_place: bool = False) -> "SingleCellExperiment":
620
+ def set_main_experiment_name(self, name: Optional[str], in_place: bool = False) -> SingleCellExperiment:
617
621
  """Set new experiment data (assays).
618
622
 
619
623
  Args:
@@ -671,7 +675,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
671
675
 
672
676
  def set_alternative_experiments(
673
677
  self, alternative_experiments: Dict[str, Any], with_dim_names: bool = True, in_place: bool = False
674
- ) -> "SingleCellExperiment":
678
+ ) -> SingleCellExperiment:
675
679
  """Set new alternative experiments.
676
680
 
677
681
  Args:
@@ -725,7 +729,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
725
729
  """
726
730
  return list(self._alternative_experiments.keys())
727
731
 
728
- def set_alternative_experiment_names(self, names: List[str], in_place: bool = False) -> "SingleCellExperiment":
732
+ def set_alternative_experiment_names(self, names: List[str], in_place: bool = False) -> SingleCellExperiment:
729
733
  """Replace :py:attr:`~.alternative_experiment`'s names.
730
734
 
731
735
  Args:
@@ -821,7 +825,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
821
825
 
822
826
  def set_alternative_experiment(
823
827
  self, name: str, alternative_experiment: Any, with_dim_names: bool = True, in_place: bool = False
824
- ) -> "SingleCellExperiment":
828
+ ) -> SingleCellExperiment:
825
829
  """Add or replace :py:attr:`~singlecellexperiment.SingleCellExperiment.alternative_experiment`'s.
826
830
 
827
831
  Args:
@@ -872,7 +876,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
872
876
  """
873
877
  return self._row_pairs
874
878
 
875
- def set_row_pairs(self, pairs: Dict[str, Any], in_place: bool = False) -> "SingleCellExperiment":
879
+ def set_row_pairs(self, pairs: Dict[str, Any], in_place: bool = False) -> SingleCellExperiment:
876
880
  """Replace :py:attr:`~.row_pairs`'s names.
877
881
 
878
882
  Args:
@@ -918,7 +922,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
918
922
  """
919
923
  return list(self._row_pairs.keys())
920
924
 
921
- def set_row_pair_names(self, names: List[str], in_place: bool = False) -> "SingleCellExperiment":
925
+ def set_row_pair_names(self, names: List[str], in_place: bool = False) -> SingleCellExperiment:
922
926
  """Replace :py:attr:`~.row_pair`'s names.
923
927
 
924
928
  Args:
@@ -970,7 +974,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
970
974
  """
971
975
  return self._column_pairs
972
976
 
973
- def set_column_pairs(self, pairs: Dict[str, Any], in_place: bool = False) -> "SingleCellExperiment":
977
+ def set_column_pairs(self, pairs: Dict[str, Any], in_place: bool = False) -> SingleCellExperiment:
974
978
  """Replace :py:attr:`~.column_pairs`'s names.
975
979
 
976
980
  Args:
@@ -1016,7 +1020,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
1016
1020
  """
1017
1021
  return list(self._column_pairs.keys())
1018
1022
 
1019
- def set_column_pair_names(self, names: List[str], in_place: bool = False) -> "SingleCellExperiment":
1023
+ def set_column_pair_names(self, names: List[str], in_place: bool = False) -> SingleCellExperiment:
1020
1024
  """Replace :py:attr:`~.column_pair`'s names.
1021
1025
 
1022
1026
  Args:
@@ -1066,7 +1070,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
1066
1070
  self,
1067
1071
  rows: Optional[Union[str, int, bool, Sequence]],
1068
1072
  columns: Optional[Union[str, int, bool, Sequence]],
1069
- ) -> "SingleCellExperiment":
1073
+ ) -> SingleCellExperiment:
1070
1074
  """Alias for :py:attr:`~__getitem__`."""
1071
1075
 
1072
1076
  slicer = self._generic_slice(rows=rows, columns=columns)
@@ -1183,7 +1187,7 @@ class SingleCellExperiment(RangedSummarizedExperiment):
1183
1187
  return obj, adatas
1184
1188
 
1185
1189
  @classmethod
1186
- def from_anndata(cls, input: "anndata.AnnData") -> "SingleCellExperiment":
1190
+ def from_anndata(cls, input: "anndata.AnnData") -> SingleCellExperiment:
1187
1191
  """Create a ``SingleCellExperiment`` from :py:class:`~anndata.AnnData`.
1188
1192
 
1189
1193
  Args:
@@ -1253,19 +1257,19 @@ class SingleCellExperiment(RangedSummarizedExperiment):
1253
1257
  ######>> combine ops <<#####
1254
1258
  ############################
1255
1259
 
1256
- def relaxed_combine_rows(self, *other) -> "SingleCellExperiment":
1260
+ def relaxed_combine_rows(self, *other) -> SingleCellExperiment:
1257
1261
  """Wrapper around :py:func:`~relaxed_combine_rows`."""
1258
1262
  return relaxed_combine_rows(self, *other)
1259
1263
 
1260
- def relaxed_combine_columns(self, *other) -> "SingleCellExperiment":
1264
+ def relaxed_combine_columns(self, *other) -> SingleCellExperiment:
1261
1265
  """Wrapper around :py:func:`~relaxed_combine_columns`."""
1262
1266
  return relaxed_combine_columns(self, *other)
1263
1267
 
1264
- def combine_rows(self, *other) -> "SingleCellExperiment":
1268
+ def combine_rows(self, *other) -> SingleCellExperiment:
1265
1269
  """Wrapper around :py:func:`~combine_rows`."""
1266
1270
  return combine_rows(self, *other)
1267
1271
 
1268
- def combine_columns(self, *other) -> "SingleCellExperiment":
1272
+ def combine_columns(self, *other) -> SingleCellExperiment:
1269
1273
  """Wrapper around :py:func:`~combine_columns`."""
1270
1274
  return combine_columns(self, *other)
1271
1275
 
@@ -1,32 +0,0 @@
1
- name: Run tests
2
-
3
- on:
4
- push:
5
- branches: [master]
6
- pull_request:
7
-
8
- jobs:
9
- build:
10
- runs-on: ubuntu-latest
11
- strategy:
12
- matrix:
13
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
14
-
15
- name: Python ${{ matrix.python-version }}
16
- steps:
17
- - uses: actions/checkout@v4
18
-
19
- - name: Setup Python
20
- uses: actions/setup-python@v5
21
- with:
22
- python-version: ${{ matrix.python-version }}
23
- cache: "pip"
24
-
25
- - name: Install dependencies
26
- run: |
27
- python -m pip install --upgrade pip
28
- pip install tox
29
-
30
- - name: Test with tox
31
- run: |
32
- tox