init
This commit is contained in:
		
							
								
								
									
										52
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | # From https://github.com/github/gitignore/blob/main/Python.gitignore | ||||||
|  |  | ||||||
|  | # Byte-compiled / optimized / DLL files | ||||||
|  | __pycache__/ | ||||||
|  | *.py[cod] | ||||||
|  | *$py.class | ||||||
|  |  | ||||||
|  | # C extensions | ||||||
|  | *.so | ||||||
|  |  | ||||||
|  | # Distribution / packaging | ||||||
|  | .Python | ||||||
|  | build/ | ||||||
|  | develop-eggs/ | ||||||
|  | dist/ | ||||||
|  | downloads/ | ||||||
|  | eggs/ | ||||||
|  | .eggs/ | ||||||
|  | lib/ | ||||||
|  | lib64/ | ||||||
|  | parts/ | ||||||
|  | sdist/ | ||||||
|  | var/ | ||||||
|  | wheels/ | ||||||
|  | share/python-wheels/ | ||||||
|  | *.egg-info/ | ||||||
|  | .installed.cfg | ||||||
|  | *.egg | ||||||
|  | MANIFEST | ||||||
|  |  | ||||||
|  | # Unit test / coverage reports | ||||||
|  | htmlcov/ | ||||||
|  | .tox/ | ||||||
|  | .nox/ | ||||||
|  | .coverage | ||||||
|  | .coverage.* | ||||||
|  | .cache | ||||||
|  | nosetests.xml | ||||||
|  | coverage.xml | ||||||
|  | *.cover | ||||||
|  | *.py,cover | ||||||
|  | .hypothesis/ | ||||||
|  | .pytest_cache/ | ||||||
|  | cover/ | ||||||
|  |  | ||||||
|  | # Environments | ||||||
|  | .env | ||||||
|  | .venv | ||||||
|  | venv/ | ||||||
|  |  | ||||||
|  | # project | ||||||
|  | *.sqlite3 | ||||||
							
								
								
									
										10
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | repos: | ||||||
|  |   - repo: https://github.com/astral-sh/ruff-pre-commit | ||||||
|  |     # Ruff version. | ||||||
|  |     rev: v0.3.3 | ||||||
|  |     hooks: | ||||||
|  |       # Run the linter. | ||||||
|  |       - id: ruff | ||||||
|  |         args: [--fix] | ||||||
|  |       # Run the formatter. | ||||||
|  |       - id: ruff-format | ||||||
							
								
								
									
										575
									
								
								poetry.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										575
									
								
								poetry.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,575 @@ | |||||||
|  | # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "asgiref" | ||||||
|  | version = "3.8.1" | ||||||
|  | description = "ASGI specs, helper code, and adapters" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, | ||||||
|  |     {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "cfgv" | ||||||
|  | version = "3.4.0" | ||||||
|  | description = "Validate configuration and produce human readable error messages." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, | ||||||
|  |     {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "distlib" | ||||||
|  | version = "0.3.8" | ||||||
|  | description = "Distribution utilities" | ||||||
|  | optional = false | ||||||
|  | python-versions = "*" | ||||||
|  | files = [ | ||||||
|  |     {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, | ||||||
|  |     {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "dj-database-url" | ||||||
|  | version = "2.1.0" | ||||||
|  | description = "Use Database URLs in your Django Application." | ||||||
|  | optional = false | ||||||
|  | python-versions = "*" | ||||||
|  | files = [ | ||||||
|  |     {file = "dj-database-url-2.1.0.tar.gz", hash = "sha256:f2042cefe1086e539c9da39fad5ad7f61173bf79665e69bf7e4de55fa88b135f"}, | ||||||
|  |     {file = "dj_database_url-2.1.0-py3-none-any.whl", hash = "sha256:04bc34b248d4c21aaa13e4ab419ae6575ef5f10f3df735ce7da97722caa356e0"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | Django = ">=3.2" | ||||||
|  | typing-extensions = ">=3.10.0.0" | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "dj-email-url" | ||||||
|  | version = "1.0.6" | ||||||
|  | description = "Use an URL to configure email backend settings in your Django Application." | ||||||
|  | optional = false | ||||||
|  | python-versions = "*" | ||||||
|  | files = [ | ||||||
|  |     {file = "dj-email-url-1.0.6.tar.gz", hash = "sha256:55ffe3329e48f54f8a75aa36ece08f365e09d61f8a209773ef09a1d4760e699a"}, | ||||||
|  |     {file = "dj_email_url-1.0.6-py2.py3-none-any.whl", hash = "sha256:cbd08327fbb08b104eac160fb4703f375532e4c0243eb230f5b960daee7a96db"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "django" | ||||||
|  | version = "5.0.4" | ||||||
|  | description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.10" | ||||||
|  | files = [ | ||||||
|  |     {file = "Django-5.0.4-py3-none-any.whl", hash = "sha256:916423499d75d62da7aa038d19aef23d23498d8df229775eb0a6309ee1013775"}, | ||||||
|  |     {file = "Django-5.0.4.tar.gz", hash = "sha256:4bd01a8c830bb77a8a3b0e7d8b25b887e536ad17a81ba2dce5476135c73312bd"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | asgiref = ">=3.7.0,<4" | ||||||
|  | sqlparse = ">=0.3.1" | ||||||
|  | tzdata = {version = "*", markers = "sys_platform == \"win32\""} | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | argon2 = ["argon2-cffi (>=19.1.0)"] | ||||||
|  | bcrypt = ["bcrypt"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "django-cache-url" | ||||||
|  | version = "3.4.5" | ||||||
|  | description = "Use Cache URLs in your Django application." | ||||||
|  | optional = false | ||||||
|  | python-versions = "*" | ||||||
|  | files = [ | ||||||
|  |     {file = "django-cache-url-3.4.5.tar.gz", hash = "sha256:eb9fb194717524348c95cad9905b70b647452741c1d9e481fac6d2125f0ad917"}, | ||||||
|  |     {file = "django_cache_url-3.4.5-py2.py3-none-any.whl", hash = "sha256:5f350759978483ab85dc0e3e17b3d53eed3394a28148f6bf0f53d11d0feb5b3c"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "djangorestframework" | ||||||
|  | version = "3.15.1" | ||||||
|  | description = "Web APIs for Django, made easy." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.6" | ||||||
|  | files = [ | ||||||
|  |     {file = "djangorestframework-3.15.1-py3-none-any.whl", hash = "sha256:3ccc0475bce968608cf30d07fb17d8e52d1d7fc8bfe779c905463200750cbca6"}, | ||||||
|  |     {file = "djangorestframework-3.15.1.tar.gz", hash = "sha256:f88fad74183dfc7144b2756d0d2ac716ea5b4c7c9840995ac3bfd8ec034333c1"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | django = ">=3.0" | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "environs" | ||||||
|  | version = "11.0.0" | ||||||
|  | description = "simplified environment variable parsing" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "environs-11.0.0-py3-none-any.whl", hash = "sha256:e0bcfd41c718c07a7db422f9109e490746450da38793fe4ee197f397b9343435"}, | ||||||
|  |     {file = "environs-11.0.0.tar.gz", hash = "sha256:069727a8f73d8ba8d033d3cd95c0da231d44f38f1da773bf076cef168d312ee8"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | dj-database-url = {version = "*", optional = true, markers = "extra == \"django\""} | ||||||
|  | dj-email-url = {version = "*", optional = true, markers = "extra == \"django\""} | ||||||
|  | django-cache-url = {version = "*", optional = true, markers = "extra == \"django\""} | ||||||
|  | marshmallow = ">=3.13.0" | ||||||
|  | python-dotenv = "*" | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | dev = ["environs[tests]", "pre-commit (>=3.5,<4.0)", "tox"] | ||||||
|  | django = ["dj-database-url", "dj-email-url", "django-cache-url"] | ||||||
|  | tests = ["environs[django]", "pytest"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "filelock" | ||||||
|  | version = "3.13.4" | ||||||
|  | description = "A platform independent file lock." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, | ||||||
|  |     {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] | ||||||
|  | testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] | ||||||
|  | typing = ["typing-extensions (>=4.8)"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "identify" | ||||||
|  | version = "2.5.35" | ||||||
|  | description = "File identification library for Python" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, | ||||||
|  |     {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | license = ["ukkonen"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "invoke" | ||||||
|  | version = "2.2.0" | ||||||
|  | description = "Pythonic task execution" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.6" | ||||||
|  | files = [ | ||||||
|  |     {file = "invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820"}, | ||||||
|  |     {file = "invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "marshmallow" | ||||||
|  | version = "3.21.1" | ||||||
|  | description = "A lightweight library for converting complex datatypes to and from native Python datatypes." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, | ||||||
|  |     {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | packaging = ">=17.0" | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] | ||||||
|  | docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] | ||||||
|  | tests = ["pytest", "pytz", "simplejson"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "mysqlclient" | ||||||
|  | version = "2.2.4" | ||||||
|  | description = "Python interface to MySQL" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "mysqlclient-2.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac44777eab0a66c14cb0d38965572f762e193ec2e5c0723bcd11319cc5b693c5"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:329e4eec086a2336fe3541f1ce095d87a6f169d1cc8ba7b04ac68bcb234c9711"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:e1ebe3f41d152d7cb7c265349fdb7f1eca86ccb0ca24a90036cde48e00ceb2ab"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-cp38-cp38-win_amd64.whl", hash = "sha256:3c318755e06df599338dad7625f884b8a71fcf322a9939ef78c9b3db93e1de7a"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-cp39-cp39-win_amd64.whl", hash = "sha256:9d4c015480c4a6b2b1602eccd9846103fc70606244788d04aa14b31c4bd1f0e2"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d43987bb9626096a302ca6ddcdd81feaeca65ced1d5fe892a6a66b808326aa54"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4e80dcad884dd6e14949ac6daf769123223a52a6805345608bf49cdaf7bc8b3a"}, | ||||||
|  |     {file = "mysqlclient-2.2.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9d3310295cb682232cadc28abd172f406c718b9ada41d2371259098ae37779d3"}, | ||||||
|  |     {file = "mysqlclient-2.2.4.tar.gz", hash = "sha256:33bc9fb3464e7d7c10b1eaf7336c5ff8f2a3d3b88bab432116ad2490beb3bf41"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "nodeenv" | ||||||
|  | version = "1.8.0" | ||||||
|  | description = "Node.js virtual environment builder" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" | ||||||
|  | files = [ | ||||||
|  |     {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, | ||||||
|  |     {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | setuptools = "*" | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "packaging" | ||||||
|  | version = "24.0" | ||||||
|  | description = "Core utilities for Python packages" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7" | ||||||
|  | files = [ | ||||||
|  |     {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, | ||||||
|  |     {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "platformdirs" | ||||||
|  | version = "4.2.0" | ||||||
|  | description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, | ||||||
|  |     {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] | ||||||
|  | test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "pre-commit" | ||||||
|  | version = "3.7.0" | ||||||
|  | description = "A framework for managing and maintaining multi-language pre-commit hooks." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.9" | ||||||
|  | files = [ | ||||||
|  |     {file = "pre_commit-3.7.0-py2.py3-none-any.whl", hash = "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab"}, | ||||||
|  |     {file = "pre_commit-3.7.0.tar.gz", hash = "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | cfgv = ">=2.0.0" | ||||||
|  | identify = ">=1.0.0" | ||||||
|  | nodeenv = ">=0.11.1" | ||||||
|  | pyyaml = ">=5.1" | ||||||
|  | virtualenv = ">=20.10.0" | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "python-dotenv" | ||||||
|  | version = "1.0.1" | ||||||
|  | description = "Read key-value pairs from a .env file and set them as environment variables" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, | ||||||
|  |     {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | cli = ["click (>=5.0)"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "pyyaml" | ||||||
|  | version = "6.0.1" | ||||||
|  | description = "YAML parser and emitter for Python" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.6" | ||||||
|  | files = [ | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, | ||||||
|  |     {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, | ||||||
|  |     {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "ruff" | ||||||
|  | version = "0.3.7" | ||||||
|  | description = "An extremely fast Python linter and code formatter, written in Rust." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7" | ||||||
|  | files = [ | ||||||
|  |     {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0e8377cccb2f07abd25e84fc5b2cbe48eeb0fea9f1719cad7caedb061d70e5ce"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:15a4d1cc1e64e556fa0d67bfd388fed416b7f3b26d5d1c3e7d192c897e39ba4b"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d28bdf3d7dc71dd46929fafeec98ba89b7c3550c3f0978e36389b5631b793663"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:379b67d4f49774ba679593b232dcd90d9e10f04d96e3c8ce4a28037ae473f7bb"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c060aea8ad5ef21cdfbbe05475ab5104ce7827b639a78dd55383a6e9895b7c51"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ebf8f615dde968272d70502c083ebf963b6781aacd3079081e03b32adfe4d58a"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d48098bd8f5c38897b03604f5428901b65e3c97d40b3952e38637b5404b739a2"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8a4fda219bf9024692b1bc68c9cff4b80507879ada8769dc7e985755d662ea"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c44e0149f1d8b48c4d5c33d88c677a4aa22fd09b1683d6a7ff55b816b5d074f"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3050ec0af72b709a62ecc2aca941b9cd479a7bf2b36cc4562f0033d688e44fa1"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a29cc38e4c1ab00da18a3f6777f8b50099d73326981bb7d182e54a9a21bb4ff7"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b15cc59c19edca917f51b1956637db47e200b0fc5e6e1878233d3a938384b0b"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e491045781b1e38b72c91247cf4634f040f8d0cb3e6d3d64d38dcf43616650b4"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-win32.whl", hash = "sha256:bc931de87593d64fad3a22e201e55ad76271f1d5bfc44e1a1887edd0903c7d9f"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-win_amd64.whl", hash = "sha256:5ef0e501e1e39f35e03c2acb1d1238c595b8bb36cf7a170e7c1df1b73da00e74"}, | ||||||
|  |     {file = "ruff-0.3.7-py3-none-win_arm64.whl", hash = "sha256:789e144f6dc7019d1f92a812891c645274ed08af6037d11fc65fcbc183b7d59f"}, | ||||||
|  |     {file = "ruff-0.3.7.tar.gz", hash = "sha256:d5c1aebee5162c2226784800ae031f660c350e7a3402c4d1f8ea4e97e232e3ba"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "setuptools" | ||||||
|  | version = "69.5.1" | ||||||
|  | description = "Easily download, build, install, upgrade, and uninstall Python packages" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, | ||||||
|  |     {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] | ||||||
|  | testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] | ||||||
|  | testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "sqlparse" | ||||||
|  | version = "0.5.0" | ||||||
|  | description = "A non-validating SQL parser." | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "sqlparse-0.5.0-py3-none-any.whl", hash = "sha256:c204494cd97479d0e39f28c93d46c0b2d5959c7b9ab904762ea6c7af211c8663"}, | ||||||
|  |     {file = "sqlparse-0.5.0.tar.gz", hash = "sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | dev = ["build", "hatch"] | ||||||
|  | doc = ["sphinx"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "typing-extensions" | ||||||
|  | version = "4.11.0" | ||||||
|  | description = "Backported and Experimental Type Hints for Python 3.8+" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.8" | ||||||
|  | files = [ | ||||||
|  |     {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, | ||||||
|  |     {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "tzdata" | ||||||
|  | version = "2024.1" | ||||||
|  | description = "Provider of IANA time zone data" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=2" | ||||||
|  | files = [ | ||||||
|  |     {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, | ||||||
|  |     {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "virtualenv" | ||||||
|  | version = "20.25.1" | ||||||
|  | description = "Virtual Python Environment builder" | ||||||
|  | optional = false | ||||||
|  | python-versions = ">=3.7" | ||||||
|  | files = [ | ||||||
|  |     {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, | ||||||
|  |     {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [package.dependencies] | ||||||
|  | distlib = ">=0.3.7,<1" | ||||||
|  | filelock = ">=3.12.2,<4" | ||||||
|  | platformdirs = ">=3.9.1,<5" | ||||||
|  |  | ||||||
|  | [package.extras] | ||||||
|  | docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] | ||||||
|  | test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] | ||||||
|  |  | ||||||
|  | [package.source] | ||||||
|  | type = "legacy" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple" | ||||||
|  | reference = "aliyun" | ||||||
|  |  | ||||||
|  | [metadata] | ||||||
|  | lock-version = "2.0" | ||||||
|  | python-versions = "^3.12" | ||||||
|  | content-hash = "3f835998771824a76656d128647cff83ed1863c255eeb60092fbb3b44e62b90b" | ||||||
							
								
								
									
										36
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | [tool.poetry] | ||||||
|  | name = "new-premier" | ||||||
|  | version = "0.1.0" | ||||||
|  | description = "" | ||||||
|  | authors = ["lixulun <lixulun@126.com>"] | ||||||
|  | readme = "README.md" | ||||||
|  | packages = [{ include = "premier", from = "src" }] | ||||||
|  |  | ||||||
|  | [tool.poetry.scripts] | ||||||
|  | manage = "premier.manage:main" | ||||||
|  |  | ||||||
|  | [tool.poetry.dependencies] | ||||||
|  | python = "^3.12" | ||||||
|  | django = "^5.0.4" | ||||||
|  | djangorestframework = "^3.15.1" | ||||||
|  | environs = { version = "^11.0.0", extras = ["django"] } | ||||||
|  | mysqlclient = "^2.2.4" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [[tool.poetry.source]] | ||||||
|  | name = "aliyun" | ||||||
|  | url = "http://mirrors.aliyun.com/pypi/simple/" | ||||||
|  | priority = "primary" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [tool.poetry.group.dev.dependencies] | ||||||
|  | ruff = "^0.3.7" | ||||||
|  | pre-commit = "^3.7.0" | ||||||
|  | invoke = "^2.2.0" | ||||||
|  |  | ||||||
|  | [tool.ruff] | ||||||
|  | lint.extend-select = ["I"] | ||||||
|  |  | ||||||
|  | [build-system] | ||||||
|  | requires = ["poetry-core"] | ||||||
|  | build-backend = "poetry.core.masonry.api" | ||||||
							
								
								
									
										0
									
								
								src/premier/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/premier/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										16
									
								
								src/premier/asgi.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/premier/asgi.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | """ | ||||||
|  | ASGI config for premier project. | ||||||
|  |  | ||||||
|  | It exposes the ASGI callable as a module-level variable named ``application``. | ||||||
|  |  | ||||||
|  | For more information on this file, see | ||||||
|  | https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | import os | ||||||
|  |  | ||||||
|  | from django.core.asgi import get_asgi_application | ||||||
|  |  | ||||||
|  | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "premier.settings") | ||||||
|  |  | ||||||
|  | application = get_asgi_application() | ||||||
							
								
								
									
										23
									
								
								src/premier/manage.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								src/premier/manage.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | #!/usr/bin/env python | ||||||
|  | """Django's command-line utility for administrative tasks.""" | ||||||
|  |  | ||||||
|  | import os | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def main(): | ||||||
|  |     """Run administrative tasks.""" | ||||||
|  |     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "premier.settings") | ||||||
|  |     try: | ||||||
|  |         from django.core.management import execute_from_command_line | ||||||
|  |     except ImportError as exc: | ||||||
|  |         raise ImportError( | ||||||
|  |             "Couldn't import Django. Are you sure it's installed and " | ||||||
|  |             "available on your PYTHONPATH environment variable? Did you " | ||||||
|  |             "forget to activate a virtual environment?" | ||||||
|  |         ) from exc | ||||||
|  |     execute_from_command_line(sys.argv) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
							
								
								
									
										0
									
								
								src/premier/origin/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/premier/origin/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								src/premier/origin/admin.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/premier/origin/admin.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | # Register your models here. | ||||||
							
								
								
									
										6
									
								
								src/premier/origin/apps.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/premier/origin/apps.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | from django.apps import AppConfig | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class OriginConfig(AppConfig): | ||||||
|  |     default_auto_field = "django.db.models.BigAutoField" | ||||||
|  |     name = "premier.origin" | ||||||
							
								
								
									
										0
									
								
								src/premier/origin/migrations/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/premier/origin/migrations/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										2991
									
								
								src/premier/origin/models.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2991
									
								
								src/premier/origin/models.py
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1
									
								
								src/premier/origin/tests.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/premier/origin/tests.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | # Create your tests here. | ||||||
							
								
								
									
										1
									
								
								src/premier/origin/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/premier/origin/views.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | # Create your views here. | ||||||
							
								
								
									
										124
									
								
								src/premier/settings.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								src/premier/settings.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | |||||||
|  | """ | ||||||
|  | Django settings for premier project. | ||||||
|  |  | ||||||
|  | Generated by 'django-admin startproject' using Django 5.0.4. | ||||||
|  |  | ||||||
|  | For more information on this file, see | ||||||
|  | https://docs.djangoproject.com/en/5.0/topics/settings/ | ||||||
|  |  | ||||||
|  | For the full list of settings and their values, see | ||||||
|  | https://docs.djangoproject.com/en/5.0/ref/settings/ | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | from pathlib import Path | ||||||
|  |  | ||||||
|  | from environs import Env | ||||||
|  |  | ||||||
|  | env = Env() | ||||||
|  | env.read_env() | ||||||
|  |  | ||||||
|  | # Build paths inside the project like this: BASE_DIR / 'subdir'. | ||||||
|  | BASE_DIR = Path(__file__).resolve().parent.parent.parent | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Quick-start development settings - unsuitable for production | ||||||
|  | # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ | ||||||
|  |  | ||||||
|  | # SECURITY WARNING: keep the secret key used in production secret! | ||||||
|  | SECRET_KEY = env.str("SECRET_KEY") | ||||||
|  |  | ||||||
|  | # SECURITY WARNING: don't run with debug turned on in production! | ||||||
|  | DEBUG = env.bool("DEBUG", default=False) | ||||||
|  |  | ||||||
|  | ALLOWED_HOSTS = [] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Application definition | ||||||
|  |  | ||||||
|  | INSTALLED_APPS = [ | ||||||
|  |     "premier.origin", | ||||||
|  |     "django.contrib.admin", | ||||||
|  |     "django.contrib.auth", | ||||||
|  |     "django.contrib.contenttypes", | ||||||
|  |     "django.contrib.sessions", | ||||||
|  |     "django.contrib.messages", | ||||||
|  |     "django.contrib.staticfiles", | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | MIDDLEWARE = [ | ||||||
|  |     "django.middleware.security.SecurityMiddleware", | ||||||
|  |     "django.contrib.sessions.middleware.SessionMiddleware", | ||||||
|  |     "django.middleware.common.CommonMiddleware", | ||||||
|  |     "django.middleware.csrf.CsrfViewMiddleware", | ||||||
|  |     "django.contrib.auth.middleware.AuthenticationMiddleware", | ||||||
|  |     "django.contrib.messages.middleware.MessageMiddleware", | ||||||
|  |     "django.middleware.clickjacking.XFrameOptionsMiddleware", | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | ROOT_URLCONF = "premier.urls" | ||||||
|  |  | ||||||
|  | TEMPLATES = [ | ||||||
|  |     { | ||||||
|  |         "BACKEND": "django.template.backends.django.DjangoTemplates", | ||||||
|  |         "DIRS": [], | ||||||
|  |         "APP_DIRS": True, | ||||||
|  |         "OPTIONS": { | ||||||
|  |             "context_processors": [ | ||||||
|  |                 "django.template.context_processors.debug", | ||||||
|  |                 "django.template.context_processors.request", | ||||||
|  |                 "django.contrib.auth.context_processors.auth", | ||||||
|  |                 "django.contrib.messages.context_processors.messages", | ||||||
|  |             ], | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | WSGI_APPLICATION = "premier.wsgi.application" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Database | ||||||
|  | # https://docs.djangoproject.com/en/5.0/ref/settings/#databases | ||||||
|  |  | ||||||
|  | DATABASES = {"default": env.dj_db_url("DATABASE_URL")} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Password validation | ||||||
|  | # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators | ||||||
|  |  | ||||||
|  | AUTH_PASSWORD_VALIDATORS = [ | ||||||
|  |     { | ||||||
|  |         "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", | ||||||
|  |     }, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Internationalization | ||||||
|  | # https://docs.djangoproject.com/en/5.0/topics/i18n/ | ||||||
|  |  | ||||||
|  | LANGUAGE_CODE = "zh-Hans" | ||||||
|  |  | ||||||
|  | TIME_ZONE = "Asia/Shanghai" | ||||||
|  |  | ||||||
|  | USE_I18N = True | ||||||
|  |  | ||||||
|  | USE_TZ = True | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Static files (CSS, JavaScript, Images) | ||||||
|  | # https://docs.djangoproject.com/en/5.0/howto/static-files/ | ||||||
|  |  | ||||||
|  | STATIC_URL = "static/" | ||||||
|  |  | ||||||
|  | # Default primary key field type | ||||||
|  | # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field | ||||||
|  |  | ||||||
|  | DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" | ||||||
							
								
								
									
										23
									
								
								src/premier/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/premier/urls.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | """ | ||||||
|  | URL configuration for premier project. | ||||||
|  |  | ||||||
|  | The `urlpatterns` list routes URLs to views. For more information please see: | ||||||
|  |     https://docs.djangoproject.com/en/5.0/topics/http/urls/ | ||||||
|  | Examples: | ||||||
|  | Function views | ||||||
|  |     1. Add an import:  from my_app import views | ||||||
|  |     2. Add a URL to urlpatterns:  path('', views.home, name='home') | ||||||
|  | Class-based views | ||||||
|  |     1. Add an import:  from other_app.views import Home | ||||||
|  |     2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home') | ||||||
|  | Including another URLconf | ||||||
|  |     1. Import the include() function: from django.urls import include, path | ||||||
|  |     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls')) | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | from django.contrib import admin | ||||||
|  | from django.urls import path | ||||||
|  |  | ||||||
|  | urlpatterns = [ | ||||||
|  |     path("admin/", admin.site.urls), | ||||||
|  | ] | ||||||
							
								
								
									
										16
									
								
								src/premier/wsgi.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/premier/wsgi.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | """ | ||||||
|  | WSGI config for premier project. | ||||||
|  |  | ||||||
|  | It exposes the WSGI callable as a module-level variable named ``application``. | ||||||
|  |  | ||||||
|  | For more information on this file, see | ||||||
|  | https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | import os | ||||||
|  |  | ||||||
|  | from django.core.wsgi import get_wsgi_application | ||||||
|  |  | ||||||
|  | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "premier.settings") | ||||||
|  |  | ||||||
|  | application = get_wsgi_application() | ||||||
							
								
								
									
										16
									
								
								tasks.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tasks.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | from invoke import task | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @task | ||||||
|  | def dev(c): | ||||||
|  |     c.run("manage runserver", pty=True) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @task | ||||||
|  | def style(c): | ||||||
|  |     c.run("ruff check . --fix && ruff format .", pty=True) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @task | ||||||
|  | def lint(c): | ||||||
|  |     c.run("ruff check .") | ||||||
							
								
								
									
										0
									
								
								tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
		Reference in New Issue
	
	Block a user