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.5.3.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.5.3-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eee_project-1.5.3.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.5.3.tar.gz
Algorithm Hash digest
SHA256 de13b0ec24d4129e16cc1f6e6fa34c45ef0c9c8100b6746b632d70255c7e2480
MD5 09a96d3f19ffc6762cbc78b33cd0270c
BLAKE2b-256 b16d767a6dd7d018126f122ad8fde11e4ab0f483603fe5eb989ecb225c191bf2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: eee_project-1.5.3-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.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d2d9b69b0f19c5700898e7bacbd601156209b8388a91cf0f0e3ae48cfaf5ad09
MD5 db387e466cf9cceacf6549bdeab06c29
BLAKE2b-256 add5dfce71eba8ad860d9e1559b224bbd87646f1e5b2a9178fb633e21ab62cc1

See more details on using hashes here.

Provenance

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