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.6.0.tar.gz (1.8 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.6.0-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eee_project-1.6.0.tar.gz
  • Upload date:
  • Size: 1.8 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.6.0.tar.gz
Algorithm Hash digest
SHA256 fc0c9239987c5b56993f85c00603b936f677c7dad187776ec54ecc79e78889a3
MD5 16db45fcb2c2a12fcb4334aa47951a1d
BLAKE2b-256 0ffa5a5420d5028396e37be674483013bbd6daa072d3d014e4eacb9275514fae

See more details on using hashes here.

Provenance

The following attestation bundles were made for eee_project-1.6.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.6.0-py3-none-any.whl.

File metadata

  • Download URL: eee_project-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 1.6 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12af1546c6851a24f39f15ee8cd0841cd89d0230720058e6e7b6d032a0358828
MD5 aa80820eedd0cac9df3c4bf27245e30d
BLAKE2b-256 d57e38629bd27367a49e2328da83105cd44fe25168a7547a01f894cab2d00737

See more details on using hashes here.

Provenance

The following attestation bundles were made for eee_project-1.6.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