From 70ed6d8797e7c4289ad1c55ed6659a567e1754d7 Mon Sep 17 00:00:00 2001 From: Kaoru Nishikawa Date: Thu, 12 May 2022 19:12:08 +0900 Subject: [PATCH] #1 Add version validation function --- src/python/main.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/python/main.py diff --git a/src/python/main.py b/src/python/main.py new file mode 100644 index 0000000..bd7d559 --- /dev/null +++ b/src/python/main.py @@ -0,0 +1,44 @@ +def _import_dependencies(): + from poetry.core.version import pep440 + from poetry.core.version.exceptions import InvalidVersion + return pep440, InvalidVersion + +async def import_dependencies(): + try: + return _import_dependencies() + except ImportError: + import micropip + await micropip.install(["poetry==1.2.0b1"]) + return _import_dependencies() + + +class PEP440: + def __init__(self): + pass + + async def validate_version(self, version): + pep440, InvalidVersion = await import_dependencies() + try: + pep440.PEP440Version.parse(version) + return True + except InvalidVersion: + return False + + +async def test_version(event): + version = Element("version-to-test").element.value + is_valid = await PEP440().validate_version(version) + pyscript.write( + "version-test-result", + f"{version} is" + (" " if is_valid else " not ") + "valid version", + ) + +async def main(): + _ = await import_dependencies() + + from js import document + document.getElementById("loading").style.display = "none" + +import asyncio +loop = asyncio.get_event_loop() +_ = loop.run_until_complete(main()) \ No newline at end of file