Core infrastructure and fundamental utilities for the SciTeX ecosystem
Project description
scitex-core
Core infrastructure for the SciTeX ecosystem.
Overview
scitex-core provides shared utilities used across all SciTeX packages:
- logging: Enhanced logging with colored output and file support
- errors: Common error classes with rich context
- sh: Safe shell command execution
- str: String utilities including ANSI color formatting
- path: File path and directory utilities
- repro: Reproducibility utilities (ID generation, random state management)
- types: Shared type definitions and validators
Installation
pip install scitex-core
Usage
Logging
from scitex_core import logging
logger = logging.getLogger(__name__)
logger.info("Hello from scitex-core!")
logger.success("Operation completed")
Path Utilities
from scitex_core import path
# Find files
py_files = path.find_file("/home/user/project", "*.py")
# Get current script path
script_path = path.this_path()
# Find git repository root
git_root = path.find_git_root()
# Clean and normalize paths
cleaned = path.clean("path/with/../spaces ")
Reproducibility
from scitex_core.repro import RandomStateManager, gen_id
# Random state management
rng_manager = RandomStateManager(seed=42)
data_gen = rng_manager("data")
data = data_gen.random(100)
# Verify reproducibility
rng_manager.verify(data, "my_data")
# Generate unique IDs
exp_id = gen_id() # "2025Y-11M-10D-12h30m45s_aB3xY9z2"
Type Definitions
from scitex_core.types import ArrayLike, is_array_like, is_list_of_type
def process_data(data: ArrayLike) -> None:
if is_array_like(data):
print("Valid array-like data")
numbers = [1, 2, 3, 4]
if is_list_of_type(numbers, int):
print("All elements are integers")
Packages Using scitex-core
scitex-writer- Academic writing and LaTeX compilationscitex-scholar- Research paper managementscitex-io- Scientific data I/Oscitex- Main package
Development
# Clone repository
git clone https://github.com/ywatanabe1989/scitex-core
# Install in editable mode
cd scitex-core
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run tests with coverage
pytest --cov=src/scitex_core --cov-report=html tests/
# Quick test (no dependencies)
python3 tests/simple_runner.py
Testing
The project has comprehensive test coverage:
- 161+ test methods across 30+ test classes
- 3 test modules: errors, sh, logging
- Multiple test runners: pytest, simple_runner.py, run_tests.sh
See tests/README.md for detailed testing documentation.
Quick Test
# No installation required
python3 tests/simple_runner.py
Full Test Suite
# Install dependencies
pip install -e ".[dev]"
# Run all tests
pytest tests/ -v
# Generate coverage report
./tests/run_tests.sh -c -h
open htmlcov/index.html
License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scitex_core-0.2.0.tar.gz.
File metadata
- Download URL: scitex_core-0.2.0.tar.gz
- Upload date:
- Size: 108.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1a7985df9a039a0fe70d3e289cfebb64d579223caaf0b2ecc18167334e954da
|
|
| MD5 |
7e082f27e9308e9b7c6c7c900d83387b
|
|
| BLAKE2b-256 |
b4d24dca9d4b466f326e3dc9a5df7e97e8fda43601a904ec4363128948ab3cdb
|
File details
Details for the file scitex_core-0.2.0-py3-none-any.whl.
File metadata
- Download URL: scitex_core-0.2.0-py3-none-any.whl
- Upload date:
- Size: 104.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aeb55478254efc70a911e39e21e6fd521aec3b999b3f8ab88398d21a53e6c48
|
|
| MD5 |
16d46e592dfc94132ff546b87e497cf0
|
|
| BLAKE2b-256 |
a137e9bf3525bf711b9c18367f0f83a4de5605565225b7be3d3a766c2c3ad8fb
|