コード例 #1
0
    def test_census_origins(self):
        a = ety.census('flying aerodynamically')
        b = ety.origins('flying')
        c = ety.origins('aerodynamically')

        self.assertEqual(a.origins(), b + c)

        d = ety.census('flying aerodynamically')
        e = ety.origins('flying', recursive=True)
        f = ety.origins('aerodynamically', recursive=True)

        self.assertEqual(d.origins(recursive=True), e + f)
コード例 #2
0
ファイル: tests.py プロジェクト: zengjatzau/ety-python
    def test_census_origins(self):
        a = ety.census("flying aerodynamically")
        b = ety.origins("flying")
        c = ety.origins("aerodynamically")

        self.assertEqual(a.origins(), b + c)

        d = ety.census("flying aerodynamically")
        e = ety.origins("flying", recursive=True)
        f = ety.origins("aerodynamically", recursive=True)

        self.assertEqual(d.origins(recursive=True), e + f)
コード例 #3
0
def get_origins(word: str, language_code: str) -> List[Word]:
    origins = ety.origins(word, language=language_code, recursive=True)
    origins = [ety_to_word(origin) for origin in origins]
    # parallelize "lazy-loading" word_to_dict call, which makes an api fetch for each definition
    pool = mp.Pool(mp.cpu_count())
    serialized_origins = pool.map_async(word_to_dict, origins).get()
    pool.close
    return serialized_origins
コード例 #4
0
    def test_cli_multiple_words(self, output):
        words = ["test", "word"]
        sys.argv = ["ety.py"] + words

        ety.cli()

        origins = [origin for word in words for origin in ety.origins(word)]

        expected_lines = len(words) + len(origins) + len(words) - 1

        self.assertEqual(expected_lines, output.lines)
コード例 #5
0
    def test_cli_recursive(self, output):
        words = ["test"]
        sys.argv = ["ety.py", "-r"] + words

        ety.cli()

        origins = ety.origins("test", recursive=True)

        expected_lines = len(words) + len(origins)

        self.assertEqual(expected_lines, output.lines)
コード例 #6
0
    def test_cli_no_args(self, output):
        words = ["test"]
        sys.argv = ["ety.py", "test"]

        ety.cli()

        origins = ety.origins("test")

        expected_lines = len(words) + len(origins)

        self.assertEqual(expected_lines, output.lines)
コード例 #7
0
def cli():
    """
    Command line interface
    :return: Exit code
    """
    parser = argparse.ArgumentParser(prog="ety")
    parser.add_argument("words",
                        type=str,
                        nargs='+',
                        help="the search word(s)")
    parser.add_argument("-r",
                        "--recursive",
                        help="search origins recursively",
                        action="store_true")
    parser.add_argument("-t",
                        "--tree",
                        help="display etymology tree",
                        action="store_true")

    args = parser.parse_args()

    output = ''
    for word in args.words:
        source_word = ety.Word(word, color=True)
        roots = ety.origins(word, recursive=args.recursive)

        if not roots:
            print("No origins found for word: {}".format(word))
            continue

        # Bullet point: '\u2022'
        if args.tree:
            output += '%s\n\n' % str(ety.tree(source_word))
        else:
            output += '\n\n%s\n \u2022 ' % source_word
            output += '\n \u2022 '.join(root.pretty for root in roots)

    print(output.strip())

    return 0
コード例 #8
0
def getCompleteInfo(word):
    dictionary = PyDictionary()
    mean = {}
    mean = dictionary.meaning(word)
    synonyms = []
    antonyms = []

    speak("Alright. Here is the information you asked for.")

    for key in mean.keys():
        speak("When " + str(word) + " is used as a " + str(key) +
              " then it has the following meanings")
        for val in mean[key]:
            print(val)
        print()

    speak("The possible synonyms and antonyms of " + str(word) +
          " are given below.")
    for syn in wordnet.synsets(word):
        for l in syn.lemmas():
            if l.name() not in synonyms:
                synonyms.append(l.name())
            if l.antonyms() and l.antonyms()[0].name() not in antonyms:
                antonyms.append(l.antonyms()[0].name())

    print("Synonyms: ", end=" ")
    print(' '.join(synonyms), end=" ")
    print("\n")
    print("Antonyms: ", end=" ")
    print(' '.join(antonyms), end=" ")
    print("\n")

    ori = ety.origins(word)
    if len(ori) > 0:
        speak("There are " + str(len(ori)) + " possible origins found.")
        for origin in ori:
            print(origin)
    else:
        speak("I'm sorry. No data regarding the origin of " + str(word) +
              " was found.")
コード例 #9
0
def test_circular_etymology():
    """Test to avoid https://github.com/jmsv/ety-python/issues/20
    This method is run with a 10 second timeout (see Makefile test)"""
    ety.origins('software', recursive=True)
コード例 #10
0
 def test_origins_recursion(self):
     o = ety.origins(ety.random_word(), recursive=True)
     self.assertGreater(len(o), 0)
     o = ety.origins('iland', recursive=True)
     self.assertGreater(len(o), 0)
コード例 #11
0
 def test_origins(self):
     word = ety.origins(ety.random_word())
     self.assertGreater(len(word), 0)
コード例 #12
0
ファイル: app.py プロジェクト: PureDreamer/MoreToWords
def find_ety(search):
    search = ety.origins(search)
    word_origin_list = ""
    for word in search:
        word_origin_list += str(word)
    return word_origin_list
コード例 #13
0
def word_origin(word):
    origin = ety.origins(word)
    if len(origin) == 0:
        return "Undefined"
    lang = origin[0].language.name.split('(')[0].strip()
    return lang
コード例 #14
0
import re
from typing import Dict, List, Any
import multiprocessing as mp

from pydantic import BaseModel
import ety
from wiktionaryparser import WiktionaryParser

parser = WiktionaryParser()
origin_descendants = {}

for word in ety.data.etyms['eng'].keys():
    origins = ety.origins(word, recursive=True)
    for origin in origins:
        # tuple of the form ('gata', 'Old Norse')
        origin = (origin._word, origin._language.iso)
        if origin_descendants.get(origin):
            origin_descendants[origin].append(word)
        else:
            origin_descendants[origin] = [word]


class Word(BaseModel):
    word: str
    language: str = 'English'
    language_code: str = 'eng'
    meaning: List[Dict[str, Any]] = []


def camel_to_snake(text: str) -> str:
    text = re.sub(r'(?<!^)(?=[A-Z])', '_', text).lower()