Skip to main content

Write Python code using keywords in your native language

Project description

LangPy

Write Python in your native language 🌍

LangPy is a lexical layer over Python that lets you write code using keywords in human languages, without changing Python's behavior.

# ejemplo.pyes (Spanish)
definir saludar(nombre):
    si nombre == "Ana":
        imprimir("Hola Ana")
    sino:
        imprimir("Hola", nombre)

saludar("Luis")
$ langpy ejemplo.pyes
Hola Luis

Why LangPy?

LangPy makes Python more accessible to non-English speakers by allowing you to use natural language keywords while keeping everything else exactly the same.

What LangPy IS ✅

  • A lexical transpiler that translates keywords to Python
  • 100% compatible with Python libraries and tools
  • Zero runtime overhead - executes as native Python
  • Easy migration path back to pure Python

What LangPy is NOT ❌

  • NOT a new programming language
  • NOT a custom interpreter or VM
  • NOT translating error messages or APIs
  • NOT changing Python's semantics

If something crosses these boundaries, it's out of scope.

Quick Start

Installation

Requirements: Python 3.10+

pip install langpy

Your First Program

Create a file hello.pyes:

definir main():
    nombre = "World"
    imprimir(f"Hello {nombre}!")

main()

Run it:

langpy hello.pyes

That's it! LangPy transpiles your code to standard Python and executes it immediately.

Supported Languages

Language Extension Keywords Example
Spanish .pyes definir, si, sino, imprimir
Portuguese .pypt definir, se, senao, imprimir
French .pyfr definir, si, sinon, imprimer

The language is determined solely by the file extension. No flags or configuration needed.

Real-World Example

LangPy works seamlessly with local imports and external libraries.

operations.pyes

definir suma(a, b):
    retornar a + b

definir resta(a, b):
    retornar a - b

main.pyes

desde operations importar suma, resta
importar numpy como np

definir analizar_datos():
    # Use your functions
    resultado = suma(10, 5)
    imprimir(f"Suma: {resultado}")

    # Use any Python library
    datos = np.array([1, 2, 3, 4, 5])
    imprimir(f"Media: {np.mean(datos)}")

analizar_datos()

Run it:

langpy main.pyes

How It Works

.pyes / .pypt / .pyfr file
        ↓
tokenize (Python stdlib)
        ↓
keyword replacement
        ↓
untokenize
        ↓
execute with Python VM

Key Design Principles

  • Only NAME tokens are translated (keywords)
  • Strings and comments remain unchanged
  • Attribute names are preserved (obj.method)
  • No custom AST or parser
  • If Python can't tokenize it, neither can LangPy

CLI Usage

Execute directly

langpy script.pyes

Transpile to Python

langpy --transpile script.pyes

This generates standard .py files that you can run with python.

Force overwrite

langpy --transpile --force script.pyes

Get help

langpy --help
langpy --version

Project Status

Version: 0.1.4

  • ✅ Stable transpilation core
  • ✅ Language lexicons defined
  • ✅ Fully functional CLI
  • ✅ Comprehensive test suite
  • ✅ Clear project scope

Contributing

LangPy's lexicon system is modular, making it easy to add new languages without modifying the core. Want to add your language? We'd love to have you contribute!

License

MIT


Made with ❤️ for the global Python community

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

langpy-0.1.4.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

langpy-0.1.4-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file langpy-0.1.4.tar.gz.

File metadata

  • Download URL: langpy-0.1.4.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for langpy-0.1.4.tar.gz
Algorithm Hash digest
SHA256 bedd815030e13e012f628c58d235988897d59d6c081c58e7080350123481e50a
MD5 19a40643d636e3827953eeed9aa6a87d
BLAKE2b-256 0beb7ed42ed7bda825c03df1bfe92770eb9414104894c0559ffcf9b232eae148

See more details on using hashes here.

File details

Details for the file langpy-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: langpy-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for langpy-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 94218745e19ad29d26d6812033326b6ca92e1b256e04079698179d1f90adb3d3
MD5 9dfb2a3605a2cbc7a74323d23a667f9e
BLAKE2b-256 dc0d4eb14e26668418b59087760ed3f9f4519e82f368f9286dbf6707fd360e33

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