diff --git a/DV8-Expo/poetry.lock b/DV8-Expo/poetry.lock new file mode 100644 index 0000000..666a7c6 --- /dev/null +++ b/DV8-Expo/poetry.lock @@ -0,0 +1,487 @@ +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. + +[[package]] +name = "blinker" +version = "1.6.2" +description = "Fast, simple object-to-object and broadcast signaling" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, + {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, +] + +[[package]] +name = "cachelib" +version = "0.9.0" +description = "A collection of cache libraries in the same API interface." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachelib-0.9.0-py3-none-any.whl", hash = "sha256:811ceeb1209d2fe51cd2b62810bd1eccf70feba5c52641532498be5c675493b3"}, + {file = "cachelib-0.9.0.tar.gz", hash = "sha256:38222cc7c1b79a23606de5c2607f4925779e37cdcea1c2ad21b8bae94b5425a5"}, +] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "cssmin" +version = "0.2.0" +description = "A Python port of the YUI CSS compression algorithm." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "cssmin-0.2.0.tar.gz", hash = "sha256:e012f0cc8401efcf2620332339011564738ae32be8c84b2e43ce8beaec1067b6"}, +] + +[[package]] +name = "flask" +version = "2.3.2" +description = "A simple framework for building complex web applications." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Flask-2.3.2-py3-none-any.whl", hash = "sha256:77fd4e1249d8c9923de34907236b747ced06e5467ecac1a7bb7115ae0e9670b0"}, + {file = "Flask-2.3.2.tar.gz", hash = "sha256:8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef"}, +] + +[package.dependencies] +blinker = ">=1.6.2" +click = ">=8.1.3" +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.3" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "flask-assets" +version = "2.0" +description = "Asset management for Flask, to compress and merge CSS and Javascript files." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "Flask-Assets-2.0.tar.gz", hash = "sha256:1dfdea35e40744d46aada72831f7613d67bf38e8b20ccaaa9e91fdc37aa3b8c2"}, + {file = "Flask_Assets-2.0-py3-none-any.whl", hash = "sha256:2845bd3b479be9db8556801e7ebc2746ce2d9edb4e7b64a1c786ecbfc1e5867b"}, +] + +[package.dependencies] +Flask = ">=0.8" +webassets = ">=2.0" + +[[package]] +name = "flask-caching" +version = "2.0.2" +description = "Adds caching support to Flask applications." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Flask-Caching-2.0.2.tar.gz", hash = "sha256:24b60c552d59a9605cc1b6a42c56cdb39a82a28dab4532bbedb9222ae54ecb4e"}, + {file = "Flask_Caching-2.0.2-py3-none-any.whl", hash = "sha256:19571f2570e9b8dd9dd9d2f49d7cbee69c14ebe8cc001100b1eb98c379dd80ad"}, +] + +[package.dependencies] +cachelib = ">=0.9.0,<0.10.0" +Flask = "<3" + +[[package]] +name = "flask-sqlalchemy" +version = "3.0.3" +description = "Add SQLAlchemy support to your Flask application." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Flask-SQLAlchemy-3.0.3.tar.gz", hash = "sha256:2764335f3c9d7ebdc9ed6044afaf98aae9fa50d7a074cef55dde307ec95903ec"}, + {file = "Flask_SQLAlchemy-3.0.3-py3-none-any.whl", hash = "sha256:add5750b2f9cd10512995261ee2aa23fab85bd5626061aa3c564b33bb4aa780a"}, +] + +[package.dependencies] +Flask = ">=2.2" +SQLAlchemy = ">=1.4.18" + +[[package]] +name = "flask-wtf" +version = "1.1.1" +description = "Form rendering, validation, and CSRF protection for Flask with WTForms." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Flask-WTF-1.1.1.tar.gz", hash = "sha256:41c4244e9ae626d63bed42ae4785b90667b885b1535d5a4095e1f63060d12aa9"}, + {file = "Flask_WTF-1.1.1-py3-none-any.whl", hash = "sha256:7887d6f1ebb3e17bf648647422f0944c9a469d0fcf63e3b66fb9a83037e38b2c"}, +] + +[package.dependencies] +Flask = "*" +itsdangerous = "*" +WTForms = "*" + +[package.extras] +email = ["email-validator"] + +[[package]] +name = "greenlet" +version = "2.0.2" +description = "Lightweight in-process concurrent programming" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" +files = [ + {file = "greenlet-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d"}, + {file = "greenlet-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9"}, + {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, + {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, + {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, + {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, + {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470"}, + {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a"}, + {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, + {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, + {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, + {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, + {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19"}, + {file = "greenlet-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3"}, + {file = "greenlet-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5"}, + {file = "greenlet-2.0.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6"}, + {file = "greenlet-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43"}, + {file = "greenlet-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a"}, + {file = "greenlet-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394"}, + {file = "greenlet-2.0.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099"}, + {file = "greenlet-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75"}, + {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf"}, + {file = "greenlet-2.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292"}, + {file = "greenlet-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9"}, + {file = "greenlet-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f"}, + {file = "greenlet-2.0.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca"}, + {file = "greenlet-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73"}, + {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86"}, + {file = "greenlet-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33"}, + {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, + {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, + {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, + {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857"}, + {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a"}, + {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, + {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, + {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, + {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b"}, + {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b"}, + {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8"}, + {file = "greenlet-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9"}, + {file = "greenlet-2.0.2-cp39-cp39-win32.whl", hash = "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5"}, + {file = "greenlet-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564"}, + {file = "greenlet-2.0.2.tar.gz", hash = "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0"}, +] + +[package.extras] +docs = ["Sphinx", "docutils (<0.18)"] +test = ["objgraph", "psutil"] + +[[package]] +name = "itsdangerous" +version = "2.1.2" +description = "Safely pass data to untrusted environments and back." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, + {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, +] + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jsmin" +version = "3.0.1" +description = "JavaScript minifier." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc"}, +] + +[[package]] +name = "libsass-bin" +version = "0.22.0.post1" +description = "Sass for Python (binary wheels)" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "libsass_bin-0.22.0.post1-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bf6ba8af4efd67407f1a6e53fd73559e8eba1216f4307e6635c73f598fae9f8b"}, + {file = "libsass_bin-0.22.0.post1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb54bbd88449eede99cbb3e120deab4f922da9f6f1547490170e0064a80eebb2"}, + {file = "libsass_bin-0.22.0.post1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cad5c0e4328192233659e8b347fe9fd80a55f79981207509d00681b8bbdf90d"}, + {file = "libsass_bin-0.22.0.post1-cp37-abi3-win32.whl", hash = "sha256:244d492d45ba76891392f38d38de065df6314754e31a71371dc1a2a0e37d14f8"}, + {file = "libsass_bin-0.22.0.post1-cp37-abi3-win_amd64.whl", hash = "sha256:174e31fdae51d08d2424efb107f60629da36f5e03fe8e4d2ed3050848283bfc8"}, +] + +[[package]] +name = "markupsafe" +version = "2.1.2" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.13" +description = "Database Abstraction Library" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ad24c85f2a1caf0cd1ae8c2fdb668777a51a02246d9039420f94bd7dbfd37ed"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db24d2738add6db19d66ca820479d2f8f96d3f5a13c223f27fa28dd2f268a4bd"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72746ec17a7d9c5acf2c57a6e6190ceba3dad7127cd85bb17f24e90acc0e8e3f"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:755f653d693f9b8f4286d987aec0d4279821bf8d179a9de8e8a5c685e77e57d6"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0d20f27edfd6f35b388da2bdcd7769e4ffa374fef8994980ced26eb287e033a"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37de4010f53f452e94e5ed6684480432cfe6a7a8914307ef819cd028b05b98d5"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-win32.whl", hash = "sha256:31f72bb300eed7bfdb373c7c046121d84fa0ae6f383089db9505ff553ac27cef"}, + {file = "SQLAlchemy-2.0.13-cp310-cp310-win_amd64.whl", hash = "sha256:ec2f525273528425ed2f51861b7b88955160cb95dddb17af0914077040aff4a5"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2424a84f131901fbb20a99844d47b38b517174c6e964c8efb15ea6bb9ced8c2b"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f9832815257969b3ca9bf0501351e4c02c8d60cbd3ec9f9070d5b0f8852900e"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a30e4db983faa5145e00ef6eaf894a2d503b3221dbf40a595f3011930d3d0bac"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f717944aee40e9f48776cf85b523bb376aa2d9255a268d6d643c57ab387e7264"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9119795d2405eb23bf7e6707e228fe38124df029494c1b3576459aa3202ea432"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2ad9688debf1f0ae9c6e0706a4e2d33b1a01281317cee9bd1d7eef8020c5baac"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-win32.whl", hash = "sha256:c61b89803a87a3b2a394089a7dadb79a6c64c89f2e8930cc187fec43b319f8d2"}, + {file = "SQLAlchemy-2.0.13-cp311-cp311-win_amd64.whl", hash = "sha256:0aa2cbde85a6eab9263ab480f19e8882d022d30ebcdc14d69e6a8d7c07b0a871"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9ad883ac4f5225999747f0849643c4d0ec809d9ffe0ddc81a81dd3e68d0af463"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e481e54db8cec1457ee7c05f6d2329e3298a304a70d3b5e2e82e77170850b385"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e08e3831671008888bad5d160d757ef35ce34dbb73b78c3998d16aa1334c97"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f234ba3bb339ad17803009c8251f5ee65dcf283a380817fe486823b08b26383d"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:375b7ba88f261dbd79d044f20cbcd919d88befb63f26af9d084614f10cdf97a6"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-win32.whl", hash = "sha256:9136d596111c742d061c0f99bab95c5370016c4101a32e72c2b634ad5e0757e6"}, + {file = "SQLAlchemy-2.0.13-cp37-cp37m-win_amd64.whl", hash = "sha256:7612a7366a0855a04430363fb4ab392dc6818aaece0b2e325ff30ee77af9b21f"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:49c138856035cb97f0053e5e57ba90ec936b28a0b8b0020d44965c7b0c0bf03a"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a5e9e78332a5d841422b88b8c490dfd7f761e64b3430249b66c05d02f72ceab0"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd0febae872a4042da44e972c070f0fd49a85a0a7727ab6b85425f74348be14e"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:566a0ac347cf4632f551e7b28bbd0d215af82e6ffaa2556f565a3b6b51dc3f81"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e5e5dc300a0ca8755ada1569f5caccfcdca28607dfb98b86a54996b288a8ebd3"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a25b4c4fdd633501233924f873e6f6cd8970732859ecfe4ecfb60635881f70be"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-win32.whl", hash = "sha256:6777673d346071451bf7cccf8d0499024f1bd6a835fc90b4fe7af50373d92ce6"}, + {file = "SQLAlchemy-2.0.13-cp38-cp38-win_amd64.whl", hash = "sha256:2f0a355264af0952570f18457102984e1f79510f856e5e0ae652e63316d1ca23"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d93ebbff3dcf05274843ad8cf650b48ee634626e752c5d73614e5ec9df45f0ce"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fec56c7d1b6a22c8f01557de3975d962ee40270b81b60d1cfdadf2a105d10e84"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eb14a386a5b610305bec6639b35540b47f408b0a59f75999199aed5b3d40079"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b5236079bc3e318a92bab2cc3f669cc32127075ab03ff61cacbae1c392b8"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bf1aae95e80acea02a0a622e1c12d3fefc52ffd0fe7bda70a30d070373fbb6c3"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cdf80359b641185ae7e580afb9f88cf560298f309a38182972091165bfe1225d"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-win32.whl", hash = "sha256:f463598f9e51ccc04f0fe08500f9a0c3251a7086765350be418598b753b5561d"}, + {file = "SQLAlchemy-2.0.13-cp39-cp39-win_amd64.whl", hash = "sha256:881cc388dded44ae6e17a1666364b98bd76bcdc71b869014ae725f06ba298e0e"}, + {file = "SQLAlchemy-2.0.13-py3-none-any.whl", hash = "sha256:0d6979c9707f8b82366ba34b38b5a6fe32f75766b2e901f9820e271e95384070"}, + {file = "SQLAlchemy-2.0.13.tar.gz", hash = "sha256:8d97b37b4e60073c38bcf94e289e3be09ef9be870de88d163f16e08f2b9ded1a"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +typing-extensions = ">=4.2.0" + +[package.extras] +aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx-oracle (>=7)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3-binary"] + +[[package]] +name = "typing-extensions" +version = "4.5.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, +] + +[[package]] +name = "webassets" +version = "2.0" +description = "Media asset management for Python, with glue code for various web frameworks" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "webassets-2.0-py3-none-any.whl", hash = "sha256:a31a55147752ba1b3dc07dee0ad8c8efff274464e08bbdb88c1fd59ffd552724"}, + {file = "webassets-2.0.tar.gz", hash = "sha256:167132337677c8cedc9705090f6d48da3fb262c8e0b2773b29f3352f050181cd"}, +] + +[[package]] +name = "werkzeug" +version = "2.3.4" +description = "The comprehensive WSGI web application library." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Werkzeug-2.3.4-py3-none-any.whl", hash = "sha256:48e5e61472fee0ddee27ebad085614ebedb7af41e88f687aaf881afb723a162f"}, + {file = "Werkzeug-2.3.4.tar.gz", hash = "sha256:1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[[package]] +name = "wtforms" +version = "3.0.1" +description = "Form validation and rendering for Python web development." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "WTForms-3.0.1-py3-none-any.whl", hash = "sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b"}, + {file = "WTForms-3.0.1.tar.gz", hash = "sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc"}, +] + +[package.dependencies] +MarkupSafe = "*" + +[package.extras] +email = ["email-validator"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "0eaf80270df1df786073f7641821fe9f9dc3a97b2424e12f10252a75189ed9de" diff --git a/DV8-Expo/pyproject.toml b/DV8-Expo/pyproject.toml new file mode 100644 index 0000000..0029a17 --- /dev/null +++ b/DV8-Expo/pyproject.toml @@ -0,0 +1,25 @@ +[tool.poetry] +name = "dv8-expo" +version = "0.1.0" +description = "Website to display all the awesome creations everyone made" +authors = ["Fluffy-Bean "] +license = "MIT" +readme = "README.md" +packages = [{include = "dv8_expo"}] + +[tool.poetry.dependencies] +python = "^3.11" +Flask = "^2.3.2" +Flask-Caching = "^2.0.2" +Flask-Assets = "^2.0" +flask-sqlalchemy = "^3.0.3" +flask-wtf = "^1.1.1" + +[tool.poetry.group.dev.dependencies] +libsass-bin = "^0.22.0.post1" +jsmin = "^3.0.1" +cssmin = "^0.2.0" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/DV8-Expo/website/__init__.py b/DV8-Expo/website/__init__.py new file mode 100644 index 0000000..244b2dc --- /dev/null +++ b/DV8-Expo/website/__init__.py @@ -0,0 +1,26 @@ +from flask import Flask, render_template +from flask_assets import Bundle +from website.extensions import db, assets +from website.config import INSTANCE_DIR + +app = Flask(__name__) # instance_path=INSTANCE_DIR +app.config.from_pyfile('config.py') + +db.init_app(app) +with app.app_context(): + db.create_all() + +assets.init_app(app) +styles = Bundle('sass/styles.sass', filters='libsass, cssmin', output='gen/packed.css', depends='sass/*.sass') +assets.register('styles', styles) +scripts = Bundle('js/*.js', filters='jsmin', output='gen/packed.js') +assets.register('scripts', scripts) + + +@app.route('/') +def index(): + return render_template('index.html') + +@app.route('/login') +def login(): + return render_template('login.html') diff --git a/DV8-Expo/website/config.py b/DV8-Expo/website/config.py new file mode 100644 index 0000000..0a67c42 --- /dev/null +++ b/DV8-Expo/website/config.py @@ -0,0 +1,4 @@ +SQLALCHEMY_DATABASE_URI = 'sqlite:///site.db' + +MIGRATION_DIR = "/data/storage/migrations" +INSTANCE_DIR = "/data/storage/instance" diff --git a/DV8-Expo/website/extensions.py b/DV8-Expo/website/extensions.py new file mode 100644 index 0000000..7819cfc --- /dev/null +++ b/DV8-Expo/website/extensions.py @@ -0,0 +1,7 @@ +from flask_sqlalchemy import SQLAlchemy +from flask_caching import Cache +from flask_assets import Environment + +db = SQLAlchemy() +cache = Cache() +assets = Environment() diff --git a/DV8-Expo/website/models.py b/DV8-Expo/website/models.py new file mode 100644 index 0000000..780801a --- /dev/null +++ b/DV8-Expo/website/models.py @@ -0,0 +1,35 @@ +""" +Database models for the server +""" +from website.extensions import db + + +class Games(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String, nullable=False) + downloadLink = db.Column(db.String, nullable=False) + approved = db.Column(db.Boolean, nullable=False, default=False) + + +class Tags(db.Model): + id = db.Column(db.Integer, primary_key=True) + tag = db.Column(db.String, nullable=False) + game_id = db.Column(db.Integer, db.ForeignKey('games.id')) + + +class TriggerWarning(db.Model): + id = db.Column(db.Integer, primary_key=True) + warning = db.Column(db.String, nullable=False) + game_id = db.Column(db.Integer, db.ForeignKey('games.id')) + + +class Authros(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String, nullable=False) + role = db.Column(db.String, nullable=False, default='Developer') + game_id = db.Column(db.Integer, db.ForeignKey('games.id')) + + +class Users(db.Model): + id = db.Column(db.Integer, primary_key=True) + uuid = db.Column(db.String, nullable=False) diff --git a/DV8-Expo/website/static/gen/packed.css b/DV8-Expo/website/static/gen/packed.css new file mode 100644 index 0000000..82f8307 --- /dev/null +++ b/DV8-Expo/website/static/gen/packed.css @@ -0,0 +1 @@ +:root{--primary:#332f2f;--secondary:#d7cec9;--primary-button:#C0AB83;--secondary-button:#DDD1C1;--accent:#c2a588;--radius:1rem;--main-font:'Rubik',sans-serif;--monospace-font:'JetBrains Mono',monospace;--nav:#262323}@keyframes glow{0%{opacity:0}50%{opacity:1}100%{opacity:0}}nav{padding:0 .5rem;width:100%;height:3rem;display:flex;flex-direction:row;align-items:center;position:fixed;top:0;left:0;background:transparent;color:var(--primary);z-index:100;transition:color .2s ease-in-out}nav::before{content:"";position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--nav);transition:top .2s ease-in-out;z-index:-1}nav>span{width:100%}nav>a{margin:0 .75rem;font-size:1.1rem;font-weight:bold;font-family:var(--main-font);text-decoration:none;color:inherit;transition:color .2s ease-in-out,font-weight .2s}nav>a:hover{color:var(--accent)}nav.scrolled{color:var(--secondary)}nav.scrolled>a{font-weight:normal}nav.scrolled::before{top:0}header{margin-bottom:3rem;padding:2rem;height:calc(100vh - 6rem);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;font-family:var(--main-font);color:var(--primary)}header>h1{margin:0;font-size:3rem}header>h1>span{font-family:var(--monospace-font);color:var(--accent)}header>p{margin:0;font-size:1.2rem}header>i{margin:1rem 0 0;font-size:1.2rem;animation:glow 3s ease-in-out infinite}section{margin:0 auto 1rem;padding:1rem;max-width:75rem;display:flex;flex-direction:column;justify-content:center;text-align:center}section>h2{margin:0 0 1rem;font-size:2rem;font-weight:bold}section>p{margin:0 0 1rem;font-size:1rem}section.center{height:100%;justify-content:center;align-items:center}div.games{margin:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:2rem}@media(max-width:24rem){div.games{margin:0;display:flex;flex-direction:column;gap:1rem}}div.login{padding:.5rem;background-color:var(--primary);color:var(--secondary);border-radius:var(--radius)}div.login>p{margin:0 0 .5rem;padding:.5rem;background-color:var(--accent);color:var(--primary);border-radius:calc(calc(var(--radius) - .5rem) / 2)}div.login>p:first-child{border-top-left-radius:calc(var(--radius) - .5rem);border-top-right-radius:calc(var(--radius) - .5rem)}div.login>form{display:flex;flex-direction:row}div.login>form>input{padding:.5rem 1rem;width:100%;font-size:1rem;font-family:var(--monospace-font);background-color:var(--secondary);color:var(--primary);border-radius:calc(calc(var(--radius) - .5rem) / 2) 0 0 calc(var(--radius) - .5rem);border:none;transition:transform .1s ease-in-out,border-radius .1s ease-in-out}div.login>form>input:hover,div.login>form>input:focus-visible{outline:none}div.login>form>button{padding:.5rem 1rem;font-size:1rem;background-color:var(--primary-button);color:var(--primary);border-radius:0 calc(calc(var(--radius) - .5rem) / 2) calc(var(--radius) - .5rem) 0;border:none;transition:transform .1s ease-in-out,border-radius .1s ease-in-out}div.login>form>button:hover,div.login>form>button:focus-visible{outline:none;background-color:var(--secondary-button)}.game-box{margin:0 auto;padding:.5rem;width:100%;height:auto;display:flex;flex-direction:column;font-family:var(--main-font);background-color:var(--primary);color:var(--secondary);border-radius:var(--radius);box-shadow:0 .2rem 1rem 0 var(--primary);overflow:hidden;transition:box-shadow .1s ease-in-out,transform .1s ease-in-out}.game-box>img{margin:0 0 .5rem;width:auto;height:10rem;object-fit:cover;display:block;border-radius:calc(var(--radius) - .5rem) calc(var(--radius) - .5rem) calc(calc(var(--radius) - .5rem) / 2) calc(calc(var(--radius) - .5rem) / 2)}.game-box>h2{margin:0 0 .5rem;font-size:1.5rem;font-weight:bold}.game-box>p{height:100%;margin:0 0 1rem;font-size:1rem}.game-box>.options{display:flex;flex-direction:row;gap:.5rem;font-family:var(--monospace-font)}.game-box>.options>a{margin:0;padding:.5rem 1rem;height:2.5rem;display:flex;justify-content:center;align-items:center;font-size:1rem;text-decoration:none;background-color:var(--primary-button);color:var(--primary);border-radius:calc(calc(var(--radius) - .5rem) / 2);transition:transform .1s ease-in-out,border-radius .1s ease-in-out}.game-box>.options>a>i{font-size:1.2rem}.game-box>.options>a:first-child{border-bottom-left-radius:calc(var(--radius) - .5rem)}.game-box>.options>a:last-child{border-bottom-right-radius:calc(var(--radius) - .5rem)}.game-box>.options>a:hover,.game-box>.options>a:focus-visible{outline:none;transform:translateY(-0.1rem)}*{box-sizing:border-box}html{font-family:var(--main-font);background-color:var(--secondary);color:var(--primary)}body{margin:0;padding:0;min-height:100vh;display:grid;grid-template-rows:1fr auto}.background{background-color:var(--primary);position:absolute;inset:0;overflow:hidden;z-index:1}.background>img{position:absolute;inset:-5%;width:110%;height:110%;object-fit:cover;filter:blur(0.25rem);opacity:.3}.background::after{content:'';position:absolute;inset:0;background-image:linear-gradient(to top,var(--secondary),transparent);z-index:+1}main{padding-top:3rem;position:relative;z-index:2}footer{margin:auto 0 0;padding:.5rem;position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--primary);color:var(--secondary);z-index:2}footer>p{margin:0;font-size:.8rem;font-family:var(--monospace-font);text-align:center;color:var(--secondary)}footer>p>a{margin:0;font-size:inherit;font-family:inherit;color:var(--accent);text-decoration:none;cursor:pointer}footer>p>a:hover{text-decoration:underline} \ No newline at end of file diff --git a/DV8-Expo/website/static/gen/packed.js b/DV8-Expo/website/static/gen/packed.js new file mode 100644 index 0000000..e6961b2 --- /dev/null +++ b/DV8-Expo/website/static/gen/packed.js @@ -0,0 +1 @@ +window.onscroll=()=>{scrollFunction()};window.onload=()=>{scrollFunction()};function scrollFunction(){let nav=document.querySelector("nav");let scrollHeight=0;if(document.body.scrollTop>scrollHeight||document.documentElement.scrollTop>scrollHeight){nav.classList.add("scrolled");}else{nav.classList.remove("scrolled");}} \ No newline at end of file diff --git a/DV8-Expo/website/static/images/3.jpg b/DV8-Expo/website/static/images/3.jpg new file mode 100644 index 0000000..638ee6c Binary files /dev/null and b/DV8-Expo/website/static/images/3.jpg differ diff --git a/DV8-Expo/website/static/js/nav.js b/DV8-Expo/website/static/js/nav.js new file mode 100644 index 0000000..2aaa700 --- /dev/null +++ b/DV8-Expo/website/static/js/nav.js @@ -0,0 +1,15 @@ +window.onscroll = () => { scrollFunction() }; +window.onload = () => { scrollFunction() }; + +function scrollFunction() { + let nav = document.querySelector("nav"); + // let scrollHeight = window.innerHeight - nav.offsetHeight; + let scrollHeight = 0; + + if (document.body.scrollTop > scrollHeight || + document.documentElement.scrollTop > scrollHeight) { + nav.classList.add("scrolled"); + } else { + nav.classList.remove("scrolled"); + } +} \ No newline at end of file diff --git a/DV8-Expo/website/static/sass/animations.sass b/DV8-Expo/website/static/sass/animations.sass new file mode 100644 index 0000000..90a4441 --- /dev/null +++ b/DV8-Expo/website/static/sass/animations.sass @@ -0,0 +1,10 @@ +@keyframes glow + 0% + opacity: 0 + // text-shadow: 0 0 0 $primary + 50% + opacity: 1 + // text-shadow: 0 0.25rem 0.5rem $primary + 100% + opacity: 0 + // text-shadow: 0 0 0 $primary diff --git a/DV8-Expo/website/static/sass/header.sass b/DV8-Expo/website/static/sass/header.sass new file mode 100644 index 0000000..e0eee82 --- /dev/null +++ b/DV8-Expo/website/static/sass/header.sass @@ -0,0 +1,28 @@ +header + margin-bottom: 3rem + padding: 2rem + height: calc(100vh - 6rem) + display: flex + flex-direction: column + justify-content: center + align-items: center + text-align: center + font-family: $main-font + color: $primary + + > h1 + margin: 0 + font-size: 3rem + + > span + font-family: $monospace-font + color: $accent + + > p + margin: 0 + font-size: 1.2rem + + > i + margin: 1rem 0 0 + font-size: 1.2rem + animation: glow 3s ease-in-out infinite diff --git a/DV8-Expo/website/static/sass/nav.sass b/DV8-Expo/website/static/sass/nav.sass new file mode 100644 index 0000000..24c2dc8 --- /dev/null +++ b/DV8-Expo/website/static/sass/nav.sass @@ -0,0 +1,55 @@ +nav + padding: 0 0.5rem + width: 100% + height: 3rem + + display: flex + flex-direction: row + align-items: center + + position: fixed + top: 0 + left: 0 + + background: transparent + color: $primary + + z-index: 100 + transition: color 0.2s ease-in-out + + &::before + content: "" + position: absolute + top: -100% + left: 0 + width: 100% + height: 100% + background: var(--nav) + transition: top 0.2s ease-in-out + z-index: -1 + + > span + width: 100% + + > a + margin: 0 0.75rem + + font-size: 1.1rem + font-weight: bold + font-family: $main-font + text-decoration: none + + color: inherit + transition: color 0.2s ease-in-out, font-weight 0.2s + + &:hover + color: $accent + + &.scrolled + color: $secondary + + > a + font-weight: normal + + &::before + top: 0 \ No newline at end of file diff --git a/DV8-Expo/website/static/sass/sections.sass b/DV8-Expo/website/static/sass/sections.sass new file mode 100644 index 0000000..0f09d26 --- /dev/null +++ b/DV8-Expo/website/static/sass/sections.sass @@ -0,0 +1,168 @@ +section + margin: 0 auto 1rem + padding: 1rem + max-width: 75rem + display: flex + flex-direction: column + justify-content: center + text-align: center + + > h2 + margin: 0 0 1rem + font-size: 2rem + font-weight: bold + + > p + margin: 0 0 1rem + font-size: 1rem + + &.center + height: 100% + justify-content: center + align-items: center + +div.games + margin: 1rem + display: grid + grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)) + gap: 2rem + +@media (max-width: 24rem) + div.games + margin: 0 + display: flex + flex-direction: column + gap: 1rem + +div.login + padding: 0.5rem + + background-color: $primary + color: $secondary + border-radius: $radius + + > p + margin: 0 0 0.5rem + padding: 0.5rem + + background-color: $accent + color: $primary + border-radius: calc(calc(#{$radius} - 0.5rem) / 2) + + &:first-child + border-top-left-radius: calc(#{$radius} - 0.5rem) + border-top-right-radius: calc(#{$radius} - 0.5rem) + + > form + display: flex + flex-direction: row + + > input + padding: 0.5rem 1rem + + width: 100% + + font-size: 1rem + font-family: $monospace-font + + background-color: $secondary + color: $primary + border-radius: calc(calc(#{$radius} - 0.5rem) / 2) 0 0 calc(#{$radius} - 0.5rem) + border: none + + transition: transform 0.1s ease-in-out, border-radius 0.1s ease-in-out + + &:hover, &:focus-visible + outline: none + + > button + padding: 0.5rem 1rem + + font-size: 1rem + + background-color: $primary-button + color: $primary + border-radius: 0 calc(calc(#{$radius} - 0.5rem) / 2) calc(#{$radius} - 0.5rem) 0 + border: none + + transition: transform 0.1s ease-in-out, border-radius 0.1s ease-in-out + + &:hover, &:focus-visible + outline: none + background-color: $secondary-button + +.game-box + margin: 0 auto + padding: 0.5rem + + width: 100% + height: auto + + display: flex + flex-direction: column + + font-family: $main-font + + background-color: $primary + color: $secondary + border-radius: $radius + box-shadow: 0 0.2rem 1rem 0 $primary + + overflow: hidden + transition: box-shadow 0.1s ease-in-out, transform 0.1s ease-in-out + + > img + margin: 0 0 0.5rem + width: auto + height: 10rem + object-fit: cover + display: block + border-radius: calc(#{$radius} - 0.5rem) calc(#{$radius} - 0.5rem) calc(calc(#{$radius} - 0.5rem) / 2) calc(calc(#{$radius} - 0.5rem) / 2) + + > h2 + margin: 0 0 0.5rem + font-size: 1.5rem + font-weight: bold + + > p + height: 100% + margin: 0 0 1rem + font-size: 1rem + + > .options + display: flex + flex-direction: row + gap: 0.5rem + font-family: $monospace-font + + > a + margin: 0 + padding: 0.5rem 1rem + + height: 2.5rem + + display: flex + justify-content: center + align-items: center + + font-size: 1rem + text-decoration: none + + background-color: $primary-button + color: $primary + border-radius: calc(calc(#{$radius} - 0.5rem) / 2) + + transition: transform 0.1s ease-in-out, border-radius 0.1s ease-in-out + + > i + font-size: 1.2rem + + &:first-child + border-bottom-left-radius: calc(#{$radius} - 0.5rem) + + &:last-child + border-bottom-right-radius: calc(#{$radius} - 0.5rem) + + &:hover, &:focus-visible + outline: none + transform: translateY(-0.1rem) diff --git a/DV8-Expo/website/static/sass/styles.sass b/DV8-Expo/website/static/sass/styles.sass new file mode 100644 index 0000000..81c27d9 --- /dev/null +++ b/DV8-Expo/website/static/sass/styles.sass @@ -0,0 +1,109 @@ +$primary: var(--primary) +$secondary: var(--secondary) +$primary-button: var(--primary-button) +$secondary-button: var(--secondary-button) +$accent: var(--accent) + +$radius: var(--radius) + +$main-font: var(--main-font) +$monospace-font: var(--monospace-font) + +\:root + --primary: #332f2f + --secondary: #d7cec9 + --primary-button: #C0AB83 + --secondary-button: #DDD1C1 + --accent: #c2a588 + + --radius: 1rem + + --main-font: 'Rubik', sans-serif + --monospace-font: 'JetBrains Mono', monospace + + --nav: #{ darken(#332f2f, 5%) } + +@import "animations" +@import "nav" +@import "header" +@import "sections" + +* + box-sizing: border-box + +html + font-family: $main-font + background-color: $secondary + color: $primary + +body + margin: 0 + padding: 0 + min-height: 100vh + display: grid + grid-template-rows: 1fr auto + +.background + background-color: $primary + position: absolute + inset: 0 + overflow: hidden + z-index: 1 + + > img + position: absolute + inset: -5% + width: 110% + height: 110% + object-fit: cover + filter: blur(0.25rem) + opacity: 0.3 + + &::after + content: '' + position: absolute + inset: 0 + background-image: linear-gradient(to top, $secondary, transparent) + z-index: +1 + +main + padding-top: 3rem + position: relative + z-index: 2 + +footer + margin: auto 0 0 + padding: 0.5rem + + position: relative + + display: flex + justify-content: center + align-items: center + + background-color: $primary + color: $secondary + + z-index: 2 + + > p + margin: 0 + + font-size: 0.8rem + font-family: $monospace-font + text-align: center + + color: $secondary + + > a + margin: 0 + + font-size: inherit + font-family: inherit + + color: $accent + text-decoration: none + cursor: pointer + + &:hover + text-decoration: underline \ No newline at end of file diff --git a/DV8-Expo/website/templates/base.html b/DV8-Expo/website/templates/base.html new file mode 100644 index 0000000..c004b1b --- /dev/null +++ b/DV8-Expo/website/templates/base.html @@ -0,0 +1,47 @@ + + + + + + + Game Event 23 + + + + + + + + + + {% assets "scripts" %} + + {% endassets %} + + + {% assets "styles" %} + + {% endassets %} + + + + + + Background + +
+ {% block content %}{% endblock %} +
+ + + + \ No newline at end of file diff --git a/DV8-Expo/website/templates/index.html b/DV8-Expo/website/templates/index.html new file mode 100644 index 0000000..b2fd067 --- /dev/null +++ b/DV8-Expo/website/templates/index.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} +{% block background %}{{ url_for('static', filename='images/3.jpg') }}{% endblock %} +{% block content %} +
+

Welcome to the

+

DV8 Game Expo 2023!

+ +
+ +
+

About

+

Tap to add text

+
+ +
+

Games

+

Here are some games AAAA

+ +
+ {% for game in range(10) %} +
+ game image +

game name

+

mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow mow

+ +
+ View + + +
+
+ {% endfor %} +
+
+ +{% endblock %} \ No newline at end of file diff --git a/DV8-Expo/website/templates/login.html b/DV8-Expo/website/templates/login.html new file mode 100644 index 0000000..8bec60f --- /dev/null +++ b/DV8-Expo/website/templates/login.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} +{% block background %}{{ url_for('static', filename='images/3.jpg') }}{% endblock %} +{% block content %} +
+ +
+{% endblock %} \ No newline at end of file