$ bash -e -o pipefail -c uv pip install -e ".[dev]" spacy langcodes py3langid Resolved 85 packages in 117ms Building yasbd-lib @ file:///home/runner/work/yasbd-lib/yasbd-lib Built yasbd-lib @ file:///home/runner/work/yasbd-lib/yasbd-lib Prepared 1 package in 949ms Installed 85 packages in 92ms + annotated-doc==0.0.5 + annotated-types==0.8.0 + anyio==4.15.1 + black==23.12.1 + blis==1.3.3 + catalogue==2.0.10 + certifi==2026.7.22 + cfgv==3.5.0 + charset-normalizer==3.5.2 + click==8.5.0 + cloudpathlib==0.26.0 + confection==1.3.3 + coverage==7.16.2 + cymem==2.0.13 + databind==4.5.5 + databind-core==4.5.5 + databind-json==4.5.5 + deprecated==1.3.1 + distlib==0.4.3 + docspec==2.2.2 + docspec-python==2.2.1 + docstring-parser==0.11 + filelock==4.1.0 + h11==0.16.0 + httpcore==1.0.9 + httpx==0.28.1 + identify==2.6.20 + idna==3.20 + iniconfig==2.3.1 + jinja2==3.1.6 + langcodes==3.5.1 + markdown-it-py==4.2.0 + markupsafe==3.0.4 + mdurl==0.1.2 + murmurhash==1.0.15 + mypy-extensions==1.1.0 + nodeenv==1.11.0 + nr-date==2.1.0 + nr-stream==1.1.5 + nr-util==0.8.12 + numpy==2.5.3 + packaging==26.3 + pathspec==1.1.1 + platformdirs==4.12.4 + pluggy==1.6.0 + pre-commit==4.6.2 + preshed==3.0.13 + py3langid==0.4.0 + pydantic==2.14.0 + pydantic-core==2.50.0 + pydoc-markdown==4.8.2 + pygments==2.21.0 + pytest==9.1.1 + pytest-cov==7.1.0 + python-discovery==1.6.2 + pyyaml==6.0.3 + radicli==0.0.26 + regex==2026.9.29 + requests==2.34.2 + retrie==0.3.1 + rich==15.0.0 + ruff==0.17.0 + setuptools==84.0.0 + shellingham==1.5.4 + smart-open==8.0.2 + spacy==3.8.16 + spacy-legacy==3.0.12 + spacy-loggers==1.0.5 + srsly==2.5.4 + thinc==8.3.13 + tomli==2.5.0 + tomli-w==1.2.0 + tqdm==4.70.1 + typeapi==2.3.0 + typer==0.27.3 + typing-extensions==4.16.0 + typing-inspection==0.4.4 + urllib3==2.8.0 + virtualenv==21.14.6 + wasabi==1.1.3 + watchdog==6.0.0 + weasel==1.0.0 + wrapt==2.5.0 + yapf==0.43.0 + yasbd-lib==1.0.2 (from file:///home/runner/work/yasbd-lib/yasbd-lib) $ bash -e -o pipefail -c uv run pytest -v --tb=short ============================= test session starts ============================== platform linux -- Python 3.12.15, pytest-9.1.1, pluggy-1.6.0 -- /home/runner/work/yasbd-lib/yasbd-lib/.venv/bin/python cachedir: .pytest_cache rootdir: /home/runner/work/yasbd-lib/yasbd-lib configfile: pyproject.toml testpaths: tests, src/yasbd/utils, src/yasbd/cli.py plugins: platformdirs-4.12.4, cov-7.1.0, anyio-4.15.1 collecting ... collected 140 items tests/test_boundary_detector.py::test_segment_empty_input[] PASSED [ 0%] tests/test_boundary_detector.py::test_segment_empty_input[ ] PASSED [ 1%] tests/test_boundary_detector.py::test_segment_empty_input[\n\n\n] PASSED [ 2%] tests/test_boundary_detector.py::test_segment_empty_input[empty_stream] PASSED [ 2%] tests/test_boundary_detector.py::test_invalid_lang[None-InvalidInputError-'lang' is required] PASSED [ 3%] tests/test_boundary_detector.py::test_invalid_lang[-InvalidInputError-'lang' is required] PASSED [ 4%] tests/test_boundary_detector.py::test_invalid_lang[xx-UnsupportedLanguageError-doesn't fit any cutting profile] PASSED [ 5%] tests/test_boundary_detector.py::test_segment_different_input PASSED [ 5%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] SUBPASSED() [ 6%] tests/test_boundary_detector Full transcript in the execution-proof artifact. $ bash -e -o pipefail -c uv run pytest --cov-report=xml ============================= test session starts ============================== platform linux -- Python 3.12.15, pytest-9.1.1, pluggy-1.6.0 rootdir: /home/runner/work/yasbd-lib/yasbd-lib configfile: pyproject.toml testpaths: tests, src/yasbd/utils, src/yasbd/cli.py plugins: platformdirs-4.12.4, cov-7.1.0, anyio-4.15.1 collected 140 items tests/test_boundary_detector.py ........................................ [ 28%] ................. [ 40%] tests/test_lang_packs.py ........ [ 46%] tests/test_paragraph_limits.py ... [ 48%] tests/test_pysbd_adapter.py ........ [ 54%] tests/test_regex_caching.py .. [ 55%] tests/test_spacy_component.py .... [ 58%] tests/test_universal_regression.py ..................................... [ 85%] ........... [ 92%] src/yasbd/utils/cleaner.py . [ 93%] src/yasbd/utils/input_validator.py . [ 94%] src/yasbd/utils/lang_code_normalizer.py . [ 95%] src/yasbd/utils/language_classifier.py . [ 95%] src/yasbd/utils/logger.py . [ 96%] src/yasbd/utils/paragraph_stream.py . [ 97%] src/yasbd/cli.py .... [100%] ================================ tests coverage ================================ _______________ coverage: platform linux, python 3.12.15-final-0 _______________ Name Stmts Miss Cover Missing ----------------------------------------------------------------------- src/yasbd/__init__.py 15 2 87% 16-17 src/yasbd/boundary_detector.py 133 11 92% 101, 121, 124-126, 139-141, 178-179, 202 src/yasbd/rules/__init__.py 58 4 93% 71-72, 137, 144 src/yasbd/rules/base.py 75 1 99% 451 src/yasbd/utils/cleaner.py 87 3 97% 111, 255, 278 src/yasbd/utils/lang_code_normalizer.py 19 3 84% 10, 72-73 src/yasbd/utils/paragraph_stream.py 59 3 95% 104-106 src/yasbd/utils/pysbd_adapter.py 78 6 92% 32, 35, 77, 81-83 ----------------------------------------------------------------------- TOTAL 1078 33 97% 46 files skipped due to complete coverage. Coverage XML written to file coverage.xml ============================= slowest 10 durations ============================= 0.40s call src/yasbd/utils/language_classifier.py::yasbd.utils.language_classifier.classify_language 0.37s call tests/test_spacy_component.py::test_lang_defaults_to_pipeline_lang 0.19s call tests/test_boundary_detector.py::test_segment_multiple_langs[es-test_data31] 0.19s call tests/test_boundary_detector.py::test_segment_multiple_langs[af-test_data0] 0.17s call tests/test_boundary_detector.py::test_segment_multiple_langs[nl-test_data10] 0.16s call tests/test_boundary_detector.py::test_segment_multiple_langs[de-test_data13] 0.15s call tests/test_boundary_detector.py::test_segment_multiple_langs[da-test_d Full transcript in the execution-proof artifact. $ uv run python .proof/demo.py {"input": "Alpha. Beta. Gamma. Delta.", "sentences": ["Alpha.", " Beta.", " Gamma.", " Delta."], "lossless": true}