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.0a2

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.0a2
File Size Uploaded
aura_language-0.1.0a2.tar.gz 180.4 kB Details

Built distribution (wheel)

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

Total release size: 342.6 kB

Release files / aura_language-0.1.0a2.tar.gz

Download URL aura_language-0.1.0a2.tar.gz
Size 180.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ecf55761200119a8353be1827277eaa5be7d55dbb5a366b56a312693697cd652
BLAKE2b-256 checksum
How to use checksums
cfb182f048522b527113c62be4b91d5ff7b993ae4ee095ca9535061f2e0fbb34
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.0a2-py3-none-any.whl

Download URL aura_language-0.1.0a2-py3-none-any.whl
Size 162.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b683839161f7632aea832692c3e15a3a60a208f2c252854c0437df38aea6ce6
BLAKE2b-256 checksum
How to use checksums
e0f7eb77999f8848fe76cd5a4b3399171885d1b78ff3fe665984e1674ce3f0a5
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