Python package for Litex core
Project description
Pylitex
A Python API library for Litex core, designed to help Python users interact with Litex core seamlessly. This library provides both local and online execution capabilities, persistent environments, and multi-process support.
Installation
💡 Install Litex core before using
pylitex, visit our website and read the Installation of Litex core.
After installing Litex core on your machine, install pylitex in the same way as installing other Python packages:
# remember to install Litex core before install pylitex
# change your Python env to which your are using
# then run following commands
pip install pylitex
Usage
Import pylitex to get started:
import pylitex
Basic Functions
Local Execution
Execute Litex code using your local Litex installation:
# Run a single code snippet
result = pylitex.run("1 + 1 = 2")
print(result)
# Output: {"success": True, "payload": "1 + 1 = 2", "message": "..."}
Online Execution
Execute Litex code using the online Litex service (no local installation required):
# Run code online
result = pylitex.run_online("1 + 1 = 2")
print(result)
# Output: {"success": True, "payload": "1 + 1 = 2", "message": "..."}
LaTeX Conversion
Convert Litex code to LaTeX format:
# Convert code to LaTeX
result = pylitex.convert_to_latex("1 + 1 = 2")
print(result)
# Output: {"success": True, "payload": "1 + 1 = 2", "message": "LaTeX output..."}
Persistent Execution with Runner
For multiple code executions that need to maintain state:
# Create a persistent runner
runner = pylitex.Runner()
try:
# Variables persist between calls
result1 = runner.run("let a R: a = 1")
result2 = runner.run("let b R: b = 2")
result3 = runner.run("let c R: c = a + b")
print("Final result:", result3)
finally:
runner.close() # Always close the runner
Multi-Process Execution with RunnerPool
For parallel execution with separate environments per session:
# Create a runner pool with 2 workers and 30-second timeout
pool = pylitex.RunnerPool(max_workers=2, timeout=30)
try:
# Each ID maintains its own environment
pool.inject_code({"id": "session1", "code": "let x R: x = 5"})
pool.inject_code({"id": "session2", "code": "let y R: y = 10"})
pool.inject_code({"id": "session1", "code": "let result R: result = x * 2"})
pool.inject_code({"id": "session2", "code": "let result R: result = y / 2"})
# Get all results grouped by session ID
results = pool.get_results()
print("Session 1 results:", results["session1"])
print("Session 2 results:", results["session2"])
finally:
pool.close() # Always close the pool
Utility Functions
Version Information
Get version information for both pylitex and Litex core:
# Get pylitex version
version = pylitex.get_version()
print(f"Pylitex version: {version}")
# Get Litex core version (requires local installation)
litex_version = pylitex.get_litex_version()
print(f"Litex core version: {litex_version}")
API Reference
Functions
run(code: str) -> dict: Execute Litex code locallyrun_online(code: str) -> dict: Execute Litex code onlineconvert_to_latex(code: str) -> dict: Convert Litex code to LaTeXget_version() -> str: Get pylitex versionget_litex_version() -> str: Get Litex core version
Classes
-
Runner(): Persistent Litex execution environmentrun(code: str) -> dict: Execute code in persistent environmentclose(): Close the runner
-
RunnerPool(max_workers: int = 1, timeout: int = 10): Multi-process runner poolinject_code(code_info: dict): Add code to execution queueget_results() -> dict: Get all execution resultsclose(): Close all runners
Return Format
All execution functions return a dictionary with the following structure:
{
"success": bool, # True if execution succeeded
"payload": str, # The original code that was executed
"message": str # Output message or error details
}
Error Handling
The library handles common errors gracefully:
- Local execution: Returns error message if Litex core is not installed or not in PATH
- Online execution: Returns error message for network issues or API failures
- Runner errors: Automatically resets environment on unexpected failures
Requirements
- Python 3.9+
- For local execution: Litex core must be installed and accessible via
litexcommand - For online execution: Internet connection required
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 pylitex-0.1.19.tar.gz.
File metadata
- Download URL: pylitex-0.1.19.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fca977caf6e818d8030c979cfdc9c921ae23627a7fae96a9019bb654325a0123
|
|
| MD5 |
df5d0b8f022ab6149cc7345c4bd1d8ce
|
|
| BLAKE2b-256 |
b177b83574343f40ad6a12b179f85eb7d5f2345841d83909c0f5f50a04a7a6f0
|
File details
Details for the file pylitex-0.1.19-py3-none-any.whl.
File metadata
- Download URL: pylitex-0.1.19-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48445555833443b5fd06e6ca219aec1e5922205dd887f1f03dce64020a2da75e
|
|
| MD5 |
0bea6840f62d7d944919fe2bcd4f49bd
|
|
| BLAKE2b-256 |
88ed80dfa7e4b07b5b8beb5f4b6cec39ee4c1c08427540b79424e42c9d6a2a00
|