diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml new file mode 100644 index 0000000..688522c --- /dev/null +++ b/.github/workflows/test-suite.yml @@ -0,0 +1,29 @@ +--- +name: Tests + +on: + push: + branches: [ "dev", "master" ] + pull_request: + branches: [ "dev", "master" ] + +jobs: + tests: + name: "Python ${{ matrix.version }} compatibility" + runs-on: "ubuntu-latest" + + strategy: + matrix: + version: [ "3.6", "3.7", "3.8", "3.9" ] + + steps: + - uses: "actions/checkout@v2" + - uses: "actions/setup-python@v2" + with: + python-version: "${{ matrix.version }}" + - name: "Install Gpytranslate" + run: python setup.py install + - name: "Install pytest" + run: python -m pip install pytest-asyncio + - name: "Run tests" + run: python -m pytest tests diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f83ae85..a273671 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,6 +18,8 @@ jobs: - name: Install Gpytranslate run: | python setup.py install + - name: "Install pytest" + run: python -m pip install pytest-asyncio - name: Run tests run: | diff --git a/gpytranslate/gpytranslate.py b/gpytranslate/gpytranslate.py index 97feb12..06f0ec4 100644 --- a/gpytranslate/gpytranslate.py +++ b/gpytranslate/gpytranslate.py @@ -1,5 +1,5 @@ from collections.abc import Mapping -from typing import Union, Literal, Dict, List, Any, Final +from typing import Union, Dict, List, Any import httpx @@ -7,7 +7,7 @@ class Translator: - __version__: Final[str] = "1.0.2" + __version__: str = "1.0.3" def __init__( self, @@ -24,7 +24,9 @@ async def translate( sourcelang: str = "auto", targetlang: str = "en", client: str = "gtx", - dt: Literal["t", "at", "rm", "bd", "md", "ss", "ex", "rw", "dj"] = "t", + dt: str = "t", + # Literal["t", "at", "rm", "bd", "md", "ss", "ex", "rw", "dj"] = "t", + # broken compatibility with python <3.8 :( dj: int = 1, **extra ) -> Union[TranslatedObject, List[TranslatedObject], Dict[str, TranslatedObject]]: diff --git a/setup.py b/setup.py index 03d24ec..4f9964c 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="gpytranslate", - version="1.0.2", + version="1.0.3", author="Davide Galilei", author_email="davidegalilei2018@gmail.com", description="A Python3 library for translating text using Google Translate API.", diff --git a/tests/test_detect.py b/tests/test_detect.py index 9aa1323..4cfd198 100644 --- a/tests/test_detect.py +++ b/tests/test_detect.py @@ -1,17 +1,12 @@ -import unittest +import pytest + from gpytranslate import Translator -class Test(unittest.IsolatedAsyncioTestCase): - async def test_detect(self): - translator = Translator() - language: str = await translator.detect( - text="Ciao Mondo." - ) +@pytest.mark.asyncio +async def test_detect(): + translator = Translator() + language: str = await translator.detect(text="Ciao Mondo.") - self.assertEqual( - language, - "it", - "Translations are not equal.", - ) + assert language == "it", "Translations are not equal." diff --git a/tests/test_translate.py b/tests/test_translate.py index 208c7e9..c29b30e 100644 --- a/tests/test_translate.py +++ b/tests/test_translate.py @@ -1,53 +1,50 @@ -import unittest +import pytest + from typing import List, Dict, Any from gpytranslate import Translator, TranslatedObject -class Test(unittest.IsolatedAsyncioTestCase): - async def test_translate_auto(self): - translator = Translator() - translation: TranslatedObject = await translator.translate( - "Ciao Mondo.", targetlang="en" - ) - self.assertEqual( - translation.text, - "Hello World.", - "Translations are not equal.", - ) - - async def test_translate_source(self): - translator = Translator() - translation: TranslatedObject = await translator.translate( - "Ciao.", sourcelang="it", targetlang="en" - ) - - self.assertEqual( - translation.text, - "Hello.", - "Translations are not equal.", - ) - - async def test_translate_list(self): - translator = Translator() - translations: List[TranslatedObject] = await translator.translate( - ["Ciao Mondo.", "Come stai?"], targetlang="en" - ) - - self.assertEqual( - [translation.text for translation in translations], - ["Hello World.", "How are you?"], - "Translations are not equal.", - ) - - async def test_translate_dict(self): - translator = Translator() - translations: Dict[Any, TranslatedObject] = await translator.translate( - {1: "Ciao Mondo.", 2: "Come stai?"}, targetlang="en" - ) - - self.assertEqual( - {k: v.text for k, v in translations.items()}, - {1: "Hello World.", 2: "How are you?"}, - "Translations are not equal.", - ) +@pytest.mark.asyncio +async def test_translate_auto(): + translator = Translator() + translation: TranslatedObject = await translator.translate( + "Ciao Mondo.", targetlang="en" + ) + assert translation.text == "Hello World.", "Translations are not equal." + + +@pytest.mark.asyncio +async def test_translate_source(): + translator = Translator() + translation: TranslatedObject = await translator.translate( + "Ciao.", sourcelang="it", targetlang="en" + ) + + assert translation.text == "Hello.", "Translations are not equal." + + +@pytest.mark.asyncio +async def test_translate_list(): + translator = Translator() + translations: List[TranslatedObject] = await translator.translate( + ["Ciao Mondo.", "Come stai?"], targetlang="en" + ) + + assert [translation.text for translation in translations] == [ + "Hello World.", + "How are you?", + ], "Translations are not equal." + + +@pytest.mark.asyncio +async def test_translate_dict(): + translator = Translator() + translations: Dict[Any, TranslatedObject] = await translator.translate( + {1: "Ciao Mondo.", 2: "Come stai?"}, targetlang="en" + ) + + assert {k: v.text for k, v in translations.items()} == { + 1: "Hello World.", + 2: "How are you?", + }, "Translations are not equal."