Skip to main content

eee-project

Part of Ελληνικά Εκπαιδευτικά Εργαλεία (EEE) — Greek Language Educational Tools.

Same API for general Modern/Ancient Greek flavours, with the possibility of extending language coverage. Language codes follow ISO 639.

🔓 Open source:

💬 Community: https://telegram.me/eee_greek

Installation

pip install eee-project

# Install the backends you need:
pip install modern-greek-backend-eee
pip install unimorph-backend-eee
pip install ancient-greek-backend-eee

Development version (latest, from Codeberg) — for any of the above, replace with: pip install "<name> @ git+https://codeberg.org/EEE-project/<name>.git"

Requires Python 3.12+.

eee-project is a pure framework — no backends are bundled. Install the backend packages you need alongside it.

Development

make test                     # run all tests (quiet)
make test-v                   # run all tests (verbose)
make check                    # run ruff (curated rule set - see [tool.ruff.lint] in pyproject.toml)

Quick Start

Backends register themselves via entry points when installed, so inflect() finds them automatically:

import eee_project as eee

# Modern Greek (el) — requires modern-greek-backend-eee
eee.inflect("λύω",      {"Tense": "Pres", "Voice": "Act", "Person": "1", "Number": "Sing"}, "verb", language="el")  # → {"λύω"}
eee.inflect("γυναίκα", {"Gender": "Fem",  "Number": "Plur", "Case": "Gen"},                 "noun", language="el")  # → {"γυναικών"}

# Ancient Greek (grc) — requires ancient-greek-backend-eee
eee.inflect("λύω",  {"VerbForm": "Fin", "Tense": "Aor", "Voice": "Act", "Mood": "Ind", "Person": "1", "Number": "Sing"}, "verb", language="grc")  # → {"ἔλυσα"}
eee.inflect("θεός", {"Case": "Gen", "Number": "Sing", "Gender": "Masc"}, "noun", language="grc")  # → {"θεοῦ"}

language= is required unless backend names a single-language backend (e.g. backend="modern-greek" infers language="el").

Feature keys follow Universal Dependencies FEATS.

Named backends and chains

When multiple backends cover the same language, register them by name and configure a chain (e.g. try modern-greek first, fall back to unimorph). See docs/chains.md for the full chain API, stop="all" union mode, and hook extension points.

Greek diachronic coverage

Greek has a continuous documented history of ~3,500 years, with substantial morphological and phonological change across periods and dialects.

Variety Approx. dates Status
Mycenaean (Linear B) ~1490–1200 BCE Not covered
Arcado-Cypriot ~1100–300 BCE Not covered
Homeric/Epic 800–500 BCE Covered
Classical Attic 480–323 BCE Covered
Koine/Hellenistic 323 BCE–400 CE Covered
New Testament Greek ~50–100 CE Covered
Byzantine 400–1453 CE Partial
Katharevousa 1830–1976 CE Partial
Standard Demotic 1976–present Covered

The major alphabetic dialects (Attic, Ionic, Doric, Aeolic) share the same morphological paradigms and differ mainly in phonology and orthography; Ancient Greek support here follows Classical Attic conventions.

from ancient_greek_backend_eee import AncientGreekBackend

# Query the same lemma under different historical periods
epic  = AncientGreekBackend.for_period("epic")               # Homer
attic = AncientGreekBackend.for_period("attic")               # Classical Attic
koine = AncientGreekBackend.for_period("hellenistic_koine", "roman_koine")  # Septuagint + NT

# Epic verse allows the unaugmented aorist alongside the standard form;
# Attic and Koine require the augment.
form = {"VerbForm": "Fin", "Tense": "Aor", "Voice": "Act", "Mood": "Ind", "Person": "1", "Number": "Sing"}
epic.inflect("λύω", form, "verb")   # {'λῦσα', 'ἔλυσα'}
attic.inflect("λύω", form, "verb")  # {'ἔλυσα'}
koine.inflect("λύω", form, "verb")  # {'ἔλυσα'}

See each backend's own README for exact lexicon-level coverage within each period.

Examples

13 runnable scripts and notebooks in examples/ — verbs/nouns/adjectives for el and grc, UniMorph, named backends, chains, hooks, and interactive Marimo viewers. See docs/examples.md for the full catalog and how to run each one.

API

Core functions: inflect() and inflect_traced() (shown in Quick Start above), list_lemmas()/list_lemmas_traced(), analyze()/analyze_traced() (reverse lookup), register_backend(), set_chain(), set_fallback_backend(), supported_languages(), language_info() — plus a slot-template system for building structured inflection tables, and two exception types (UnsupportedLanguageError, BackendLoadError) with chain-aware failure handling. Full signatures, the slot-template API, writing a new backend, and exception semantics: docs/api-reference.md.

Backends

Language Code Package
Modern Greek el modern-greek-backend-eee
Ancient Greek grc ancient-greek-backend-eee

unimorph-backend-eee adds a second, TSV-lookup rung for both Greek languages, plus several other languages (Latin, Russian, Spanish, Turkish, and 187 more on demand) — see its own README for bundled coverage and how it compares to the dedicated backends above.

Each backend's own README is the canonical source for its lexicon flavors, period/dialect coverage, lemma counts, and known limitations — modern-greek-backend-eee, ancient-greek-backend-eee, unimorph-backend-eee.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eee_project-1.1.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eee_project-1.1.0-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file eee_project-1.1.0.tar.gz.

File metadata

  • Download URL: eee_project-1.1.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for eee_project-1.1.0.tar.gz
Algorithm Hash digest
SHA256 997836eeefee601c29c9b021736a35b029a106f4ffb3817b3fb8a992ca8b5afc
MD5 e4300270da49883f2f702f52a5ed42b5
BLAKE2b-256 c80f53e178ed41307eb3849dbad520d0376af6f345033e926910d1a738c7c25a

See more details on using hashes here.

Provenance

The following attestation bundles were made for eee_project-1.1.0.tar.gz:

Publisher: publish.yml on EEE-project/eee-project

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eee_project-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: eee_project-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for eee_project-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76c97d80c014115f6ded2de43b8d7b785dc90940b663597dcdff75b210aa4f7b
MD5 dd06cd6c0cf44eb5bf2e2a27780240a3
BLAKE2b-256 c9cc6540b12c262c659534847a7bf16272fd48d2c5212fed2f1d0821207fe9be

See more details on using hashes here.

Provenance

The following attestation bundles were made for eee_project-1.1.0-py3-none-any.whl:

Publisher: publish.yml on EEE-project/eee-project

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page