Skip to main content

esMorph

esMorph

A fast Spanish morphological analyzer written in Rust with a Python API

Documentation · PyPI · crates.io · Español

Version Supported Python versions Crate Build Ruff License


esMorph is a morphological analyzer of Spanish: a Rust core with a Python API. For a word form it finds the analyses in a dictionary built from Wiktionary - the lemma, the part of speech and the Universal Dependencies features - orders them by probability and builds the forms of the word: conjugation, gender and number.

It analyzes 1.2 million tokens per second from Python, 28 times faster than spaCy, and lemmatizes as fast as simplemma, whose lemmas are right less often on the UD test sets of AnCora, PUD and COSER. Parts of speech, features and lemmas follow the UD guidelines and the conventions of the AnCora treebank, so the results can be compared with spaCy, Stanza and other UD tools.

  • Analyzer - the analyses of a word form by probability, lists of words and lemmatization, checking a word form against the dictionary
  • Universal Dependencies - parts of speech, features and lemmas by the UD guidelines and the AnCora conventions
  • Verbs with clitics - a verb with enclitic pronouns and its words: dámelo is da + me + lo
  • Tokens out of the dictionary - punctuation, numbers, ordinals, Roman numerals, names, addresses and abbreviations by rules
  • Unknown words - analyses by the ending, a hyphen or a prefix, and the forms of guessed words
  • Inflection - the forms of a lexeme and the form with given UD features
  • Comparison - accuracy, inflection and speed compared with simplemma, spaCy, Stanza, ablaut and verbecc

Installation

Python 3.11 or newer is required.

pip install esmorph

Or with uv:

uv add esmorph

Wheels are built for Linux (Alpine included), macOS and Windows and for the free-threaded Python 3.14t; Rust is not needed to install them, and the dictionary is in the package. On other platforms pip builds the package from source, which requires Rust 1.88 or newer. See the Installation page.

For Rust there is the crate esmorph with the dictionary (cargo add esmorph; the documentation is on docs.rs).

Quick start

>>> from esmorph import Analyzer

>>> morph = Analyzer()
>>> morph.lemmatize("Los niños cantaban en la plaza".split())
['el', 'niño', 'cantar', 'en', 'el', 'plaza']
>>> analysis = morph.analyze("camiones")[0]
>>> analysis.lemma, analysis.pos, analysis.feats
('camión', 'NOUN', {'Gender': 'Masc', 'Number': 'Plur'})
>>> morph.analyze("hablar")[0].inflect(Tense="Past", Person="3", Number="Plur")
'hablaron'
>>> [form.word for form in morph.analyze("bonitas")[0].forms()]
['bonito', 'bonita', 'bonitos', 'bonitas']

The analyzer is created once: it loads the dictionary, and then it can be used in the whole program.

Features

Analysis of a word form

analyze gives the analyses of a word form, the most probable first: objects Analysis with the lemma, the part of speech, the UD features, the probability and the source of the analysis. Case does not matter for finding a word, though a word with a capital letter may also be a name, and a word without its accents is found too. Analyses are immutable: they can be compared, put into sets and pickled.

>>> [(a.lemma, a.pos, round(a.prob, 3)) for a in morph.analyze("canto")]
[('canto', 'NOUN', 0.999), ('cantar', 'VERB', 0.001)]
>>> analysis = morph.analyze("dámelo")[0]
>>> analysis.lemma, analysis.pos, analysis.words
('dar', 'VERB', ('da', 'me', 'lo'))
>>> morph.is_known("Camion"), morph.is_known("qzxw")
(True, False)

analyze_many analyzes a list of words, and lemmatize gives their lemmas without the GIL. The analyzer and the analyses are pickled, so they work with multiprocessing and joblib.

See the documentation: analyzer, word analysis.

Parts of speech and features of Universal Dependencies

Parts of speech, features and lemmas follow the Universal Dependencies guidelines and, where they are silent, the conventions of the largest Spanish treebank, UD Spanish AnCora:

  • determiners, pronouns, prepositions and conjunctions have the lemmas and features of AnCora: la is the article el or the pronoun él, se is él with Reflex=Yes, su is DET with Poss=Yes
  • ser, estar, haber and the other auxiliaries have both AUX and VERB analyses
  • a participle is a verb and an adjective, verbs have no -se in the lemma, a proper name has a lemma with a capital letter
>>> [(w, morph.analyze(w)[0].lemma, morph.analyze(w)[0].pos) for w in ["la", "su", "hay", "madrid"]]
[('la', 'el', 'DET'), ('su', 'su', 'DET'), ('hay', 'haber', 'VERB'), ('madrid', 'Madrid', 'PROPN')]
>>> morph.analyze("la")[0].feats
{'Definite': 'Def', 'Gender': 'Fem', 'Number': 'Sing', 'PronType': 'Art'}

See the documentation.

Tokens out of the dictionary and unknown words

Tokens that the dictionary does not have get the analyses of rules, with source equal to "rule": punctuation, symbols, numbers in digits, ordinals (2.ª), Roman numerals, names, addresses and abbreviations. A lowercase word that neither the dictionary nor the rules know is guessed, with source equal to "guess": by its last part after a hyphen, by the word without a known prefix, as a verb with clitics or by the dictionary words with its ending. A guessed word has its forms too.

>>> [(a.lemma, a.pos, a.source) for w in ["2.ª", "10.000", "xii"] for a in morph.analyze(w)]
[('2.º', 'ADJ', 'rule'), ('10000', 'NUM', 'rule'), ('xii', 'NUM', 'rule')]
>>> [(morph.analyze(w)[0].lemma, morph.analyze(w)[0].source) for w in ["supergallos", "esbeltísima"]]
[('supergallo', 'guess'), ('esbeltísimo', 'guess')]
>>> morph.analyze("zumbeábamos")[0].inflect(Tense="Pres", Person="3", Number="Sing")
'zumbea'

See the documentation: tokens out of the dictionary, unknown words.

Inflection

forms() gives the forms of the lexeme of an analysis in the order of its paradigm, and inflect gives the form with the given UD features, keeping the other features of the analysis. A variant, such as a form of vos or an older spelling, comes only from a variant.

>>> morph.analyze("gata")[0].inflect(Number="Plur")
'gatas'
>>> morph.analyze("hablás")[0].inflect(Mood="Imp")
'hablá'

See the documentation.

Comparison

The share of words whose first analysis has the right lemma, and the right part of speech, features and lemma all together, % (test parts of the UD 2.18 treebanks), and the speed of text analysis:

System Lemma, AnCora Lemma, PUD Lemma, COSER All together, PUD Tokens per second
esMorph 97.80 97.74 94.49 87.90 1,228,661
simplemma 96.94 96.96 93.50 - 2,507,937
spaCy es_core_news_sm 98.66 96.69 93.39 83.59 44,100
Stanza 99.16 97.80 94.98 86.34 2,694

esMorph analyzes a word without context, while spaCy and Stanza choose the analysis by the sentence and are trained on AnCora, so they lead on it; on PUD, new to all of them, the first analysis of esMorph has the right features and lemma together more often. An analysis with the right part of speech and lemma is among the analyses of esMorph for 96-99 % of words. It gives the gold form of 99.65, 93.29 and 95.55 % of the verbs of AnCora, PUD and COSER, against 98.87, 92.71 and 93.61 % of ablaut. A short text together with loading takes 3.5 ms against 0.35-2.3 s, and every further process with the same dictionary adds 3.6 MB of memory. Measured on Apple M3 Pro, Python 3.11.

See the documentation: all the scores, verb inflection, the chart of speed by the size of the text, memory and how it was measured.

Development

The project uses uv to manage dependencies, maturin to build the Rust module and ruff for linting and formatting. Python 3.11 or newer and Rust 1.88 or newer are required.

git clone https://github.com/SergeyShk/esMorph.git
cd esMorph

make deps        # create the environment, install the dependencies and build the Rust module
make dictionary  # build the dictionary from the snapshot of Wiktionary and the counts of treebanks
make test        # run the Python tests, the docstring examples (doctest) and the Rust tests
make lint        # ruff, mypy, rustfmt and clippy

The full list of commands is make help. The documentation is bilingual: English pages docs/*.md with Spanish docs/*.es.md next to them; update both versions when editing a page.

Before submitting changes, install the hooks that run the linters on commit and the tests on push:

uv run pre-commit install

Contributing

Bug reports, ideas and pull requests are welcome, in English or Spanish - the issues are open. The workflow and the checks to run before submitting a pull request are in CONTRIBUTING.md.

Project structure
  • crates/esmorph - the analyzer core in Rust
  • crates/esmorph-build - the builder of the dictionary
  • crates/esmorph-dict-es - the dictionary as a crate
  • crates/esmorph-py - the Python module esmorph._esmorph built with PyO3
  • python/esmorph - the Python package
  • scripts - exporting Wiktionary and the counts of the treebanks, the conventions of the dictionary, checking the installed package before publishing and the comparison with other tools
  • data - the tables of closed classes after UD Spanish AnCora and of the symbols of units
  • docs - MkDocs documentation in English and Spanish
  • tests - tests of the Python package

Authors

License

The code is distributed under the MIT license. The dictionary is built from Wiktionary and the treebanks UD Spanish AnCora and UD Spanish GSD, and is distributed under the CC BY-SA 4.0 license.

Citation

If you use esMorph in research or software, please cite it with the following BibTeX entry: this helps the project grow and be maintained. The same metadata is in CITATION.cff - GitHub shows it under "Cite this repository".

@software{esMorph,
  author = {Sergey Shkarin},
  title = {{esMorph, a fast morphological analyzer for Spanish}},
  year = 2026,
  url = {https://github.com/SergeyShk/esMorph}
}

Metadata

Release files for esmorph 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esmorph 0.1.0
File Size Uploaded Provenance Actions
esmorph-0.1.0.tar.gz 3.3 MB Without provenance Details for esmorph-0.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for esmorph 0.1.0
File Actions
esmorph-0.1.0-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details for esmorph-0.1.0-cp314-cp314t-win_arm64.whl
esmorph-0.1.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details for esmorph-0.1.0-cp314-cp314t-win_amd64.whl
esmorph-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details for esmorph-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
esmorph-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details for esmorph-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
esmorph-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details for esmorph-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
esmorph-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details for esmorph-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
esmorph-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details for esmorph-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
esmorph-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details for esmorph-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
esmorph-0.1.0-cp311-abi3-win_arm64.whl CPython 3.11 abi3 Windows ARM64 Details for esmorph-0.1.0-cp311-abi3-win_arm64.whl
esmorph-0.1.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for esmorph-0.1.0-cp311-abi3-win_amd64.whl
esmorph-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details for esmorph-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
esmorph-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details for esmorph-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl
esmorph-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details for esmorph-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
esmorph-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for esmorph-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
esmorph-0.1.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for esmorph-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
esmorph-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for esmorph-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 58.2 MB

Release files / esmorph-0.1.0.tar.gz

Download URL esmorph-0.1.0.tar.gz
Size 3.3 MB
Tags Source
SHA-256 checksum
How to use checksums
7f48799102b99736b3dda1cf1a576c47c982a27bba53ec05122f9b52a3b2c0f4
BLAKE2b-256 checksum
How to use checksums
ca2c4465facf353acaa5fbd0cbea46720983a380ccfa0fda95481be55eed999b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-win_arm64.whl

Download URL esmorph-0.1.0-cp314-cp314t-win_arm64.whl
Size 3.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
a5c554e99bf542ec7eb17ec9aef9be2d6b648b96498acbb8ce12817c2917b26b
BLAKE2b-256 checksum
How to use checksums
e948c53baf202a63f0129606184ebff5a4b2c4e02c6ce5aa4bf9d217e74a1de0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-win_amd64.whl

Download URL esmorph-0.1.0-cp314-cp314t-win_amd64.whl
Size 3.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
bfe7fcf1216dc2e74ee81fd34b278511600bfb584e21215a29f00772668ab77f
BLAKE2b-256 checksum
How to use checksums
c1cc7e8707e9dad9244dd4f0562690d844135917db66e05e24f8442365fe304e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL esmorph-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 3.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
633648c99f7321df2548802186d08123966d6a9b4454fadd7b7309afc49002a7
BLAKE2b-256 checksum
How to use checksums
0554deadacc1e8f54599b287ffbab1e22631a77a1877b6d33f0ae95bc6bf0457
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL esmorph-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 3.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
08f63e54057b943e0600c928c47c11ea60a74535b867a0a86c5ce02a0a72269f
BLAKE2b-256 checksum
How to use checksums
867fcef4120f3e6ab37699eadee1edd9200b45365d1f798abfcb4ecf629a0e46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL esmorph-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7415d3b4de3ce058fce3abaffd639c94426897fcf777c449c56eb08920436585
BLAKE2b-256 checksum
How to use checksums
9482e70ab92a556e2fed40bb820fdc4de37e8b6429db1844e761f72d77113d29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL esmorph-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1ea297da161f39fc875d07df70bb2bc0c565fa065b214f58e89507b73d40493e
BLAKE2b-256 checksum
How to use checksums
d6c7cdedeb74ff558e69f7a3afbc8b80fce7c1062a92b15f413fb93e34182dbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL esmorph-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2222d3a4a77fad5cc66ca845c4507c8c945dee22c6c9c30502ee94ca125df0df
BLAKE2b-256 checksum
How to use checksums
22a192e80ecd08f4e804e7e2cb2ebe905e01491e717479e3477e08cf8b00471b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL esmorph-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
Size 3.4 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
0600516720288889ca9f610dd3e94a06f9f6a7b2440ebde8a661db1a614885ba
BLAKE2b-256 checksum
How to use checksums
fa15eeb85952934a1ff55787bd62cd06a769ee26f67e9826493d6e166649ee87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-win_arm64.whl

Download URL esmorph-0.1.0-cp311-abi3-win_arm64.whl
Size 3.3 MB
Tags CPython 3.11 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
38f51433d7ab8d109a7961635784cb6793459a03b7ae6563a07e4073b03f8500
BLAKE2b-256 checksum
How to use checksums
6ee543c40a181982226e9256267021dc33d302eab12241bf9cc027775c120682
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-win_amd64.whl

Download URL esmorph-0.1.0-cp311-abi3-win_amd64.whl
Size 3.3 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
941e169bc8f6cbbe75895c57fc0ee50f4f34f2ef28399a434cc1187e8f9d7347
BLAKE2b-256 checksum
How to use checksums
3fb5dcb8a22dadcf610c63a7160c624444baea60351e46268ddb998b2412f076
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL esmorph-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 3.6 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
1f32b687a425178aa4d9d71b2b5175df974dc319b3deb7206121039b9321cfde
BLAKE2b-256 checksum
How to use checksums
a458b18426d9e963916e199e959dad3ddc89456890855b0ae2bb39f1ddffbdbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL esmorph-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl
Size 3.6 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
93069b914a51fed6a7d1b38f7fde968e0c50769e2b70ffbe87318c9b883c75bc
BLAKE2b-256 checksum
How to use checksums
b66678efa04da0a64d5bb55216aa83f4f391ac7c40cd64b3780792dee5320f64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL esmorph-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
cd3bb328a6879d21a16ce02d1f64c760b87fc655a2943ee72b7795e64ed53f5b
BLAKE2b-256 checksum
How to use checksums
db1c020d707df9eb31606041cb342de3d2f3e61e827faaf4b1f17ae8dc4a74d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL esmorph-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.4 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
11852c51d174a7f978ac398ba0cf24e1d6df3ffa87d48650720a6f81f5e5dbde
BLAKE2b-256 checksum
How to use checksums
7b81b3cf839d3c9cd6bd88c9eed798aacfd05c116e036212559b613ee6a4efe2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL esmorph-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Size 3.4 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e152a4b761898870a656550ddddced8b983d8da8403012308ff94c7c67d3a838
BLAKE2b-256 checksum
How to use checksums
3b48901ac0be7877bcc42d4816f2e4f181746329500b8f1ec27bbb31157217a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / esmorph-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL esmorph-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 3.4 MB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d712834fa9db5157a582e7a01c2a6c96bc6581a825137d4ed9cdfa6da7d2bd62
BLAKE2b-256 checksum
How to use checksums
441584f8948b8afaea93d5b1f96dff72055c09c9d44f0a2584f6dafb3afe4a55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for esmorph 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

17 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page