A client to the https://github.com/DXsmiley/rtex API server
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Estelle Poulin 997c8269a7 Pydantic issues 3 months ago
.github/workflows First version 1 year ago
rtex Pydantic issues 3 months ago
.gitignore Initial commit 1 year ago
LICENSE Initial commit 1 year ago
README.md Readme and model fixes 1 year ago
pyproject.toml First version 1 year ago
requirements.txt Loosen requirements 3 months ago

README.md

Async Python Client to The RTEX API Server

Installation

pip install rtex

Usage

The API surface of Rtex is spartan so this is basically the whole thing.

import asyncio

from rtex.client import AsyncRtexClient

async def amain():
  async with AsyncRtexClient() as rtex:
    res = rtex.create_render("\(x^2 + x - 1\)")

    if res.status == "success":
      with open("equation.png") as output_fd:
        await res.save_render(
          res.filename,
          output_fd
        )

def main():
  asyncio.run(amain())

if __name__ == "__main__":
  main()

No Thoughts, Just Render

async def amain():
  async with AsyncRtexClient() as rtex:
    buf = await rtex.render_math("e^x + 1")

    # `buf` now contains the bytes of the PNG

Do I look like I know what a Jay-Peg is?

async def amain():
  async with AsyncRtexClient() as rtex:
    # The render methods accept a format parameter.
    # Supported values are "png", "jpg" and "pdf"
    buf = await rtex.render_math("e^x + 1", format="jpg")

Self-Hoster

Set the environment variable RTEX_API_HOST or do the following.


async def amain():
  async with AsyncRtexClient(api_host="https://myserver.ru") as rtex:
    buf = await rtex.render_math("e^x + 1")

I Can Tell By The Pixels

quality in Rtex speak is an abstract notion of compression for the given format where 100 is the least compressed and 0 is the most. At the time of writing the default is 85.

density in Rtex speak is how much to sample the rendered PDF when generating an image. This has no effect on the "pdf" format. At the time of writing the default is 200.


async def amain():
  async with AsyncRtexClient(api_host="https://myserver.ru") as rtex:
    needs_more_jpeg = await rtex.render_math(
      "e^x + 1",
      density=50,
      quality=1
    )