Skip to main content

JugaadLang — A Hindi-keyword programming language for Indian developers

Project description

JugaadLang 🇮🇳

Code karo Hindi mein, Duniya hila do! 🚀

JugaadLang Logo

JugaadLang is a modern, beginner-friendly, fun programming language inspired by Python, designed for Indian developers. It replaces Python's core keywords with English-spelled Hindi (Roman Hindi) terms and features custom funny error diagnostic outputs, a built-in package manager, and standard libraries.

JugaadLang transpiles directly to native Python AST, meaning it runs with zero runtime performance overhead and provides full compatibility with the entire Python ecosystem.

JugaadLang — Code karo Hindi mein  - Code karo Hindi mein, Duniya hila do 🇮🇳 | Product Hunt


JugaadLang CI JugaadLang Release CodeQL

Windows Linux macOS Python Open Source

Table of Contents

  1. Core Philosophy
  2. Installation
  3. Language Keywords Reference
  4. Example Usage
  5. Built-in Fun Functions
  6. Ecosystem & Tooling
  7. Standard Library (Stdlib)
  8. Funny Error System
  9. Automated Testing

Core Philosophy

  1. Python simplicity: Clear, indentation-based block syntax.
  2. Hindi-English keywords: Express logic in the language you think in.
  3. Humorous diagnostics: Error messages that make you laugh, not crash.
  4. Zero-overhead transpilation: Compiles to Python bytecode and executes in the native Python VM.

Installation

Get started with JugaadLang in just a few minutes.

Requirements

Before installing JugaadLang, make sure you have:

  • Python 3.10 or later
  • pip package manager

Check your Python version:

python --version

or

python3 --version

🪟 Windows

Install

pip install jugaadlang

Verify Installation

jug --version

Expected output:

JugaadLang v1.0.2 🇮🇳

Run Your First Program

Create a file named hello.jug

bolo("Namaste Duniya 🚀")

Run it:

jug run hello.jg

Output:

Namaste Duniya 🚀

🐧 Linux

Install

pip3 install jugaadlang

Verify Installation

jug --version

Run

jug run hello.jg

🍎 macOS

Install

pip3 install jugaadlang

Verify Installation

jug --version

Run

jug run hello.jg

🚀 Install Latest Development Version

Install directly from GitHub:

pip install git+https://github.com/JugaadLang/jugaadlang.git

Verify:

jug --version

📦 Package Manager

JugaadLang includes a built-in package manager.

Install Package

jug install chai

Search Package

jug search chai

Update Packages

jug update

Remove Package

jug remove chai

⚡ Interactive REPL

Start the JugaadLang shell:

jug

Example:

>>> bolo("Namaste")
Namaste

🔧 Common Commands

Command Description
jug run file.jg Run a program
jug build file.jg Build project
jug repl Open REPL
jug install pkg Install package
jug update Update packages
jug search pkg Search package
jug remove pkg Remove package
jug doctor Diagnose installation
jug --version Show version
jug --help Show help

🎉 Success


Language Keywords Reference

Python Keyword JugaadLang Hindi Literal Meaning
print bolo Say / Speak
input poochho Ask
if agar If
elif shayad Maybe / Perhaps
else warna Otherwise
for ghumo Iterate / Roam
while jabtak Until / As long as
def banao Create / Make
return wapas Return / Back
class ustad Master / Teacher
self khud Self
import lao Import / Bring
from se From
break rukja Stop!
continue chalte_raho Keep going
try koshish Try / Attempt
except gadbad Problem / Exception
finally aakhir_me In the end
raise udao Throw / Raise
True sahi Correct / True
False galat Wrong / False
None kuch_nahi Nothing / None
and aur And
or ya Or
not nahi Not
async tez Fast / Async
await intezaar Wait / Await
yield baanto Distribute / Yield
pass theek_hai Fine / Pass
global sabka Everyone's / Global
lambda chota_funkshan Little function
in mein In
is hai Is
match agar_match Pattern match subject block
case kaand Case block in pattern match

Standard Built-in Function Mappings

JugaadLang supports Roman Hindi wrappers for standard Python built-in functions. They map directly to Python's built-ins:

Python Built-in JugaadLang Hindi Translation Description
abs maan Value / Magnitude Absolute value of a number
all sab All True if all items in iterable are true
any koi_bhi Any / Anyone True if any item in iterable is true
bin binary Binary Binary representation of an integer
bool satyata Truth value Evaluates boolean value
callable bulaane_yogya Callable Checks if object is callable
chr akshar Character Returns character from Unicode point
delattr gun_hatao Remove attribute Deletes attribute from object
dict kosh Dictionary / Lexicon Returns a dictionary (map)
divmod bhag_shesh Quotient-Remainder Returns (quotient, remainder)
enumerate ginti Counting / Enumerate Returns indexed list generator
exec chalao Run / Execute Executes dynamic Python code
filter chhano Filter Filters elements through a function
getattr gun_lao Get attribute Returns attribute value of object
hasattr gun_hai Has attribute Checks if attribute exists on object
help madad Help Starts built-in help text utility
id pehchan Identity / ID Returns unique identity of object
int purnank Integer Converts value to standard integer
isinstance prakar_hai Is type of Checks if object is instance of class
issubclass subclass_hai Is subclass of Checks if class is subclass of another
len lambaee Length Returns length of a sequence
list suchi List / Sequence Creates/converts to list
max adhiktam Maximum Returns largest item
min nyuntam Minimum Returns smallest item
next agla Next Retrieves next item from iterator
object vastu Object Base class object creator
open kholo Open Opens a file handle
pow ghat Power / Exponent Raises number to power (x ** y)
reversed ulta Reversed Returns reversed order iterator
setattr gun_badlo Change attribute Modifies attribute value of object
slice tukda Slice Returns slice object for indexes
sorted kramwar Sorted / Sequential Returns sorted copy of iterable
str shabd String / Word Converts object to string
sum yog Sum / Addition Returns sum of items in iterable
type prakar Type / Kind Returns the type of an object

Example Usage

1. Simple Control Flow (hello.jug)

# Ask for user name
poochho naam

agar naam == "Sumangal":
    bolo("Legend mil gaya! 😎")
warna:
    bolo("Namaste " + naam)

Run it:

jug run hello.jug

2. Classes & Functions (oop.jug)

ustad Developer:
    banao shuru(khud, naam, language):
        khud.naam = naam
        khud.language = language

    banao batao(khud):
        bolo(khud.naam + " code likh raha hai " + khud.language + " mein!")

dev = Developer("Sumangal", "JugaadLang")
dev.batao()

### 3. Pattern Matching (`match.jug`)
```jugaadlang
banao test_match(x):
    agar_match x:
        kaand sahi:
            wapas "boolean true"
        kaand 1:
            wapas "one"
        kaand [a, b]:
            wapas "sequence of " + str(a) + " and " + str(b)
        kaand _:
            wapas "something else"

bolo(test_match(1))
bolo(test_match(sahi))
bolo(test_match([10, 20]))

---

## Built-in Fun Functions
Enjoy several custom interactive built-ins directly at runtime:
* `chai()`: Prints a warm cup of ASCII tea (`☕ Chai pi lo.`)
* `himmat()`: Prints a motivational programming boost (`🔥 Hidden feature detected.`)
* `ghaas_chhoo()`: Gently reminds you to go touch some grass (`🌱 Bahar ghoom aao.`)
* `bachao()`: Starts a mock search for help (`🚨 StackOverflow search shuru.`)
* `fortune()`: Tells a programmer's fortune (`🔮 Bug line 347 mein ho sakta hai.`)
* `jugaad()`: Gives a random hacking/debugging tip.
* `nazar()`: Blocks bad vibes and bugs (`🧿 Nazar suraksha kavach active! Bad vibes/bugs blocked. 🧿`).
* `ashirwad()`: Boosts runtime success rate with elder blessings (`👵 Sadbhavna aur aashirwad active! Success rate boosted to 100%! 👵`).
* `dhanya_waad()`: Expresses polite gratitude (`🙏 Dhanyawaad! Code chalaane ke liye aapka aabhari hoon. Keep coding! 🙏`).
* `bhagwan_bhala_kare()`: Prays for errors to disappear (`📿 Hey bhagwan, iss error ko apne aap thik kar do! Please! 📿`).
* `paisa_wasool()`: Reminds you that JugaadLang is free (`💸 Paisa Wasool! JugaadLang is 100% free and open-source, your money is safe! 💸`).
* `bas_kar_bhai()`: Advises to stop coding and sleep (`🛑 Bas kar bhai! Kitna code likhega? So ja thodi der. 🛑`).
* `chilla_mat()`: Calms you down during debugging (`🤫 Chilla mat, deep breath le aur debug kar. 🤫`).
* `kundli()`: Performs astrological diagnostics on your code to see if Shani or Rahu are transit-blocking your variables/loops.

---

## Ecosystem & Tooling

### CLI Runner
* **Run a file:** `jug run main.jug` (supports script argument passing like `jug run main.jug arg1 arg2`)
* **Check syntax:** `jug check main.jug`
* **Static type-checking:** `jug typecheck main.jug` (performs static analysis using `mypy` behind the scenes)
* **Transpile to Python source:** `jug compile main.jug -o main.py`
* **Create a boilerplate project:** `jug new my_project`

### Interactive REPL
Launch a beautiful interactive terminal shell:
```bash
jug repl

Features auto-completion for all keywords, live syntax highlighting, input history, and double-Enter multiline block detection.

Package Manager

Integrate pip packages or custom bundles:

  • Install: jug install web (installs Flask, requests, httpx, and aiohttp)
  • Remove: jug remove web
  • Update: jug update web
  • Search: jug search query

VS Code Extension

Launch the extension from vscode_extension/. Features full syntax highlighting for .jug files, 25+ snippets, hovered keyword documentation in Hindi, and a status bar icon.


Standard Library (Stdlib)

Import standard libraries using lao (e.g. lao ganit):

  1. ganit: Hindi wrappers for arithmetic/geometry (e.g. ganit.sin, ganit.pi, ganit.sqrt).
  2. web: HTTP request wrappers (web.get, web.post) and JugaadWeb framework with @web.agar_route("/") and web.chalao().
  3. faili: Clean file system API (faili.padho, faili.likho, faili.jodo).
  4. json: Native parser (json.banao_string, json.banao_object).
  5. samay: DateTime operations (samay.abhibhi(), samay.aaj(), samay.soja()).
  6. tantra: Access system variables (tantra.argv, tantra.exit(), tantra.platform).
  7. crypto: Hash encryption (crypto.sha256, crypto.base64_encode).
  8. database: SQLite ORM (JugaadORM) backing tables with bachao() and filter().
  9. Fun Libraries: chai, jokes, motivation, fortune, memes, catfacts.

Funny Error System

Tired of dry Tracebacks? JugaadLang features humorous Hindi exceptions:

SyntaxError

🤦 Bhai kya likh diya?
Faili: hello.jug Line 3, Col 12

  agar x ==
            ^

Error Details: Expected value.
Keyboard strike par hai kya?

NameError

🕵️ Variable 'x' dhundte dhundte thak gaya.
Faili: hello.jug Line 12

  > bolo(x)

Kya gadbad hai?
  'x' mila hi nahi.

Possible reasons:
  • Typo kiya hai
  • Variable declare karna bhool gaye
  • Universe collapse ho gaya

DivisionByZero

💀 Zero se divide?
Faili: hello.jug Line 5

Kya gadbad hai?
  Newton bhi confuse ho gaya. Maths seekh lo thoda.

Developer Tooling & Testing

For local development and testing, we provide a unified helper script run.sh to automate tasks:

# Clean previous builds, run tests, and perform editable installation
./run.sh all

# Run test suite dynamically under the active Python environment
./run.sh test

# Clean build artifacts and package wheels/tarballs
./run.sh build

# Install JugaadLang locally in editable mode with all development dependencies
./run.sh install

All test cases are written using pytest inside the tests/ directory.

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

jugaadlang-1.0.3.tar.gz (62.4 kB view details)

Uploaded Source

Built Distribution

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

jugaadlang-1.0.3-py3-none-any.whl (58.9 kB view details)

Uploaded Python 3

File details

Details for the file jugaadlang-1.0.3.tar.gz.

File metadata

  • Download URL: jugaadlang-1.0.3.tar.gz
  • Upload date:
  • Size: 62.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jugaadlang-1.0.3.tar.gz
Algorithm Hash digest
SHA256 d3c75309133ca96e1ebe2de28a49b7f4ee619972aa6694f1218ed29c722047d3
MD5 e677d01656987018571e9ff659945a2f
BLAKE2b-256 386747482a6b2e32c5e7d8af78a1ceaa16a712cd1a6e31691f38bbf114f5b97a

See more details on using hashes here.

File details

Details for the file jugaadlang-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: jugaadlang-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 58.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for jugaadlang-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e4df3701b62bf06cdebd77550767cfa03f211c7b86b62c7dc5ff9dcb6acca1a4
MD5 ab050532e2e64ef9c978b41e9812ac7a
BLAKE2b-256 7da1098f5b3ecb6d9c49636c63aa23a11082c610aecec45d834c57d3ec7465fe

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