This repository has been archived on 2026-05-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
foreign-thon-old/CONTRIBUTING.md

1.5 KiB

Contributing to ForeignThon

Project structure

foreignthon/ ├── packages/ │ ├── foreignthon/ # core engine + fpy CLI │ │ ├── src/foreignthon/ │ │ │ ├── cli.py # fpy commands │ │ │ ├── transpiler.py # tokenizer-based transpiler │ │ │ ├── pack.py # language pack loader │ │ │ └── errors.py # bilingual error hook │ │ └── tests/ │ └── langs/ │ └── es/ # Spanish language pack │ └── src/foreignthon_es/es.json

Setting up

python -m venv .venv && source .venv/bin/activate
pip install -e "packages/foreignthon[dev]"
pip install -e packages/langs/es

Running tests

pytest packages/foreignthon/tests/ -v

Adding a new language pack

  1. Copy packages/langs/es/ to packages/langs/<code>/
  2. Rename foreignthon_esforeignthon_<code> throughout
  3. Fill in <code>.json following the same schema as es.json
  4. Validate it: fpy pack packages/langs/<code>/src/foreignthon_<code>/<code>.json
  5. Add tests if the language has tricky characters or edge cases
  6. Open a PR or publish independently as foreignthon-<code> on PyPI

Language pack schema

Every pack must have these top-level keys: meta, keywords, builtins, exceptions, error_messages, stdlib

See packages/langs/es/src/foreignthon_es/es.json as the reference.

Code style

ruff check packages/foreignthon/src