Hapy is a simple programming language that uses Hausa vocabulary and compiles to Python. Originally as a final year school project.
Hapy can be installed using pip (pre-release versions)
note: Hapy is still in development so it might change a lot before full release. You can still join us for the ride!
pip install hapy
If you have installation problems on Windows, try installing Python from the Python website gan and not Microsoft Store.
Check if Hapy is accessible globally, open a new Command-line/terminal and run hapy --help
. If you're not seeing Hapy your Python packages directory may not be in PATH or some other pip/python issue. We noticed all problems disappear when we get Python from their website.
All these commands are to be run in the command line:
hapy --help
- prints the help message
hapy --version
or hapy -v
- prints the installed Hapy version
hapy
or hapy repl
- launches the REPL. Exit via exit()
, or Ctrl-C
. Pass --english
to use Hapy english vocabulary.
hapy <filename>
- execute a script. Hapy uses .hapy
file extension. For example: hapy lagbaja.hapy
. Pass --compile-only
to just print the compiled script or you can pass --save
to save the compiled Python in a file.
hapy run <filename>
- same as above.
hapy do "<code to evaluate>"
- compiles and executes Hapy code as a string. Pass --compile-only
to skip execution or pass --english
/-e
to use Hapy english vocabulary.
More options on the way :)
Let's say 'ayyana' is
def
keyword in Hausa and 'buga' is the
# example.hapy
# wannan sharhi ne
ayyana muje(){
nuna("Let's Goooooo");
};
muje();
Python output after running hapy example.hapy --save
# example.ha.py
# wannan sharhi ne
def muje():
print("Let's Goooooo")
muje()
>>> "Let's Goooooo"
OH MY GOSH 😂😭, WE'RE SO DESPERATE FOR CONTRIBUTIONS THAT WE'RE LITERALLY BEGGING FOR PULL REQUESTS 🙏🏼💻! WE'RE SERIOUSLY ABOUT TO START CRYING OVER HERE. PLEASE, PLEASE, PLEASE SEND A PR AND MAKE OUR DAY. WE'LL LOVE YOU FOREVER AND EVER ❤️🤗.
on it's way...
key (Hausa): value (English)
keywords = {
"in": "if",
"kokuma": "elif",
"then": "then",
"indai": "while",
"ma": "for",
"karo": "import",
"tsarin": "class", #Changed from irin to tsarin(structure) in 0.5.0
"yanada": "has",
"gada": "inherits",
"anfani": "use",
"wuce": "pass",
"daga": "from",
"imbahakaba": "else",
"cikin": "in",
"Babu": "None",
"dawo": "return",
"ayyana": "def",
"Gaskiya": "True",
"Karya": "False",
"nuna": "print"
}
operators_words = {
"ba": "not",
"da": "and",
"ko": "or",
"shine": "=",
"cikin": "in",
"of": "of",
"ba cikin": "not in",
"is equal": "is equal",
"is not equal": "is not equal",
"times": "*",
"hada": "+",
"raba": "/",
"chire": "-"
}
builtin_functions = {
"__farada__": "__init__",
"__donnunawa__": "__repr__",
"nuna": "print",
"iri": "type",
"tsakanin": "range",
"kirga": "len",
"rubuta": "input",
"duka": "all",
"tace": "filter",
"koyar": "help",
"id": "id",
"lissafta": "eval",
}
- Be able to write code in Hausa
- Support some Python constructs
- Have a limited set of custom modules :)
- Be able to upload and install other snippets (called bites) online [soon...]
- Hapy won't try to support all Python things.
- Error messages are not the best currently and won't be translated
- No multi-file Hapy packages, only single file modules (called bites)
- Performance has not been measured yet
- For design and implementation reasons, Hapy uses braces :-)
- I'm not exactly sure why but Hapy requires semi-colons at the end of statements :-(
- We have some arithmetic word operators such as
plus
,times
- Classes are different. More details in the (soon to come) docs
On it's way...
SEND A PR MY BROTHA/SISTA or create an issue on the github
On it's way...
- (heavily) inspired by this great, easy-to-follow tutorial on programming languages
- The REPL is based on this nice article
- We use Click for the CLI
- Tutorial on distributing Pypi packages
- Some code from Bython is used in our indent module
- Yorlang: Yoruba language programming language (Nodejs/Javascript)
- Enkelt: Swedish language programming language Enkelt (Python)
Hapy is released under the MIT License
If you found Hapy useful enought to cite, please cite using the following BibTeX:
@software{segunlean2021,
author = {Segun-Lean, Emmanuel and Wuta, Shugaba},
title = {Hapy: Hausa Programming Language},
month = December,
year = 2021,
url = {https://github.com/hapy-lang/hapy}
}