scitex-session
`@session` decorator + lifecycle (auto-CLI, output dir tree, randomstate, configs).
Full Documentation · uv pip install scitex-session[all]
Installation
pip install scitex-session
Architecture
src/scitex_session/
├── __init__.py # public re-exports (session, INJECTED, start, close, ...)
├── _decorator.py # @session — auto-CLI + DI + output-dir lifecycle
├── _manager.py # SessionManager (class-style alternative)
├── _lifecycle/ # start / close / FINISHED_SUCCESS dir tree
└── template.py # boilerplate template for new scripts
flowchart LR
fn["@sess.session\ndef main(...)"] --> cli["auto-CLI\n(argparse from signature)"]
cli --> inject["DI: CONFIG / logger / plt / rng"]
cfg["./config/*.yaml"] --> inject
inject --> body["main() body"]
body --> save["stx.io.save"]
save --> rundir[("script_out/FINISHED_SUCCESS/<ID>/")]
rundir --> cfgsnap[("CONFIGS/CONFIG.yaml")]
rundir --> logs[("logs/{stdout,stderr}.log")]
rundir --> outputs[("results.csv, plots, ...")]
1 Interfaces
Python API
import scitex_session as sess
# Decorator — wraps main() with auto-CLI, output dir, configs, RNG.
@sess.session
def main(CONFIG=sess.INJECTED, logger=sess.INJECTED, rng=sess.INJECTED):
...
# Manual lifecycle (advanced / internal — prefer the decorator above).
# `_start` is the low-level entry point: `_start(sys, plt, ...)`, NOT a
# decorator. The bare `sess.start` name is deprecated.
sess._start(sys, plt, ...)
sess.close(CONFIG)
# Class-style manager
mgr = sess.SessionManager()
Demo
sequenceDiagram
participant User as $ python script.py --param1 X
participant Dec as @sess.session
participant Main as main()
participant FS as Filesystem
User->>Dec: invoke
Dec->>Dec: parse args, fix RNG, build CONFIG
Dec->>FS: mkdir script_out/RUNNING_<ID>/
Dec->>Main: call(CONFIG, logger, rng, plt)
Main->>FS: stx.io.save(...)
Main-->>Dec: return 0
Dec->>FS: rename → FINISHED_SUCCESS/<ID>/
Dec->>FS: write CONFIGS/CONFIG.yaml + logs/
Quick Start
import scitex_session as sess
@sess.session
def main(
param1="default",
CONFIG=sess.INJECTED,
plt=sess.INJECTED,
logger=sess.INJECTED,
rng=sess.INJECTED,
):
"""Docstring becomes --help."""
logger.info("hi")
return 0
Status
Standalone fork of scitex.session. Deps: matplotlib + scitex-dict /
-logging / -repro / -str (already-standalone peer packages).
Decoupling notes:
scitex.dict.DotDict→scitex_dict.DotDictscitex.repro.RandomStateManager / gen_ID→scitex_repro.*scitex.str.clean_path / printc→scitex_str.*scitex.logging.getLogger→ stdliblogging.getLoggerscitex.plt.utils._configure_mpl→ optional viatry/exceptwith no-op fallback (matplotlib uses defaults if scitex umbrella isn't installed).scitex.utils._notify→ optional viatry/except(silent no-op fallback).
The umbrella package's scitex.session import path is preserved via a
sys.modules-alias bridge.
Part of SciTeX
scitex-session is part of SciTeX. Install via
the umbrella with pip install scitex[session] to use as
scitex.session (Python) or scitex session ... (CLI).
Four Freedoms for Research
- The freedom to run your research anywhere — your machine, your terms.
- The freedom to study how every step works — from raw data to final manuscript.
- The freedom to redistribute your workflows, not just your papers.
- The freedom to modify any module and share improvements with the community.
AGPL-3.0 — because we believe research infrastructure deserves the same freedoms as the software it runs on.
License
AGPL-3.0-only (see LICENSE).
Metadata
Release files for scitex-session 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scitex_session-0.3.1.tar.gz | 63.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scitex_session-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 139.8 kB
Release files / scitex_session-0.3.1.tar.gz
| Download URL | scitex_session-0.3.1.tar.gz |
|---|---|
| Size | 63.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
04851af8c7c39889e2d637c4e51bb4711d6c10ed45388e93df9c5ea305cf1588
|
|
BLAKE2b-256 checksum How to use checksums |
19e8905048d4761dce6846c43a3d16afecaa218f289f18fa1bda953fab7c4481
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / scitex_session-0.3.1-py3-none-any.whl
| Download URL | scitex_session-0.3.1-py3-none-any.whl |
|---|---|
| Size | 75.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
91c8f551231acb945ff20478e347812526d86626c254be071214ece6b5f05190
|
|
BLAKE2b-256 checksum How to use checksums |
e8f061082dfdbf5174e69b74965650d9911f38321e7f64abf9d75b6ac4a3e606
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for scitex-session 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.