Something went wrong. Try again.
Command line interface for accessing the Open Web Index shards and slices.
Something went wrong. Try again.
OWILIX Core Manager Package #
The owilix.core.manager package provides centralized configuration, session management, logging, and UI utilities.
Package Structure #
owilix/core/manager/
├── __init__.py # Package exports
├── env.py # OWILIXEnv singleton
├── config.py # Pydantic configuration models
├── session.py # OWILIXSession wrapper
├── manager.py # OWILIXManager class
├── ui.py # Console and progress utilities
└── logging.py # DBLog transaction logging
Architecture #
The core architecture revolves around the OWIlixManager, which acts as the central hub for:
- Configuration: Managing
OWIlixConfigand environment variables. - Session: Holding the
OWILIXSession(wrappingpy4lexissession) for authentication. - Repositories: Creating and aggregating
AbstractRepositoryinstances (Local, Lexis, etc.).
Component Interaction #
graph TD
CLI[OWILIX CLI] --> Manager[OWIlixManager]
Manager --> Config[OWIlixConfig]
Manager --> Session[OWILIXSession]
Manager --> Remote[AggregatedRepository]
Manager --> Local[LocalRepository]
Session --> Lexis[LexisSession (py4lexis)]
Remote --> LexisRepo[LexisRepository]
LexisRepo --> FS[Http2IrodsFileSystem]
FS --> Lexis
Reference Documentation #
Quick Start #
from owilix.core.manager import OWILIXManager, OWILIXEnv
# Environment configuration (singleton)
env = OWILIXEnv.values
print(f"Project: {env.project_name}")
print(f"Path: {env.owi_path}")
# Manager (orchestrates config, session, repos)
manager = OWILIXManager()
session = manager.session # OWILIXSession wrapper
Components #
OWILIXEnv #
Singleton for environment variables.
| Variable | Default | Description |
|---|---|---|
OWILIX_LEXIS_PROJECT_NAME |
openwebsearch |
Project name |
OWILIX_LEXIS_PROJECT_ID |
Auto-generated | Project ID |
OWS_OWI_PATH |
~/.owi |
Base path |
OWILIX_IRODS_CONNECTION_TIMEOUT |
120 |
Timeout (seconds) |
.. autoclass:: owilix.core.manager.OWILIXEnv
:members:
OWILIXSettings (Pydantic) #
Type-safe configuration with validation.
from owilix.core.manager import OWILIXSettings, RepositoryConfig
settings = OWILIXSettings()
repo = RepositoryConfig(repository="lexis+http", options={"zone": "IT4ILexisV2"})
.. autoclass:: owilix.core.manager.OWILIXSettings
:members:
OWILIXSession #
Unified wrapper for LexisSession and iRODS access.
session = manager.session
# Access LEXIS API
token = session.lexis.get_access_token()
# Access iRODS (lazy-loaded)
irods = session.irods
# Get HTTP client with fresh token
client = session.get_irods_client()
.. autoclass:: owilix.core.manager.OWILIXSession
:members:
OWILIXManager #
Central orchestrator for OWILIX operations.
.. autoclass:: owilix.core.manager.OWILIXManager
:members:
:show-inheritance:
Logging #
DBLog #
Thread-safe transaction logging for file processing with resume support.
from owilix.core.manager.logging import DBLog
# Initialize for a job
dblog = DBLog("my_job", "/path/to/logs")
# Register files
dblog.register_files([("/path/file1.parquet", "/dataset/path", "ds1")])
# Track progress
dblog.mark_files_success(["/path/file1.parquet"])
# Get statistics
stats = dblog.get_statistics()
.. autoclass:: owilix.core.manager.logging.DBLog
:members:
UI Utilities #
OWILIXConsole #
Rich console with logging integration.
from owilix.core.manager import OWILIXConsole
console = OWILIXConsole()
console.info("Processing started")
console.error("Something went wrong")
EnhancedProgressDisplay #
Progress bars with error tracking.
from owilix.core.manager import EnhancedProgressDisplay, ErrorCollector
errors = ErrorCollector()
progress = EnhancedProgressDisplay(console, errors)
progress.start(total_files=100)
progress.update(advance=1, records=1000)
progress.stop()
See Also #
- Repository Package - Dataset storage abstractions
- FSSPEC Integration - iRODS HTTP filesystem