Geobe
Geobe is a geometric esoteric programming language interpreter written in Python. Programs are 2D grids of Unicode symbols where arrows control flow and shapes carry semantics.
Overview
Geobe programs are rectangular text grids. The interpreter finds every ○
source node and follows directional flow through the grid until a path ends.
The current MVP supports a single deterministic memory cell, input buffering,
output collection, and pluggable △ transforms.
Core symbols:
○read the next input value□store the current value in memory△transform the current value▲change/delta transform the current value▽append the current value to output◀append the current value to output▶traverse the current array by one index▶▶continue the current array loop, or finish when exhausted→,←,↑,↓move execution through the grid«... »read a literal string into the current valuespell ...decode triangle alphabet symbols into lowercase text output
Spaces are treated as empty cells for traversal. Other non-traversable characters stop a path.
Installation
The project targets Python 3.11+.
python3 -m pip install geobe==0.1.2
To install from a local checkout for development:
python3 -m pip install -e ".[dev]"
Running Programs
Run a .geo file:
geobe examples/input_store_transform_output.geo --input hello
Run inline source:
geobe --code "○→▽" --input hello
Run a literal string program:
geobe --code "«hello, Geobe!»→▽"
Read additional input values from standard input:
printf 'first\nsecond\n' | geobe --code "○→▽\n○→▽" --stdin-input
Start the interactive spelling console:
geobe --console
In console mode, lowercase letters are echoed as Geobe's mapped alphabet
symbols. Pressing Enter prints the English equivalent of the current line.
For example, typing hello! displays ▹▶▿▿◂!, then Enter prints hello!.
Trace execution as JSON:
geobe --code "○→□→▽" --input hello --trace
Trace execution in readable text:
geobe --code "○→□→▽" --input hello --trace --trace-format text
Running the package module directly executes the built-in demo program:
python3 -m geobe
Example Program
examples/input_store_transform_output.geo
○→□→△→▽
With input hello, the program stores the value, applies the default identity
transform, and outputs hello.
Array loop:
○→▶→◀→▶▶
With Python input [1, 2, 3], the program traverses the array and outputs
[1, 2, 3].
Spelled text:
spell ▹▶▿▿◂ ◮◂ ◣▿▵!
This decodes to hello world! and outputs it.
Python code can also encode English into the triangle alphabet:
from geobe.parser import encode_spell_text
encoded = encode_spell_text("Hello world!")
Custom Transforms
The △ symbol is backed by a transform registry. The default transform is
identity, and you can register your own behavior in Python code.
See examples/custom_transform.py for a minimal example that returns a custom
formatted value.
Development
Run the test suite:
pytest
Run linting and type checks:
ruff check .
mypy src tests
Project Layout
src/geobe/interpreter, parser, runtime state, and CLIexamples/documented sample programstests/coverage for the CLI, parser, interpreter, and examples
Package Entry Points
geobeCLI:geobe.cli:main- Module entry point:
python3 -m geobe
Metadata
Release files for geobe 0.1.2
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 | |
|---|---|---|---|---|
| geobe-0.1.2.tar.gz | 16.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| geobe-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.6 kB
Release files / geobe-0.1.2.tar.gz
| Download URL | geobe-0.1.2.tar.gz |
|---|---|
| Size | 16.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b2846ea192bcbf4b0f5b6e242f53de08a7c4e7f0cb7415d3e702333bff83fb7
|
|
BLAKE2b-256 checksum How to use checksums |
115db0a6e7a151e3964fa179f26785108e3997d1915896a4100ef4a4e6e1d82e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / geobe-0.1.2-py3-none-any.whl
| Download URL | geobe-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
224122e176428d8c0a816e904f11dea34193cc6a695c673d710db2147fd2258b
|
|
BLAKE2b-256 checksum How to use checksums |
d061c80f4e6bf1417a73cec845b84c98e5412094de6f0edf9ce9b304743686f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for geobe 0.1.2
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.