Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Aura

A programming language that transpiles to Python.

Installation

Install the toolchain from a wheel or sdist; this provides the aura command:

pip install aura-language            # once published on PyPI
# or from a checkout:
pip install .
aura run examples/hello.aura

Installed commands (aura <cmd>):

Command Description
aura run <file> Transpile and execute
aura transpile <file> [-o out.py] Convert Aura to Python
aura check <file> Type and mutability checks
aura format <file> Format source
aura lint <file> Style warnings
aura test <dir> Run .aura files
aura repl Interactive REPL
aura init [name] Create aura.toml and src/main.aura
aura add <pkg> Add and install a dependency
aura install Install dependencies from aura.toml
aura deps List declared dependencies
aura version [bump] Show or bump the version
aura debug <file> [-t] Run under the trace debugger
aura lsp Start the language server (stdio)

Aura programs can import any Python standard-library module or installed PyPI package, plus local .aura modules and packages. The standard library also ships stdlib.regex, stdlib.os and stdlib.http.

Quick Start (from source, no install)

git clone https://github.com/JoaoValentimTheo/aura-lang.git
cd aura-lang
python3 main.py run examples/hello.aura

Examples

Hello World

print("Hello, Aura!")

Fibonacci

def fibonacci(n) -> int {
  let mut a = 0
  let mut b = 1
  for i in range(n) {
    let next = a + b
    a = b
    b = next
  }
  return a
}

print(fibonacci(10))

Prime Checker

def is_prime(n) -> bool {
  if n < 2 { return false }
  if n == 2 { return true }
  if n % 2 == 0 { return false }

  let i = 3
  while i * i <= n {
    if n % i == 0 { return false }
    i += 2
  }
  return true
}

for n in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] {
  print(f"{n} is prime: {is_prime(n)}")
}

Classes

class BankAccount {
  let owner: str = ""
  let balance: float = 0.0

  def new(owner: str, balance: float = 0.0) {
    self.owner = owner
    self.balance = balance
  }

  def deposit(amount: float) {
    if amount > 0.0 {
      self.balance += amount
      print(f"Deposited {amount}, balance: {self.balance}")
    }
  }

  def withdraw(amount: float) -> bool {
    if amount <= self.balance {
      self.balance -= amount
      print(f"Withdrew {amount}, balance: {self.balance}")
      return true
    }
    print("Insufficient funds")
    return false
  }

  @property
  def is_empty() -> bool {
    return self.balance == 0.0
  }
}

let account = BankAccount("Alice", 1000.0)
account.deposit(500.0)
account.withdraw(200.0)
print(f"Empty? {account.is_empty}")

Pattern Matching

match value {
  case 0 { print("zero") }
  case 1 { print("one") }
  case n if n > 100 { print("big") }
  case _ { print("other") }
}

Functional Pipelines

let result = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  |> filter((x) => x % 2 == 0)
  |> map((x) => x * x)
  |> reduce((acc, x) => acc + x, 0)

print(f"Sum of even squares: {result}")

Error Handling

def safe_divide(a, b) -> float {
  if b == 0 {
    throw ValueError("division by zero")
  }
  return a / b
}

try {
  print(safe_divide(10, 2))
  print(safe_divide(1, 0))
} catch error {
  print(f"Caught: {error}")
} finally {
  print("cleanup complete")
}

Macros

@debug
def multiply(a, b) -> int {
  return a * b
}

@timeit
def sum_to(n) -> int {
  let mut total = 0
  for i in range(n) {
    total += i
  }
  return total
}

@memoize
def fib(n) -> int {
  if n < 2 { return n }
  return fib(n - 1) + fib(n - 2)
}

CLI Commands

Command Description
python3 main.py transpile <file.aura> Transpile to Python (stdout)
python3 main.py transpile <file.aura> -o <out.py> Transpile to file
python3 main.py check <file.aura> Type check
python3 main.py format <file.aura> Format code
python3 main.py lint <file.aura> Lint code
python3 main.py run <file.aura> Run Aura file
python3 main.py run <file.aura> -v Run with Python output
python3 main.py repl Interactive REPL

Documentation

Testing

python3 -m pytest tests/ -v          # full suite
python3 tests/test_runtime.py        # transpile + execute programs
python3 tests/test_regressions.py    # audit regression coverage

Set AURA_FUZZ_SEEDS=100000 to run the stochastic fuzzer beyond its default sample of 200 seeds.

License

MIT

Release files for aura-language 0.1.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aura-language 0.1.0a1
File Size Uploaded
aura_language-0.1.0a1.tar.gz 180.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aura-language 0.1.0a1
File Interpreter ABI Platform
aura_language-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 342.0 kB

Release files / aura_language-0.1.0a1.tar.gz

Download URL aura_language-0.1.0a1.tar.gz
Size 180.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9848a6b0f197dd03052511b34c993dc6bd78aae3cbe8e7ddeadab990dcc0aadf
BLAKE2b-256 checksum
How to use checksums
711521037df206273948387fad9405eaa8dcbdcd913da610f1a226ea0422ee9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log

Release files / aura_language-0.1.0a1-py3-none-any.whl

Download URL aura_language-0.1.0a1-py3-none-any.whl
Size 162.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd5120350794550187f99b3f4835d4a0d8217276686e69be65531d9bd88302fd
BLAKE2b-256 checksum
How to use checksums
f0582c7fb3379a7655967d79083bed81bda328b56ffecad35d68caaef5c6fd2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page