mehtap
Lua 5.4 programming language implementation in Pure Python
Status
mehtap is in an early alpha stage. Since there is active development, API changes may happen without any special notice. Please pin your dependencies using a specific commit hash.
Installation
mehtap is supported on Python 3.10+. First, make sure you have a Python environment set up.
# in the shell
poetry add mehtap # if using python-poetry.org
pipenv install mehtap # if using pipenv.pypa.io
pip install mehtap # straight pip.pypa.io
What does mehtap have?
-
Everything in the Lua 5.4 grammar is supported.
-
There are utility functions to convert values from Python to Lua and from Lua to Python.
-
Most of the standard library is supported. (100% support is planned.)
Basic Functions (25/25)
-
assert() -
collectgarbage()— Does nothing. -
dofile() -
error() -
_G -
getmetatable() -
ipairs() -
load()— No binary chunks, no upvalues and no _ENV. -
loadfile()— seeload(). -
next() -
pairs() -
pcall() -
print() -
rawequal() -
rawget() -
rawlen() -
rawset() -
select() -
setmetatable() -
tonumber() -
tostring() -
type() -
_VERSION -
warn() -
xpcall()
Table Manipulation (7/7)
- [x] table.concat() - [x] table.insert() - [x] table.move() - [x] table.pack() - [x] table.remove() - [x] table.sort() — uses bubble sort... - [x] table.unpack()Input and Output Facilities (18/18)
- io.close()
- io.flush()
- io.input()
- io.lines()
- io.open()
- io.output()
- io.popen()
- io.read()
- io.tmpfile()
- io.type()
- io.write()
- file:close()
- file:flush()
- file:lines()
- file:read()
- file:seek()
- file:setvbuf() — Does nothing.
- file:write()
Operating System Facilities (11/11)
- os.clock()
- os.date()
- os.difftime()
- os.execute()
- os.exit()
- os.getenv()
- os.remove()
- os.rename()
- os.setlocale()
- os.time()
- os.tmpname()
-
What's the catch?
There are some differences with the specification of the reference manual. They are:
- garbage collection,
- frame scope.
For the most part, behaviour differences with the reference implementation are only allowed if the reference manual does not specify the behaviour. For example, the exact formatting of error messages is not specified in the reference manual, so it is allowed to be different.
Also, since this is a Python implementation, it is SLOW.
Acknowledgements
I want to hereby thank the following people for their
(uninformed) contributions to the project:
(If you are reading this, hello! 👋)
- Blake Bourque for creating Lua by Example, a great resource for learning Lua which also serves in the test suite of mehtap.
- oatmealine for putting together this awesome gist explaining how metamethods and metavalues override operations in detail.
Copyright (c) 2024-2025 Emre Özcan
Metadata
Release files for mehtap 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mehtap-0.2.0.tar.gz | 53.1 kB | With provenance | Details for mehtap-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mehtap-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for mehtap-0.2.0-py3-none-any.whl |
Total release size: 113.1 kB
Release files / mehtap-0.2.0.tar.gz
| Download URL | mehtap-0.2.0.tar.gz |
|---|---|
| Size | 53.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c82d5300b2a096123e152aafc1bbbac71635dcebfedf61ea57603e168bd3c49a
|
|
BLAKE2b-256 checksum How to use checksums |
a37b77a1df5659320d37bb7528c83b078946a46f959ad57d124afd4a61521374
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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 May 26, 2025.
Transparency logRelease files / mehtap-0.2.0-py3-none-any.whl
| Download URL | mehtap-0.2.0-py3-none-any.whl |
|---|---|
| Size | 60.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3d317915fe108ca332f20fc0f951dd35a24421d07f851d576a89d1be4f2be62
|
|
BLAKE2b-256 checksum How to use checksums |
4275275996dff863f5e2c00cc9d6b63f89172067314b1d0bee36dfe0a35d5831
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
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 May 26, 2025.
Transparency logSecurity for mehtap 0.2.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for mehtap-0.2.0.tar.gz
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 May 26, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.