Skip to main content

Python package for Litex core

Project description

Pylitex

PyPI version License: MIT Python 3.9+

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 locally
  • run_online(code: str) -> dict: Execute Litex code online
  • convert_to_latex(code: str) -> dict: Convert Litex code to LaTeX
  • get_version() -> str: Get pylitex version
  • get_litex_version() -> str: Get Litex core version

Classes

  • Runner(): Persistent Litex execution environment

    • run(code: str) -> dict: Execute code in persistent environment
    • close(): Close the runner
  • RunnerPool(max_workers: int = 1, timeout: int = 10): Multi-process runner pool

    • inject_code(code_info: dict): Add code to execution queue
    • get_results() -> dict: Get all execution results
    • close(): 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 litex command
  • For online execution: Internet connection required

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylitex-0.1.19.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylitex-0.1.19-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

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

Hashes for pylitex-0.1.19.tar.gz
Algorithm Hash digest
SHA256 fca977caf6e818d8030c979cfdc9c921ae23627a7fae96a9019bb654325a0123
MD5 df5d0b8f022ab6149cc7345c4bd1d8ce
BLAKE2b-256 b177b83574343f40ad6a12b179f85eb7d5f2345841d83909c0f5f50a04a7a6f0

See more details on using hashes here.

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

Hashes for pylitex-0.1.19-py3-none-any.whl
Algorithm Hash digest
SHA256 48445555833443b5fd06e6ca219aec1e5922205dd887f1f03dce64020a2da75e
MD5 0bea6840f62d7d944919fe2bcd4f49bd
BLAKE2b-256 88ed80dfa7e4b07b5b8beb5f4b6cec39ee4c1c08427540b79424e42c9d6a2a00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page