Skip to main content

scitex-logging

SciTeX

Logging utilities for SciTeX — SUCCESS/FAIL log levels, typed exception hierarchy, Tee context-manager.

Full Documentation · uv pip install scitex-logging[all]

pypi python docs

tests install-check cov


Problem and Solution

# Problem Solution
1 stdlib logging has only 5 levels -- experiment scripts want a distinct SUCCESS and FAIL signal that stands out in grep SUCCESS + FAIL levels added -- color-coded, level-aware handlers; drop-in compatible with getLogger(__name__)
2 raise ValueError("shape mismatch") loses context -- every package rolls its own exception hierarchy 30+ typed exceptions -- SciTeXError root + ShapeError, DTypeError, ConfigKeyError, PDFDownloadError, ...; isinstance(e, DataError) catches the whole class
3 Tee stdout-to-file is a recipe -- every script implements it differently Tee("run.log") context-manager -- one import, no boilerplate

Installation

pip install scitex-logging

1 Interfaces

Python API
import scitex_logging

# Configure logging
scitex_logging.configure(level=scitex_logging.INFO, enable_file=True)

# Get a logger
import logging
logger = logging.getLogger(__name__)
logger.info("Hello from SciTeX logging")

# Tee stdout/stderr to log files
import sys
sys.stdout, sys.stderr = scitex_logging.tee(sys)

# Custom error classes
from scitex_logging import SciTeXError, SaveError

# Warning utilities
from scitex_logging import warn_deprecated, warn_performance

# LLM session log parsing
log = scitex_logging.llm.load("session.jsonl")
log.summary()
log.render("out.html")

Use getLogger() for diagnostics, getConsole() for formatted stdout, and getPlainConsole() for exact result lines. See stream behavior for filtering, caller-owned streams, and configuration ownership.

Architecture

scitex_logging/
├── _config.py            ← `configure()` entry point + level registration
├── _levels.py            ← SUCCESS / FAIL custom log levels
├── _Tee.py               ← stdout/stderr Tee context-manager
├── _errors.py            ← 30+ typed `SciTeXError` subclasses
├── _warnings.py          ← `warn_deprecated`, `warn_performance`
└── llm/                  ← Claude / LLM session-log parsers

Demo

flowchart LR
    A[script.py] -->|getLogger| B[scitex_logging]
    B --> C{level}
    C -->|SUCCESS| D[green log + Tee → run.log]
    C -->|FAIL| E[red log + Tee → run.log]
    C -->|ERROR| F[typed SciTeXError raised]
import logging, scitex_logging as sxl

sxl.configure(level=sxl.INFO, enable_file=True)
log = logging.getLogger(__name__)

log.success("model converged")    # green
log.fail("validation failed")     # red, distinct from ERROR
2026-05-07 12:00:00 SUCCESS  model converged
2026-05-07 12:00:01 FAIL     validation failed

Part of SciTeX

scitex-logging is part of SciTeX. Install via the umbrella with pip install scitex[logging] to use as scitex.logging (Python).

Four Freedoms for Research

  1. The freedom to run your research anywhere — your machine, your terms.
  2. The freedom to study how every step works — from raw data to final manuscript.
  3. The freedom to redistribute your workflows, not just your papers.
  4. 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.


SciTeX

Metadata

Release files for scitex-logging 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scitex-logging 0.2.3
File Size Uploaded
scitex_logging-0.2.3.tar.gz 508.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scitex-logging 0.2.3
File Interpreter ABI Platform
scitex_logging-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 600.3 kB

Release files / scitex_logging-0.2.3.tar.gz

Download URL scitex_logging-0.2.3.tar.gz
Size 508.0 kB
Tags Source
SHA-256 checksum
How to use checksums
eab46e37b47054cec158e72bd81c06fdb76f1430b95ccba43e65576c503a7a80
BLAKE2b-256 checksum
How to use checksums
6d4df30e9ad970fd025a74856a70cfb52815aed0a5501de01048884d53ca5c1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / scitex_logging-0.2.3-py3-none-any.whl

Download URL scitex_logging-0.2.3-py3-none-any.whl
Size 92.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63a2f2b2199e3c2362fec57d4ed3dd5387673146936c8eae56078cc30b6c94dc
BLAKE2b-256 checksum
How to use checksums
e8beab64701bc1424183d02f1ab5c9560b1ccb34953376bd8018ff0a639fcff8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page