JugaadLang — A Hindi-keyword programming language for Indian developers
Project description
JugaadLang 🇮🇳
Code karo Hindi mein, Duniya hila do! 🚀
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.
Table of Contents
- Core Philosophy
- Installation
- Language Keywords Reference
- Example Usage
- Built-in Fun Functions
- Ecosystem & Tooling
- Standard Library (Stdlib)
- Funny Error System
- Automated Testing
Core Philosophy
- Python simplicity: Clear, indentation-based block syntax.
- Hindi-English keywords: Express logic in the language you think in.
- Humorous diagnostics: Error messages that make you laugh, not crash.
- Zero-overhead transpilation: Compiles to Python bytecode and executes in the native Python VM.
Installation
To install JugaadLang locally:
# Clone the repository
git clone https://github.com/jugaadlang/jugaadlang.git
cd jugaadlang
# Install in editable mode (or standard install)
pip install -e .
Verify that the CLI works:
jug --version
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):
ganit: Hindi wrappers for arithmetic/geometry (e.g.ganit.sin,ganit.pi,ganit.sqrt).web: HTTP request wrappers (web.get,web.post) and JugaadWeb framework with@web.agar_route("/")andweb.chalao().faili: Clean file system API (faili.padho,faili.likho,faili.jodo).json: Native parser (json.banao_string,json.banao_object).samay: DateTime operations (samay.abhibhi(),samay.aaj(),samay.soja()).tantra: Access system variables (tantra.argv,tantra.exit(),tantra.platform).crypto: Hash encryption (crypto.sha256,crypto.base64_encode).database: SQLite ORM (JugaadORM) backing tables withbachao()andfilter().- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jugaadlang-1.0.0.tar.gz.
File metadata
- Download URL: jugaadlang-1.0.0.tar.gz
- Upload date:
- Size: 59.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bc63a920667932d4eb291f3dd2643e4ad23872282bc465faa9a5463ac587d3d
|
|
| MD5 |
c2756e4cfbb66d96c00f3f5c510650a6
|
|
| BLAKE2b-256 |
85df97a4918939701dae0f4b3ee3362d6d9bd99718921879eec892c482666fc3
|
File details
Details for the file jugaadlang-1.0.0-py3-none-any.whl.
File metadata
- Download URL: jugaadlang-1.0.0-py3-none-any.whl
- Upload date:
- Size: 57.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd952f6b480fba0e2c1ad17acbb0bfbe0975729d40e8930ca5863f4c7f5bae4c
|
|
| MD5 |
31a678b827f48613104dc67afd94694f
|
|
| BLAKE2b-256 |
b82c68e6c42c8164e31a944062c2bf7d3dd472247baff9db10d85d321fe5fb9b
|