mirror of
https://github.com/Tiendil/pynames.git
synced 2025-09-21 20:30:48 +02:00
gh-12 Сформировать пакет и выложить в PyPI
This commit is contained in:
parent
e276a08467
commit
bc496f64be
8 changed files with 188 additions and 159 deletions
124
README.rst
Normal file
124
README.rst
Normal file
|
@ -0,0 +1,124 @@
|
|||
==================================
|
||||
PYNAMES — names generation library
|
||||
==================================
|
||||
|
||||
Pynames intended for generation of all sorts of names. Currently it implements generators for character names of different races and cultures:
|
||||
|
||||
* Scandinavian: traditional names;
|
||||
* Russian: pagan names;
|
||||
* Mongolian: traditional names;
|
||||
* Korean: traditional names;
|
||||
* Elven: DnD names;
|
||||
* Elven: Warhammer names;
|
||||
* Goblins: custom names;
|
||||
* Orcs: custom names;
|
||||
* Iron Kingdoms: caspian midlunder sulese;
|
||||
* Iron Kingdoms: dwarf;
|
||||
* Iron Kingdoms: gobber;
|
||||
* Iron Kingdoms: iossan nyss;
|
||||
* Iron Kingdoms: khadoran;
|
||||
* Iron Kingdoms: ogrun;
|
||||
* Iron Kingdoms: ryn;
|
||||
* Iron Kingdoms: thurian morridane;
|
||||
* Iron Kingdoms: tordoran;
|
||||
* Iron Kingdoms: trollkin.
|
||||
|
||||
There are two supported languages : English & Russian. Russian language names are generated with forms for every case of a noun and time.
|
||||
|
||||
Currently implemented two generation algorithms:
|
||||
|
||||
* ``pynames.from_list_generator`` — names are created from list of predefined words;
|
||||
* ``pynames.from_table_generator`` — names are created using templates, every part of template is gotten from separate table;
|
||||
|
||||
The library is easily extensible. If you need extra functionality (including new languages), please, contact me, post an issue, or just make a pull request.
|
||||
|
||||
*************
|
||||
Installation
|
||||
*************
|
||||
|
||||
::
|
||||
|
||||
pip install pynames
|
||||
|
||||
*************
|
||||
Usage
|
||||
*************
|
||||
|
||||
.. code:: python
|
||||
|
||||
from pynames.generators import GENDER, LANGUAGE
|
||||
|
||||
All generators are divided by "races", so that all generators of elven names are placed in the module ``pynames.generators.elven``, etc.
|
||||
|
||||
.. code:: python
|
||||
|
||||
from pynames.generators.elven import DnDNamesGenerator
|
||||
elven_generator = DnDNamesGenerator()
|
||||
|
||||
Number of different names (male and female) and for each gender separately.
|
||||
|
||||
.. code:: python
|
||||
|
||||
In [4]: elven_generator.get_names_number()
|
||||
Out[4]: 1952949936
|
||||
|
||||
In [5]: elven_generator.get_names_number(GENDER.MALE)
|
||||
Out[5]: 976474968
|
||||
|
||||
In [6]: elven_generator.get_names_number(GENDER.FEMALE)
|
||||
Out[6]: 976474968
|
||||
|
||||
Fast random name generation.
|
||||
|
||||
.. code:: python
|
||||
|
||||
In [7]: elven_generator.get_name_simple()
|
||||
Out[7]: u'Elineer'
|
||||
|
||||
In [8]: elven_generator.get_name_simple(GENDER.MALE)
|
||||
Out[8]: u'Caslithdar'
|
||||
|
||||
In [9]: elven_generator.get_name_simple(GENDER.MALE, LANGUAGE.EN) # English
|
||||
Out[9]: u'Mararon'
|
||||
|
||||
In [10]: print elven_generator.get_name_simple(GENDER.MALE, LANGUAGE.RU) # Russian
|
||||
Ттомусиэл
|
||||
|
||||
Instead of text, you can get the Name object with additional functionality.
|
||||
|
||||
.. code:: python
|
||||
|
||||
In [11]: name = elven_generator.get_name()
|
||||
|
||||
In [12]: name.translations # all translations
|
||||
Out[12]:
|
||||
{u'm': {u'en': u"ae'Angaithnyn",
|
||||
u'ru': [u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0430",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0443",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0430",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u043e\u043c",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0435",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u044b",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u043e\u0432",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0430\u043c",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u043e\u0432",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0430\u043c\u0438",
|
||||
u"\u0430\u044d'\u0410\u043d\u0433\u0430\u0438\u0442\u0442\u043d\u0438\u0438\u043d\u0430\u0445"]}}
|
||||
|
||||
In [13]: print u'\n'.join(name.get_forms_for(GENDER.MALE, language=LANGUAGE.RU))
|
||||
аэ'Ангаиттниин
|
||||
аэ'Ангаиттниина
|
||||
аэ'Ангаиттниину
|
||||
аэ'Ангаиттниина
|
||||
аэ'Ангаиттниином
|
||||
аэ'Ангаиттниине
|
||||
аэ'Ангаиттниины
|
||||
аэ'Ангаиттниинов
|
||||
аэ'Ангаиттниинам
|
||||
аэ'Ангаиттниинов
|
||||
аэ'Ангаиттниинами
|
||||
аэ'Ангаиттниинах
|
||||
|
||||
In [14]: name.genders
|
||||
Out[14]: frozenset({u'm'}) # all genders
|
Loading…
Add table
Add a link
Reference in a new issue