Metadata-Version: 2.5
Name: gp3sequencespy
Version: 0.1.1
Summary: Transparent, reproducible, and auditable analysis of ordered categorical sequences in Python.
Project-URL: Homepage, https://stefanosbalaskas.github.io/gp3sequencespy/
Project-URL: Documentation, https://stefanosbalaskas.github.io/gp3sequencespy/
Project-URL: Source, https://github.com/stefanosbalaskas/gp3sequencespy
Project-URL: Issues, https://github.com/stefanosbalaskas/gp3sequencespy/issues
Project-URL: Changelog, https://github.com/stefanosbalaskas/gp3sequencespy/blob/main/CHANGELOG.md
Project-URL: Archive, https://doi.org/10.5281/zenodo.22166449
Author: Stefanos Balaskas
Maintainer: Stefanos Balaskas
License-Expression: MIT
License-File: LICENSE
Keywords: categorical-sequences,eye-tracking,reproducibility,scanpaths,sequence-analysis
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.11
Requires-Dist: matplotlib>=3.8
Requires-Dist: networkx>=3.2
Requires-Dist: numpy>=1.26
Requires-Dist: pandas>=2.1
Requires-Dist: scipy>=1.11
Provides-Extra: data
Requires-Dist: polars>=1; extra == 'data'
Requires-Dist: pyarrow>=17; extra == 'data'
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: hypothesis>=6; extra == 'dev'
Requires-Dist: mypy>=1.15; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.12; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.6; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.29; extra == 'docs'
Provides-Extra: hmm
Requires-Dist: hmmlearn>=0.3.3; extra == 'hmm'
Provides-Extra: performance
Requires-Dist: numba>=0.61; extra == 'performance'
Provides-Extra: release
Requires-Dist: twine>=6; extra == 'release'
Requires-Dist: validate-pyproject>=0.24; extra == 'release'
Provides-Extra: time
Requires-Dist: mssm<1.3,>=1.2.5; extra == 'time'
Description-Content-Type: text/markdown

# gp3sequencespy

Zenodo archive DOI: [10.5281/zenodo.22166449](https://doi.org/10.5281/zenodo.22166449)

`gp3sequencespy` is the Python implementation of **gp3sequences 0.3.0**, providing transparent, reproducible, and auditable analysis of ordered categorical sequences and scanpaths.

The frozen R 0.3.0 tarball is the behavioral reference. Development is parity-first: preserve the frozen scientific contracts, validate them explicitly, and only then add Python-native extensions.

## Version 0.1.1 status

- **81 / 81** frozen R public function counterparts are present and exported.
- **81 / 81** frozen R public signatures have been audited; every difference is either structurally matched or explicitly classified as an R→Python semantic/plotting translation.
- **130 / 130** frozen R `test_that()` blocks have dedicated Python translation tests recorded in `PARITY_TEST_MATRIX.md`.
- The current Python suite contains **182 tests**, including documentation, release-contract, and R-hclust oracle-regression tests.
- GitHub Actions covers Linux, macOS, and Windows with Python 3.11–3.14, a dedicated Ruff/mypy/frozen-contract quality job, and a fresh-wheel smoke build.
- Fifteen Python-native articles port the full frozen R vignette set, with MkDocs documentation under `docs/`.
- The deterministic core, hierarchical/PAM, and time-varying-model cross-language oracle tranches have been executed against frozen R 0.3.0; remaining deliberate boundaries are documented in `PARITY_EXCEPTIONS.md`.

Documentation: https://stefanosbalaskas.github.io/gp3sequencespy/

Version **0.1.1** is a metadata and release-infrastructure maintenance release over the frozen 0.1.0 scientific implementation. It does **not** change the 81-function public scientific API or the frozen R 0.3.0 parity contracts. It corrects the PyPI-facing release wording, records the Zenodo archive DOI, and uses token-free PyPI Trusted Publishing.

## Installation

For development installs from the repository:

```bash
uv sync --extra time
```

From PyPI:

```bash
pip install gp3sequencespy==0.1.1
```

The original `v0.1.0` scientific release remains immutable. Stable releases from `0.1.1` onward publish the exact GitHub Release wheel and source distribution to PyPI through the registered Trusted Publisher described in `PYPI_PUBLISHING.md`.

## Reproducibility and release governance

- Frozen-reference details: `REPRODUCIBILITY.md`
- Known parity boundaries: `PARITY_EXCEPTIONS.md`
- Release gates: `RELEASE_CHECKLIST.md`
- Changelog: `CHANGELOG.md`
- Citation metadata: `CITATION.cff`
- Contribution guidance: `CONTRIBUTING.md`
- PyPI publishing and Trusted Publishing: `PYPI_PUBLISHING.md`

## Scientific interpretation guardrail

Sequence structure does not independently establish emotion, cognition, comprehension, personality, intention, deception, diagnosis, or causality. Observational group contrasts are associational unless a valid randomized design supports a causal interpretation.
