Skip to main content

Apertium Web Service

Project description

Apertium APy

Build Status Coverage Status PyPI PyPI - Python Version

Apertium APy, Apertium API in Python, is a web server exposing Apertium functions including text, document, and webpage translation, as well as morphological analysis and generation. More information is available on the Apertium Wiki.

Requirements

  • Python 3.6+
  • Tornado 4.5.3 - 6.0.4 (python3-tornado on Debian/Ubuntu)

Additional functionality is provided by installation of the following packages:

  • apertium-streamparser enables spell checking
  • requests enables suggestion handling
  • chromium_compact_language_detector enables improved language detection (cld2)
  • chardet enables website character encoding detection
  • commentjson allows to keep API keys in commented json
  • lxml enables pair preferences

Precise versions are available in requirements.txt and setup.py.

Installation

Before you install, you can try out a live version of APy at apertium.org.

APy is available through PyPi:

$ pip install apertium-apy

On Ubuntu/Debian, it is also available through apt:

$ wget -qO- https://apertium.projectjj.com/apt/install-nightly.sh | bash
$ apt-get install apertium-apy

Finally, GitHub Container Registry hosts an image of the provided Dockerfile with entry point apertium-apy exposing port 2737:

$ docker pull ghcr.io/apertium/apy

Usage

Installation through apt or pip adds an apertium-apy executable:

$ apertium-apy --help

usage: apertium-apy [-h] [-s NONPAIRS_PATH] [-l LANG_NAMES] [-f MISSING_FREQS]
                [-p PORT] [-c SSL_CERT] [-k SSL_KEY] [-t TIMEOUT]
                [-j [NUM_PROCESSES]] [-d] [-P LOG_PATH]
                [-i MAX_PIPES_PER_PAIR] [-n MIN_PIPES_PER_PAIR]
                [-u MAX_USERS_PER_PIPE] [-m MAX_IDLE_SECS]
                [-r RESTART_PIPE_AFTER] [-v VERBOSITY] [-V] [-S]
                [-M UNKNOWN_MEMORY_LIMIT] [-T STAT_PERIOD_MAX_AGE]
                [-wp WIKI_PASSWORD] [-wu WIKI_USERNAME] [-b]
                [-rs RECAPTCHA_SECRET] [-md MAX_DOC_PIPES] [-C CONFIG]
                [-ak API_KEYS_FILE]
                pairs_path

Apertium APY -- API server for machine translation and language analysis

positional arguments:
pairs_path            path to Apertium installed pairs (all modes files in
                        this path are included)

optional arguments:
-h, --help            show this help message and exit
-s NONPAIRS_PATH, --nonpairs-path NONPAIRS_PATH
                        path to Apertium tree (only non-translator debug modes
                        are included from this path)
-l LANG_NAMES, --lang-names LANG_NAMES
                        path to localised language names sqlite database
                        (default = langNames.db)
-f MISSING_FREQS, --missing-freqs MISSING_FREQS
                        path to missing word frequency sqlite database
                        (default = None)
-p PORT, --port PORT  port to run server on (default = 2737)
-c SSL_CERT, --ssl-cert SSL_CERT
                        path to SSL Certificate
-k SSL_KEY, --ssl-key SSL_KEY
                        path to SSL Key File
-t TIMEOUT, --timeout TIMEOUT
                        timeout for requests (default = 10)
-j [NUM_PROCESSES], --num-processes [NUM_PROCESSES]
                        number of processes to run (default = 1; use 0 to run
                        one http server per core, where each http server runs
                        all available language pairs)
-d, --daemon          daemon mode: redirects stdout and stderr to files
                        apertium-apy.log and apertium-apy.err; use with --log-
                        path
-P LOG_PATH, --log-path LOG_PATH
                        path to log output files to in daemon mode; defaults
                        to local directory
-i MAX_PIPES_PER_PAIR, --max-pipes-per-pair MAX_PIPES_PER_PAIR
                        how many pipelines we can spin up per language pair
                        (default = 1)
-n MIN_PIPES_PER_PAIR, --min-pipes-per-pair MIN_PIPES_PER_PAIR
                        when shutting down pipelines, keep at least this many
                        open per language pair (default = 0)
-u MAX_USERS_PER_PIPE, --max-users-per-pipe MAX_USERS_PER_PIPE
                        how many concurrent requests per pipeline before we
                        consider spinning up a new one (default = 5)
-m MAX_IDLE_SECS, --max-idle-secs MAX_IDLE_SECS
                        if specified, shut down pipelines that have not been
                        used in this many seconds
-r RESTART_PIPE_AFTER, --restart-pipe-after RESTART_PIPE_AFTER
                        restart a pipeline if it has had this many requests
                        (default = 1000)
-v VERBOSITY, --verbosity VERBOSITY
                        logging verbosity
-V, --version         show APY version
-S, --scalemt-logs    generates ScaleMT-like logs; use with --log-path;
                        disables
-M UNKNOWN_MEMORY_LIMIT, --unknown-memory-limit UNKNOWN_MEMORY_LIMIT
                        keeps unknown words in memory until a limit is
                        reached; use with --missing-freqs (default = 1000)
-T STAT_PERIOD_MAX_AGE, --stat-period-max-age STAT_PERIOD_MAX_AGE
                        How many seconds back to keep track request timing
                        stats (default = 3600)
-wp WIKI_PASSWORD, --wiki-password WIKI_PASSWORD
                        Apertium Wiki account password for SuggestionHandler
-wu WIKI_USERNAME, --wiki-username WIKI_USERNAME
                        Apertium Wiki account username for SuggestionHandler
-b, --bypass-token    ReCAPTCHA bypass token
-rs RECAPTCHA_SECRET, --recaptcha-secret RECAPTCHA_SECRET
                        ReCAPTCHA secret for suggestion validation
-md MAX_DOC_PIPES, --max-doc-pipes MAX_DOC_PIPES
                        how many concurrent document translation pipelines we
                        allow (default = 3)
-C CONFIG, --config CONFIG
                        Configuration file to load options from
-ak, --api-keys         JSON file where API keys are stored. Comments are allowed

Contributing

APy uses GitHub Actions for continuous integration. Locally, use make test to run the same checks it does. After installing Pipenv, run pipenv install --dev to install the requirements required for development, e.g. linters.

Project details


Download files

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

Source Distribution

apertium-apy-0.12.0.tar.gz (713.3 kB view details)

Uploaded Source

Built Distribution

apertium_apy-0.12.0-py3-none-any.whl (559.8 kB view details)

Uploaded Python 3

File details

Details for the file apertium-apy-0.12.0.tar.gz.

File metadata

  • Download URL: apertium-apy-0.12.0.tar.gz
  • Upload date:
  • Size: 713.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for apertium-apy-0.12.0.tar.gz
Algorithm Hash digest
SHA256 11e2f596e2645283ab8105fe12351e2b61a2b3d5cdcde1a099e9cfa3aa606094
MD5 f012d0e46848aa209b355f9e502a7332
BLAKE2b-256 c007b780f5fb360e79aa01708d32ed3ecd007182a4cc49eaefbda56a4578e5a3

See more details on using hashes here.

File details

Details for the file apertium_apy-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: apertium_apy-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 559.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for apertium_apy-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9af0bb863202001a6cda056b43e6716d4024abfc84a230013b21df565f5fd71
MD5 35eb77cb7893ef6be3ee6bb3b42c28d1
BLAKE2b-256 9c3d10cbf4d47f56abdc24af690e01e1db85fb298b897526175b76fcf4482544

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page