Skip to content

Commit fa9a4ce

Browse files
authored
Merge pull request #51 from GavinHuttley/main
Maint
2 parents 38bf1f4 + 0675b17 commit fa9a4ce

10 files changed

Lines changed: 24 additions & 24 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
lname="snx-${{matrix.os}}-${{matrix.python-version}}.lcov"
4848
xname="snx-${{matrix.os}}-${{matrix.python-version}}.xml"
4949
cov="lcov -o$lname xml -o$xname"
50-
uv run --group test nox --force-python python -s testcov -- $cov
50+
uv run --group dev nox --force-python python -s testcov -- $cov
5151
5252
- name: Coveralls Parallel
5353
uses: coverallsapp/github-action@v2
@@ -83,7 +83,7 @@ jobs:
8383

8484
- name: "Run Type Checking for ${{ matrix.python-version }}"
8585
run: |
86-
uv run --group test nox --force-python python -s type_check
86+
uv run --group dev nox --force-python python -s type_check
8787
8888
finish:
8989
name: "Finish Coveralls"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
[![Coverage Status](https://coveralls.io/repos/github/cogent3/scinexus/badge.svg?branch=main)](https://coveralls.io/github/cogent3/scinexus?branch=main) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/fd8810efd4f142069bd84144e14350b4)](https://app.codacy.com/gh/cogent3/scinexus/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![CI](https://github.com/cogent3/scinexus/actions/workflows/ci.yml/badge.svg)](https://github.com/cogent3/scinexus/actions/workflows/ci.yml)
66

7-
*`scinexus` is a framework for rapid development of data processing applications. It enables interoperability between objects through defined data types, allowing development of scientific domain app ecosystems. What `dataclasses` and `attrs` do for declaring data, `scinexus` does for declaring algorithms.*
7+
*`scinexus` is a framework for rapid development of data processing applications. It enables interoperability between objects through defined data types, allowing development of scientific domain app ecosystems. Just as `attrs` and `dataclasses` use type hints to simplify data type definition, `scinexus` uses them to simplify writing best-practice scientific algorithms.*
88

99
Many scientific problems require repeating calculations across many files or database records. Such tasks suit data-level parallelism, but writing robust, maintainable code for them is often tedious and quickly becomes complex.
1010

docs/explanation/why-composable-apps.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ As the robustness of POSIX based operating systems (think Linux, Mac OS, Unix) c
1616

1717
**`scinexus` encourages this design pattern.** We leverage the Python type annotation system to govern the compatibility (composability) of different applications. This enables in-process composition of your applications with validation of the consistency of the pipeline and the consistency of the data being run through it.
1818

19-
We can expand on this slightly for the problem of scientific computation by considering the critical benchmark of satisfying the conditions for reproducibile computation, i.e. the obligation to track all of the properties affecting the execution of your algorithm. Examples of this are the operating system, the language version, the seed used for the random number generator, etc.
19+
We can expand on this slightly for the problem of scientific computation by considering the critical benchmark of satisfying the conditions for reproducible computation, i.e. the obligation to track all of the properties affecting the execution of your algorithm. Examples of this are the operating system, the language version, the seed used for the random number generator, etc.
2020

21-
**`scinexus` does this for you.** For example, we intercept all arguments (including default values) passed to the construction of apps and record them so that the app state is logged. If you, the developer, also leverage the capabilities of the [`scitrack`](https://pypi.org/project/scitrack/) logging package (which `scinexus` has as a dependency), you can capture extra information such as versions of packages that your application depends on. We provide an [example][leveraging-scitrack-for-reproducibility] of using `scitrack` for these cases.
21+
**`scinexus` does this for you.** For example, we intercept all arguments (including default values) passed to the construction of apps and record them so that the app state is logged. If you, the developer, also leverage the capabilities of the [`scitrack`](https://pypi.org/project/scitrack/) logging package (which `scinexus` has as a dependency), you can capture extra information such as versions of packages that your application depends on. We provide an [example](../howto/log-and-cite.md#leveraging-scitrack-for-reproducibility) of using `scitrack` for these cases.
2222

2323
## Improve the accessibility of your work for end users
2424

docs/howto/handle-failures.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ exec_codeblock(src=src, max_lines=4, admonition='???- example "Example"')
8989
# NotCompleted(type=ERROR, origin=load_aligned, source="primate_brca1",
9090
# message="Traceback (most recent call last): File
9191
# "/Users/gavin/repos/SciNexus/src/scinexus/composable.py", line 545, in __call__
92-
# result = self.main(val, *args, **kwargs) File [...]
92+
# result = self.main(val, *args, **kwargs) [...]
9393
```
9494
<!-- [[[end]]] -->
9595

docs/howto/run-in-parallel.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ On systems with multiple nodes (e.g. an HPC cluster), use MPI via the [mpi4py](h
145145
pip install mpi4py
146146
```
147147

148-
or installing `scinexus` [with `mpi` extra][optional-extras].
148+
or installing `scinexus` [with `mpi` extra](../install.md#optional-extras).
149149

150150
Set the backend to MPI:
151151

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
# About
77

8-
!!! abstract "*What `dataclasses` and `attrs` do for declaring data, `scinexus` does for declaring algorithms.*"
8+
!!! abstract "*Just as `attrs` and `dataclasses` use type hints to simplify data type definition, `scinexus` uses them to simplify writing best-practice scientific algorithms.*"
99

1010
`scinexus` (pronounced 'sigh-nexus') is a Python framework for rapid development of data processing applications. It enables interoperability between apps through defined data types, allowing development of scientific domain app ecosystems (for examples see [cogent3](https://cogent3.org/doc/app/index-app.html) and [piqtree](https://piqtree.readthedocs.io/en/stable/)).
1111

docs/tutorials/composing-apps.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,13 @@ annotations=[
159159
# NotCompleted(type=ERROR, origin=load_aligned, source="primate_brca1",
160160
# message="Traceback (most recent call last): File
161161
# "/Users/gavin/repos/SciNexus/src/scinexus/composable.py", line 545, in __call__
162-
# result = self.main(val, *args, **kwargs) File
163-
# "/Users/gavin/repos/SciNexus/.venv/lib/python3.14/site-
162+
# result = self.main(val, *args, **kwargs)
163+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
164+
# "/Users/gavin/repos/SciNexus/.venv/lib/python3.12/site-
164165
# packages/cogent3/app/io.py", line 334, in main return _load_seqs(path,
165-
# cogent3.make_aligned_seqs, self._parser, self.moltype) File
166-
# "/Users/gavin/repos/SciNexus/.venv/lib/python3.14/site-
167-
# packages/cogent3/app/io.py", line 294, in _load_seqs data = _read_it(path)
168-
# File [...]
166+
# cogent3.make_aligned_seqs, self._parser, self.moltype)
167+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
168+
# "/Users/gavin/repos/SciNexus/.venv/lib/python3.12/site- [...]
169169
```
170170

171171
1. An error during load — `select_seqs` is never called.

noxfile.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,26 @@ def fmt(session: nox.Session) -> None:
2323

2424
@nox.session(python="3.14")
2525
def cogdocs(session: nox.Session) -> None:
26-
session.install("-e", ".", "--group", "test")
27-
cmnd = 'find docs -name "*.md" | xargs uv run --group test cog -r -I docs/scripts'
26+
session.install("-e", ".", "--group", "dev")
27+
cmnd = 'find docs -name "*.md" | xargs uv run --group dev cog -r -I docs/scripts'
2828
subprocess.run(cmnd, check=True, shell=True) # noqa: S602
2929

3030

3131
@nox.session(python=[f"3.{v}" for v in _py_versions])
3232
def type_check(session):
33-
session.install("-e", ".", "--group", "test")
33+
session.install("-e", ".", "--group", "dev")
3434
session.run("mypy", "src/scinexus/")
3535

3636

3737
@nox.session(python=[f"3.{v}" for v in _py_versions])
3838
def test_types(session):
39-
session.install("-e", ".", "--group", "test")
39+
session.install("-e", ".")
4040
session.run("mypy", "src/scinexus/")
4141

4242

4343
@nox.session(python=[f"3.{v}" for v in _py_versions])
4444
def test(session):
45-
session.install("-e", ".", "--group", "test")
45+
session.install("-e", ".", "--group", "dev")
4646
session.run("uv", "pip", "list")
4747
# doctest modules within scinexus
4848
session.chdir("src/scinexus")
@@ -67,7 +67,7 @@ def test(session):
6767

6868
@nox.session(python=[f"3.{v}" for v in _py_versions])
6969
def testmpi(session):
70-
session.install("-e", ".[mpi]", "--group", "test")
70+
session.install("-e", ".[mpi]")
7171
session.chdir("tests")
7272
py = pathlib.Path(session.bin_paths[0]) / "python"
7373
session.run(
@@ -91,7 +91,7 @@ def testmpi(session):
9191

9292
@nox.session(python=[f"3.{v}" for v in _py_versions])
9393
def testcov(session):
94-
session.install("-e", ".", "--group", "test")
94+
session.install("-e", ".", "--group", "dev")
9595
cover_mpi = shutil.which("mpiexec") is not None
9696
if cover_mpi:
9797
session.install("-e", ".[mpi]")
@@ -162,7 +162,7 @@ def testcov(session):
162162

163163
@nox.session(python=[f"3.{v}" for v in _py_versions])
164164
def test_docs(session):
165-
session.install("-e", ".", "--group", "test")
165+
session.install("-e", ".", "--group", "dev")
166166
session.run("uv", "pip", "list")
167167
# doctest modules within scinexus
168168
session.chdir("docs")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ mpi = ["mpi4py"]
3838
rich = ["rich"]
3939

4040
[dependency-groups]
41-
test = [
41+
dev = [
4242
"pymdown-extensions>=10.21.2",
4343
"zensical>=0.0.33",
4444
"cogent3[extra]>=2026.4.20a0",

src/scinexus/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2026.4.25b0"
1+
__version__ = "2026.4.25"

0 commit comments

Comments
 (0)