diff --git a/README.md b/README.md index 3b7ac02..0caeaf8 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,12 @@ Additionally, the application allows you to copy the HTML code with a single but Lastly, updating the banner (the image at the bottom of the signature) and the associated link for redirection is straightforward. You no longer need to request everyone to update their signature individually for these changes. +## Winner of the 2024 Shiny Contest + +🏆 This project won the 2024 Shiny Contest for the best Shiny application with Python. + +More details on the contest can be found [here](https://posit.co/blog/winners-of-the-2024-shiny-contest/). + ## Demo đŸ•šī¸ Try the app at: diff --git a/poetry.lock b/poetry.lock index 18fde49..675a903 100644 --- a/poetry.lock +++ b/poetry.lock @@ -836,20 +836,20 @@ yaml = ["PyYAML (>=3.11,<7)"] [[package]] name = "pytest" -version = "8.2.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, - {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.5,<2.0" +pluggy = ">=1.5,<2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] diff --git a/signature/app.py b/signature/app.py index 0e6e237..98010f2 100644 --- a/signature/app.py +++ b/signature/app.py @@ -4,40 +4,59 @@ current_dir = Path(__file__).parent -app_ui = ui.page_fixed( - ui.head_content( - ui.tags.title("signature.py"), - ui.tags.script( - src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js", - ), - ui.tags.script( - src="https://www.googletagmanager.com/gtag/js?id=G-SPE51YQFS7", - async_=True, - ), - ui.tags.link( - rel="icon", - href="favicon.svg", +app_ui = ui.div( + ui.div( + ui.div( + ui.span("🏆 ", class_="fs-5"), + ui.span( + "This project won the 2024 Shiny Contest for the best Shiny application with Python. ", + class_="fs-6", + ), + ui.a( + "Click here for more information 🔗 ", + href="https://posit.co/blog/winners-of-the-2024-shiny-contest/", + target="_blank", + class_="text-white", + ), + class_="container", ), - ui.tags.script( - """ + class_="sticky-top bg-success text-white p-3", + ), + ui.page_fixed( + ui.head_content( + ui.tags.title("signature.py"), + ui.tags.script( + src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.10/clipboard.min.js", + ), + ui.tags.script( + src="https://www.googletagmanager.com/gtag/js?id=G-SPE51YQFS7", + async_=True, + ), + ui.tags.link( + rel="icon", + href="favicon.svg", + ), + ui.tags.script( + """ window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-SPE51YQFS7'); """, + ), ), - ), - ui.include_css(current_dir / "css" / "signature.css"), - ui.include_js(current_dir / "js" / "signature.js"), - mod_navbar.navbar_ui("nav_signature"), - ui.div( + ui.include_css(current_dir / "css" / "signature.css"), + ui.include_js(current_dir / "js" / "signature.js"), + mod_navbar.navbar_ui("nav_signature"), ui.div( - mod_form.form_ui("form_signature"), - mod_preview.preview_ui("preview_signature"), - class_="row", + ui.div( + mod_form.form_ui("form_signature"), + mod_preview.preview_ui("preview_signature"), + class_="row", + ), + class_="container", ), - class_="container", ), ) diff --git a/signature/manifest.json b/signature/manifest.json index 69f424c..d2b7724 100644 --- a/signature/manifest.json +++ b/signature/manifest.json @@ -18,16 +18,16 @@ "checksum": "fb3384dc54debf9ac2f861655b17ef61" }, ".DS_Store": { - "checksum": "9beba8e7665a8fd7d081a2db0119a10d" + "checksum": "e4eda894fe53e8a8548674f0734de828" }, "__init__.py": { "checksum": "d41d8cd98f00b204e9800998ecf8427e" }, "app.py": { - "checksum": "6495f870021d95acbbbd557ef0c55ffc" + "checksum": "af9a4bbe465ae57d9a61175460aeb915" }, "assets/.DS_Store": { - "checksum": "e7b257cc2c2fc363dd11963b1a0b369f" + "checksum": "120b68f0078387073a2add16a82227ee" }, "assets/current_banner.png": { "checksum": "3636b04621cc9c8b814fdef693f124c6" @@ -56,6 +56,9 @@ "assets/tests_with_vscode.png": { "checksum": "cf4f49c7aeec75575e116f6aa8a8ec09" }, + "css/.DS_Store": { + "checksum": "2ee69fe1e83952d259f01faa2b737270" + }, "css/signature.css": { "checksum": "07504198248c681e2c61586dbf7b293d" }, @@ -69,25 +72,25 @@ "checksum": "d41d8cd98f00b204e9800998ecf8427e" }, "modules/__pycache__/__init__.cpython-312.pyc": { - "checksum": "c5536234a41a619cddadb3c5f700f276" + "checksum": "4728ab600e646be03054a054973b2268" }, "modules/__pycache__/mod_form.cpython-312.pyc": { - "checksum": "e6ddda00ce13889794c848adbeb96e95" + "checksum": "5586aaf5eb933db36018931c649d70e4" }, "modules/__pycache__/mod_navbar.cpython-312.pyc": { "checksum": "a437431c6ec31e684076b9d7962e6751" }, "modules/__pycache__/mod_preview.cpython-312.pyc": { - "checksum": "63ea9a355f2bbfefbb17d613c5be12a3" + "checksum": "df04461f1be4f6bd1ac435eef826aab6" }, "modules/mod_form.py": { - "checksum": "c9f972619f3b9211268e0c111182551a" + "checksum": "857b332d666549ff448b2ade235ec556" }, "modules/mod_navbar.py": { "checksum": "726fbe893cd586f7d82fcf79d065e7ff" }, "modules/mod_preview.py": { - "checksum": "0d54be281f3ee33a787bbf10b8eb543e" + "checksum": "ab341eb024e2e6b41c6e3527f11d8074" }, "node_modules/.package-lock.json": { "checksum": "f472a1d452e19e4da09b1630101a5802" @@ -1622,15 +1625,24 @@ "tests/pytest-playwright/__pycache__/test_e2e.cpython-312-pytest-8.2.2.pyc": { "checksum": "2138189787b8968d3560be38f2df61af" }, + "tests/pytest-playwright/__pycache__/test_e2e.cpython-312-pytest-8.3.3.pyc": { + "checksum": "20e7ba4f4caa64ab90b8ade2cc98f76f" + }, "tests/pytest-playwright/test_e2e.py": { "checksum": "8f503e816ae683437283f5f58b50cc43" }, "tests/pytest-unit/__pycache__/test_accordion_panels.cpython-312-pytest-8.2.2.pyc": { "checksum": "db33695ee08ded6335cb6e8c72627e97" }, + "tests/pytest-unit/__pycache__/test_accordion_panels.cpython-312-pytest-8.3.3.pyc": { + "checksum": "0bc8d84b8084834a3350c5227151cb15" + }, "tests/pytest-unit/__pycache__/test_one_plus_one.cpython-312-pytest-8.2.2.pyc": { "checksum": "30f9d60610dd9529dd854e890bd5d937" }, + "tests/pytest-unit/__pycache__/test_one_plus_one.cpython-312-pytest-8.3.3.pyc": { + "checksum": "c18c725f9d512b827e9025cd47a38511" + }, "tests/pytest-unit/test_accordion_panels.py": { "checksum": "ca85c9fb39cbbdbe047d1d1459c80bd0" }, diff --git a/signature/requirements.txt b/signature/requirements.txt index d6c518a..6c79877 100644 --- a/signature/requirements.txt +++ b/signature/requirements.txt @@ -43,7 +43,7 @@ pytablewriter==1.2.0 ; python_version >= "3.12" and python_version < "4.0" pytest-base-url==2.1.0 ; python_version >= "3.12" and python_version < "4.0" pytest-github-report==0.0.1 ; python_version >= "3.12" and python_version < "4.0" pytest-playwright==0.5.1 ; python_version >= "3.12" and python_version < "4.0" -pytest==8.2.2 ; python_version >= "3.12" and python_version < "4.0" +pytest==8.3.3 ; python_version >= "3.12" and python_version < "4.0" python-dateutil==2.9.0.post0 ; python_version >= "3.12" and python_version < "4.0" python-multipart==0.0.9 ; python_version >= "3.12" and python_version < "4.0" python-slugify==8.0.4 ; python_version >= "3.12" and python_version < "4.0"