Catalog PyPI
PACKAGE EXPLORERView in registry

acronymmaker

PyPI

Create awesome acronyms for your projects!

acronymacronymsbuildcreatemakewordwords
Versions collected1
Direct dependencies0From release 0.1.1
Last observed20 Oct, 18:26 UTC

README

Version 0.1.1 documentation

AcronymMaker in Python

pipeline status coverage report Quality Gate Status

Description

AcronymMaker creates awesome acronyms for your projects. Let us briefly describe how it works with some vocabulary.

A token is a set of words from which one word must appear in the acronym built by AcronymMaker. Said differently, there must be a letter in common between a word from the set and the built acronym. This letter may be either the first letter of a word in the token or any letter, depending on the letter selection strategy that is given to AcronymMaker.

Additionally, tokens may be optional. In this case, AcronymMaker will try to match a letter from the words in the optional token to a letter in the acronym, but the acronym will still be accepted if it fails to do so.

To find an acronym for a given sequence of tokens, AcronymMaker uses a dictionary, i.e., a set of known words, in which it looks for acronyms. A word in the dictionary is said to be explained (as an acronym) by the sequence of tokens if there is a letter in the word for each word in each (non-optional) token. In this case, we say that the letter is explained by the corresponding word.

Moreover, there are two ways to explain a word as an acronym: either by following the order of the tokens in the specified sequence, or without considering this order. AcronymMaker supports both of them (independently).

Finally, note that there may be unexplained letters in the acronym. Their number may be limited, by limiting both the number of consecutive unused letters and the number of overall unused letters in a word. If one of these limits is exceeded, then the word will not be considered as explained.

Requirements

This project provides a Python implementation of AcronymMaker, you thus need Python 3 on your computer to run it.

You may install AcronymMaker on your computer along with all its dependencies thanks to pip with the following command line:

python3 -m pip install acronymmaker

How to use AcronymMaker

There are two ways to use the Python implementation of AcronymMaker. This section describes both of them.

Command-Line Interface

AcronymMaker comes with a command-line interface that has the following usage:

acronymmaker [-l {all,first}] [-m {ordered,ordered-greedy,unordered}] [-c <nb>] [-u <nb>] -d <dict> [<dict> ...]

Let us now describe the parameters of the command line above.

  • The parameter -l (--select-letters) allows specifying whether only the first letter or all the letters of a word from a token may be used to explain a letter of the acronym.

  • The parameter -m (--matching-strategy) allows specifying whether the tokens must be considered ordered or unordered. The strategy ordered-greedy also considers the tokens in order, but using a more efficient algorithm that may however miss matching acronyms which would have been found by the ordered strategy.

  • The parameters -c (--max-consecutive-unused) and -u (--max-total-unused) allow specifying the maximum numbers of unused letters in the acronym, by limiting the number of consecutive and overall unexplained letters, respectively.

  • The parameter -d (--dictionary) allows specifying the path to the dictionary file(s) from which AcronymMaker will look for acronyms. You may find such dictionaries here. This is the only required parameter.

Once the command-line application has started, a prompt asks you to enter your tokens, separated by blank spaces. Each token defines a set of words separated with slashes (/), and may end with a question mark (?) to specify that the token is optional. When you press Enter, the matching acronyms are displayed in the console. You may then enter new sequences of tokens if you wish to find other acronyms, or you may exit the application with either Ctrl-C or Ctrl-D.

Python API

You may also want to directly interact with the Python API of AcronymMaker. The acronymmaker package provides the function and classes to programmatically set up an instance of AcronymMaker similarly to what is proposed for the command-line interface.

First, there are two functions corresponding to the letter selection strategies. Both of them are in the acronymmaker.selection module.

from acronymmaker.selection import select_all_letters, select_first_letter

There are also three classes corresponding to the matching strategies. They are defined in the acronymmaker.matching module.

from acronymmaker.matching import GreedyOrderedMatchingStrategy
from acronymmaker.matching import RegexBasedOrderedMatchingStrategy
from acronymmaker.matching import UnorderedMatchingStrategy

All these strategies define a constructor that takes as parameters the maximum number of consecutive unused letters and the maximum number of overall unused letters, as this can be seen in the example below.

matching_strategy = UnorderedMatchingStrategy(max_consecutive_unused=3, max_total_unused=5)

It is now possible to instantiate an AcronymMaker to create your acronyms. First, you need to import AcronymMaker.

from acronymmaker.maker import AcronymMaker

Then, you may instantiate an AcronymMaker as follows.

my_acronyms = []
maker = AcronymMaker(select_all_letters, matching_strategy, my_acronyms.append)

The maker initialized above will append to my_acronyms all the acronyms it will identify. You may of course provide any callback function as third parameter to the constructor of AcronymMaker. The only requirement for this function is that it must take as parameter an instance of Acronym (from the acronymmaker.matching module). You can for instance print it, display it on a GUI, etc.

Then, you need to tell to the instance of AcronymMaker what are the words that are authorized as acronyms (a.k.a. the "dictionary"). We provide a set of dictionary as text files, but you can of course use your own set of words.

To add new words, you can either add them one at a time, or all of them at once.

maker.add_known_word('foo')
maker.add_known_words(['bar', 'baz'])

Then, you need to provide the list of the tokens for which to find an acronym. To this end, the TokenBuilder, defined in acronymmaker.token, makes easier the creation of a Token.

builder = TokenBuilder(select_all_letters)
builder.add_word('foo')
builder.add_word('bar')
builder.set_optional(True)
token = builder.build()

Once you have built all your tokens, put them in a list, say tokens. Finally, pass this list as parameter to the find_acronym method of maker. It will try to explain each word of the dictionary, and will invoke the callback function specified when creating the instance of AcronymMaker each time it successfully explains a word with the corresponding Acronym instance.

maker.find_acronyms(tokens)

To deal with the instances of Acronym that are produced by this method and stored in the list my_acronyms (in this example), you may be particularly interested in the following methods:

  • get_word() gives the word that is explained as an acronym, with each explained letter upper-cased.

  • get_explanations() gives the list of explanations of the acronym, i.e., all the possible combinations of words in the tokens that explain the word as an acronym. Moreover, each letter corresponding to an explained letter of the acronym are upper-cased.

Downloads & popularity

1downloads
1-day window · source-reported counts19 Oct 2026
24120
2026-07-23: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-07-23–2026-07-232026-07-24: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-07-24–2026-07-242026-07-29: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-07-29–2026-07-292026-08-01: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-02–2026-08-022026-08-03: 4 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-03–2026-08-032026-08-04: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-04–2026-08-042026-08-07: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-07–2026-08-072026-08-09: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-09–2026-08-092026-08-14: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-14–2026-08-142026-08-15: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-15–2026-08-152026-08-17: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-17–2026-08-172026-08-18: 24 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-18–2026-08-182026-08-19: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-19–2026-08-192026-08-20: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-20–2026-08-202026-08-24: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-24–2026-08-242026-08-31: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-08-31–2026-08-312026-09-03: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-03–2026-09-032026-09-06: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-06–2026-09-062026-09-08: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-08–2026-09-082026-09-09: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-09–2026-09-092026-09-10: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-10–2026-09-102026-09-12: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-12–2026-09-122026-09-14: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-14–2026-09-142026-09-22: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-22–2026-09-222026-09-24: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-24–2026-09-242026-09-26: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-26–2026-09-262026-09-27: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-27–2026-09-272026-09-30: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-09-30–2026-09-302026-10-01: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-01–2026-10-012026-10-03: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-03–2026-10-032026-10-06: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-06–2026-10-062026-10-08: 5 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-08–2026-10-082026-10-09: 3 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-09–2026-10-092026-10-13: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-13–2026-10-132026-10-14: 2 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-14–2026-10-142026-10-15: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-15–2026-10-152026-10-19: 1 · observed 2026-10-20T20:36:38.9916683Z · period 2026-10-19–2026-10-19
23 Jul19 Oct

pypistats · 38 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-19 – 2026-10-1912026-10-20T20:36:38.9916683Z
2026-10-15 – 2026-10-1512026-10-20T20:36:38.9916683Z
2026-10-14 – 2026-10-1422026-10-20T20:36:38.9916683Z
2026-10-13 – 2026-10-1312026-10-20T20:36:38.9916683Z
2026-10-09 – 2026-10-0932026-10-20T20:36:38.9916683Z
2026-10-08 – 2026-10-0852026-10-20T20:36:38.9916683Z
2026-10-06 – 2026-10-0632026-10-20T20:36:38.9916683Z
2026-10-03 – 2026-10-0312026-10-20T20:36:38.9916683Z
2026-10-01 – 2026-10-0122026-10-20T20:36:38.9916683Z
2026-09-30 – 2026-09-3022026-10-20T20:36:38.9916683Z
2026-09-27 – 2026-09-2722026-10-20T20:36:38.9916683Z
2026-09-26 – 2026-09-2632026-10-20T20:36:38.9916683Z
2026-09-24 – 2026-09-2412026-10-20T20:36:38.9916683Z
2026-09-22 – 2026-09-2212026-10-20T20:36:38.9916683Z
2026-09-14 – 2026-09-1412026-10-20T20:36:38.9916683Z
2026-09-12 – 2026-09-1212026-10-20T20:36:38.9916683Z
2026-09-10 – 2026-09-1012026-10-20T20:36:38.9916683Z
2026-09-09 – 2026-09-0922026-10-20T20:36:38.9916683Z
2026-09-08 – 2026-09-0812026-10-20T20:36:38.9916683Z
2026-09-06 – 2026-09-0622026-10-20T20:36:38.9916683Z
2026-09-03 – 2026-09-0332026-10-20T20:36:38.9916683Z
2026-08-31 – 2026-08-3122026-10-20T20:36:38.9916683Z
2026-08-24 – 2026-08-2422026-10-20T20:36:38.9916683Z
2026-08-20 – 2026-08-2012026-10-20T20:36:38.9916683Z
2026-08-19 – 2026-08-1922026-10-20T20:36:38.9916683Z
2026-08-18 – 2026-08-18242026-10-20T20:36:38.9916683Z
2026-08-17 – 2026-08-1732026-10-20T20:36:38.9916683Z
2026-08-15 – 2026-08-1512026-10-20T20:36:38.9916683Z
2026-08-14 – 2026-08-1432026-10-20T20:36:38.9916683Z
2026-08-09 – 2026-08-0922026-10-20T20:36:38.9916683Z
2026-08-07 – 2026-08-0722026-10-20T20:36:38.9916683Z
2026-08-04 – 2026-08-0422026-10-20T20:36:38.9916683Z
2026-08-03 – 2026-08-0342026-10-20T20:36:38.9916683Z
2026-08-02 – 2026-08-0212026-10-20T20:36:38.9916683Z
2026-08-01 – 2026-08-0112026-10-20T20:36:38.9916683Z
2026-07-29 – 2026-07-2912026-10-20T20:36:38.9916683Z
2026-07-24 – 2026-07-2412026-10-20T20:36:38.9916683Z
2026-07-23 – 2026-07-2322026-10-20T20:36:38.9916683Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.121 Feb 20210

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

ACCESSIBLE
acronym-maker/python-implementation

Shared repository data · GitLab

License detected in repository
GNU General Public License v3.0 only
License branch / ref
master
Contributor identities
5 · complete API traversal
License file
Contributors · showing 5 of 5 collected
ContributorContributions
Romain WALLON14
Romain WALLON2
Romain Wallon2
Romain WALLON1
Romain Wallon1

Default-branch author identities; GitLab commit counts exclude merge commits.

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

5identities
Gauge · observed snapshots23 Oct 2026
52.50
2026-10-20: 5 · observed 2026-10-20T20:17:54.2732669Z2026-10-21: 5 · observed 2026-10-21T20:18:11.7985122Z2026-10-22: 5 · observed 2026-10-22T20:18:31.8092443Z2026-10-23: 5 · observed 2026-10-23T20:18:51.3757829Z
20 Oct23 Oct

gitlab · 4 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-2352026-10-23T20:18:51.3757829Z
2026-10-2252026-10-22T20:18:31.8092443Z
2026-10-2152026-10-21T20:18:11.7985122Z
2026-10-2052026-10-20T20:17:54.2732669Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:26 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:23464c9fdc3bd5c9fd102470d09449b833b53e5ebcba1a6d5a7bea235ee4ef03